Pull based, language agnostic exception aggregator for microservice environments.
Periskop scales well with the number of exceptions and application instances:
- Exceptions are pre-aggregated in client libraries and stored efficiently in memory, while keeping a sample of concrete occurrences for inspection.
- Exceptions are scraped and aggregated across instances by the server component.
- More application instances result in longer refresh cycles but the memory usage remains constant.
A UI component is provided for convenience.
See our talk “Periskop: Exception Monitoring at Scale” at FOSDEM here.
Related blog posts at SoundCloud’s developers blog:
Scraping
Errors are scraped and aggregated using a configured endpoint from each of the instances discovered via service discovery.
Periskop supports all service discovery mechanisms supported by Prometheus. The configuration format for service discovery mirrors the one from Prometheus. See Prometheus’s official documentation for reference.
A full example of service configuration for Periskop can be found in the sample configuration.
Format
The format for scraped errors is defined in a proto3 IDL. Currently the only supported protocol is snake_cased JSON over HTTP (example).
UI
The UI allows navigating and inspecting exceptions as they occur.
Pushgateway
See periskop-pushgateway if you want to use Periskop as push based metric system.