the expert access to information stored in memory, and the information provides the answer. Intuition is nothing more and nothing less than recognition Friday, August 23, 13
elements in a new situation and to act in a manner that is appropriate to it. Good intuitive judgments come to mind with the same immediacy as “doggie!” Friday, August 23, 13
easier one instead, usually without noticing the substitution. Seeing an easy pattern gives us an easy decision about more complex problems, intuitively. Friday, August 23, 13
and easy access to recent events • Near real-time analytics and report generation • Easy to go back in time • Application growth doesn’t impact monitoring performance Expectations Friday, August 23, 13
Arbitrary data format (use what you want) • Dumb client, implementable in minutes • Wide choice of transports • Direct access to the data • Data persistency Expectations Friday, August 23, 13
intended for graph visualization • Websockets, get stuff pushed out • Re-broadcast configuration • Moving parts, implementable interfaces for everything Expectations Friday, August 23, 13
Alerting rules • Persistency to the database of your choice • Pluggable processing backends • Self-declaring services (IService with start/stop/pause) Expectations Friday, August 23, 13
pushes to downstream • Write your own collector, implement your own client and off you go • Choose transport of your preference, tune transport reliability • Leave space for backpressure (given your protocol is reliable) to have some flow control Collector Friday, August 23, 13
everything itself and returns an output • Pipelining uses several interchangeable processing units • 1 person for black-box • 3 people for pipelining Processing Unit Friday, August 23, 13
sum of factorials of even and odd numbers separately • For pipeline • 1 person is a splitter • 2 people compute factorials • 2 people compute sums Processing Unit Friday, August 23, 13
• Transformer - applies `transform-fn` and rebroadcasts them • Aggregator - initialized with `initial-state`, applies `aggregate- fn` to current state and tuple. • Rebroadcast - distributes them to several types • Splitter - splits stream in parts based on `split-fn` • Rollup - timed window, that accumulates entries until it times out, then retransmits • Buffer - buffer with given `capacity`, transmits & resets buffer on overflow Processing Unit Friday, August 23, 13
Stateful • Stateless • And have one of properties: • Get from one - dispatch to many • Get from many - dispatch to one • Predicate-based dispatch • No further dispatch Processing Unit Friday, August 23, 13
down to just 4 values (sometimes only one of them actually matters) • Event-type, key, value and timestamp • Event type is used for high-level partitioning • Key is used for visual and logical grouping • Value is used in all possible aggregates • Value may be simple or composite • Timestamp is used to figure out when the heck that thing actually happened Processing Unit Friday, August 23, 13
• Events are split by triplet (application/env/event type) • Every event can have multiple metrics • Metric has a key and value • And filter • And several rollups • Rollup has an aggregate function triggered on overflow • And ring-buffer storing last N values • And visualization (area, line, barchart) attached Processing Unit Friday, August 23, 13
yield 10 different metrics from single payload, why split them to 10 different metrics on a client? • Moving responsibility from client to server makes everything way more flexible. Processing Unit Friday, August 23, 13
not enough? • Scale at any preferred point • Add more collectors, make each collector listen to certain event type • If collection is not a bottleneck, use downstreams • Having a processing pipeline allows you to scatter at any point in time Processing Unit Friday, August 23, 13
to pipe message through preferred client/ collector to the different machine • Really, anything can go to the separate machine • If it’s about processing part, you can split down even further Processing Unit Friday, August 23, 13
on the same box to land on the same box • Partition key? Well, anything can be a partition key, in the end: part of the identification triplet, tag, or even metric value Processing Unit Friday, August 23, 13
is nothing complicated • Stateful stream processing opens up great ways to use • Local Outlier Factor algorithm • SVM (support vector machines) Anomalies Friday, August 23, 13
basic statistical functions • Most of time, they provide an insight to most recent values, without giving you power to customize outputs • Go to Coursera, take a couple of Machine-Learning and Statstic courses • Discover that all that fancy math is actually easy to understand and provides amazing value Statistics Friday, August 23, 13
obvious • Detect trends in data, where are you going right now • Find correlations between different data points at same point in time Statistics Friday, August 23, 13
can’t we figure out alerts? • Trends: something is changing • Ok, but we’ve seen that trend before • Silence the trend, increase threshold • Get false-negatives Alerting Friday, August 23, 13
true ones) • Don’t look for an out-of box solution, too many variables involved • Expect false-positives during system evolvement • Figure out what causes them • Don’t increase thresholds, introduce correlations instead • Time-based correlations • Variation and distribution • Correlation between seemingly independent values Alerting Friday, August 23, 13
• When using interpolation, also use gap detection for sparse discrete data • Always put labels on axes • Always put horizontal and vertical rules along labels for recognition • Use box charts (also, stacked ones) when it’s important to visually compare quantities Visualization Friday, August 23, 13