Prometheus
Prometheus
GitHub 仓库:GitHub - prometheus/prometheus: The Prometheus monitoring system and time series database.
系统架构图:
本质上,Prometheus 首先是一个指标的时序数据存储引擎,提供了灵活的查询语句,然后围绕这个数据库提供跟指标相关的功能,比如指标接入、监控报警、Web 页面展示等。
指标接入
指标接入方面,提供两种方式,服务发现(service discovery)或者 静态配置(static configuration),
静态配置很简单,Prometheus 提供了 scrape_configs
配置如何从 endpoint 抽取监控数据,通常只需要修改 static_configs
中的 targets 配置为 目标应用的 的 endpoint 地址即可。
更多配置信息请参考 Prometheus 配置文档。
以 Prometheus 接入 TDengine 为例,修改scrape_configs
配置如下即可接入 TDengine 的指标,Prometheus 会以给定的时间间隔从配置的目标收集指标。
|
|
优缺点
Prometheus 的优点是其实际已经为指标监控领域的标准,已经成为了默认的指标数据存储数据库,一个应用只要是提供指标监控功能,就一定会提供符合 Prometheus 格式要求的 endpoint 指标采集接口,这也就导致了 Prometheus 的适配面很广,市面上的应用都能向 Prometheus 提供指标数据。
但是 Prometheus 的体积很大,性能很差,跟一些后起之秀相比,在性能方面没有优势,比如跟Netdata 的性能对比,作为一个监控服务,本身就不应该占用太多的服务器性能。
而且 Netdata 支持从符合 Prometheus 格式要求的 endpoint 指标采集接口中收集数据,而且还提供了默认了一个默认的采集列表,以实现不需要手动配置就可以自动采集指标,如果你想采集的应用不在这个列表里,你可以手动添加进来。
参考博客:prometheus-endpoint
而且 Netdata 也可以将数据导出到 Prometheus 或者其他的时序库。
等等这些因素,都导致了现在的指标监控方案一般都是,netdata 采集数据,并导出到 prometheus 中,使用 prometheus 充当数据库缓存时序数据。使用 grafana 抓取 prometheus 中时序数据进行可视化。