[[Prometheus]] and [[Graphite]] are similar in that they are both [[Time-series database]]s used for improving [[Observability]] across a system. They are both projects that are maintained by [[Grafana Labs]] ## Differences between Prometheus and Graphite ### Passive vs active Graphite is a passive monitoring system and database, while Prometheus actively scrapes and queries components for information. [^prom] Prometheus has a richer query language, [[PromQL]]. ### Graphite is simpler Graphite is significantly simpler. Prometheus does what Graphite does, and more: ![[Prometheus#Functions]] ### [[Pull-based monitoring]] vs [[Push-based monitoring]] Data collection via Graphite is passive: servers need to be configured to send data to Graphite. Graphite merely listens passively for data, and tools like fluentd, stats, collectd, etc. need to be configured to send data to it. [^logz] This passive listening is also called [[Push-based monitoring]]. By contrast, Prometheus is [[Prometheus#Pull-based data collection|pull-based]]. ### Storage Graphite creates one file per metric, whereas Prometheus uses a tag-based system to organize metrics. ### Aggregation Graphite is commonly aggregated across all instances, whereas Prometheus preserves all raw data. [^prom] ## When Graphite is better - When you need a solution that can store historical data ## When Prometheus is better - Pretty much any other case [^logz]: Berman, D. (2020). _Prometheus vs. Graphite: Which should you choose for time series or monitoring?_. Retrieved from https://logz.io/blog/prometheus-vs-graphite/ [^prom]: _Comparison to alternatives_. Prometheus. Retrieved from https://prometheus.io/docs/introduction/comparison/ . [[Comparison to Alternatives Prometheus|My highlights]]