prometheus是开源的系统监控及告警系统,很多企业、互联网公司应用prometheus,搭配可视化的grafana,实现对系统的全面度量。
prometheus应用的场景:
1)对于数据准确率要求不高,可以粗略反映监控数据走势的场景,尤其是有rate等聚合函数需要有推断、以及大范围查询时采样点忽略等情况。
2)不适合做日志、链路方面的监控。
3)适合做短时间时序监控,不适于超过一个月的数据监控,也不适合做大量历史数据存储,否则要考虑其他存储方式。
架构
1)Prometheus Server服务核心,包含三个模块:数据抓取、数据存储、数据查询。
2)Job/Exporter 数据采集器,例如常见的Node Exporter负责采集CPU、内存、磁盘等数据信息
3)Pushgateway 网关,prometheus Server通过拉模式获取数据,如果有网络拓扑的限制,prometheus Server无法直接访问应用系统,则需要应用系统将监控数据推送到Pushgateway网关,prometheus Server从网关拉取数据。
4)Service Discovery,动态设置监控目标target,即从哪些ip:port 抓取数据。
5)Alertmanager 告警管理,可与第三方告警方式结合,例如钉钉、邮件等。
6)Grafana、API client等编写promQL语句,获取时序数据。
上面有个非常重要的信息,prometheus采取拉模式(Pull)获取Metrics数据。拉模式的好处是比较明显的,对于代码的入侵比较小。缺点是拉取有时间间隔,及时性不如推模式(Push)精度高。
参考:《prometheus云原生监控》