
This article offers a comprehensive guide on setting up observability for Phoenix applications using the Grafana Stack (Loki, Mimir, and Tempo) in a development environment with Docker Compose. It covers the three pillars of observability (metrics, logs, and traces) and provides detailed instructions on configuring each component, including using PromEx for Prometheus-compatible metrics, OpenTelemetry for traces, and Promtail for log management. The article also emphasizes the importance of secure configurations and its extensibility to production environments.
Main Points
Three Pillars of Observability
Exploring the fundamental aspects of observability, the author emphasizes the necessity of metrics, logs, and traces for comprehensive application monitoring.
Setting up the Grafana Stack
The article provides a detailed guide on setting up the Grafana Stack using Docker Compose, including configurations and tips for Loki, Mimir, and Tempo.
Configuring Prometheus-compatible Metrics
Insights on configuring metrics for a Phoenix application using the OpenTelemetry Collector and PromEx, highlighting a Prometheus-compatible setup without using Prometheus itself.
Implementing Trace Data Collection
Guidance on implementing trace data collection within an Elixir project through OpenTelemetry and Tempo, covering setup and configuration steps.
Configuring Log Management
Instructions on configuring log rotation and using Promtail to ship logs to Grafana Loki, simplifying the management of application logs.
Insights
Three Pillars of Observability
Observability comprises metrics, logs, and traces, essential for monitoring applications.
Grafana Stack Setup
Using Docker Compose, setup includes Grafana Stack components: Loki, Mimir, and Tempo.
Prometheus-compatible Metrics without Prometheus
Metrics are gathered using PromEx and the OpenTelemetry Collector instead of Prometheus.
Security Considerations
The setup, especially concerning Prometheus, should not be used in production without secure configuration.
Extensibility to Production
The observability setup described can be extended to production environments with appropriate modifications.
Links
- PromEx
- Collector
- a High Availability demo of Mimir using Minio as object storage
- change some things
- here