plan for capacity. • To catch the issue early in infrastructure/Applications. • To compli SLA’s promised to customers. • To know what part of infrastructure/application broken rather customer telling letting us know.
• Real Time metrics so that we know when the problem occurs. • Real Time alerting if something fails in system. • Sending out metrics to Enterprise Monitoring Solutions is costly. • Informative Dashboards across all environment?
Aggregator” • A monitoring tool which aggregates events from servers and applications running on those servers. • Riemann uses powerful stream processing language written in Clojure to aggregates the events.
Can process millions events per second. • Events and Events Stream processing, which makes its highly adaptable/ideal for dynamic and Distributed Systems. • Riemann configuration file is Clojure Program. • Riemann is Highly Configurable.
alerting. • Can monitor anything. • Comes with its own Instrumentation to measures own performance. • Can send alerts to email, chats and SMS and many more.. • Can get connected to backend time series databases InfluxDB and Graphite to store metrics for historical data.
• Riemann receives events and process them • Events are structs (records) which Riemann treats as map. (immutable) • Events fields are referred by Keywords in config like :host, :service, :tags. • Apart from the standard fields, custom fields can also be sent in the event.
define. • Streams are defined in stream section of the Riemann config file. • Streams can have child stream. • Events get passed to the streams for aggregation, modification and alerting. • Riemann config can have as many streams. • Riemann comes with a Powerful Stream Processing Language.
tracked by Riemann. • Each event is uniquely indexed by its host and service. The index just keeps track of the most recent event for a given (host, service) pair. • Index can have TTL (time to leave). • Events in Index expires after the TTL.
host and service, and sends them all as a vector to its children. We can map that vector of events to a single event--the one with the largest metric--using folds/maximum. Then we just set the service and host, since this event pertains to the system as a whole.