Prometheus 简介
Prometheus是由SoundCloud开发的开源监控系统,通过Prometheus监控系统与其他组件相结合,可以实现对硬件资源、数据库以及软件应用的监控,同时还可实现监控数据的实时展示、监控数据的持久化存储以及监控告警信息的推送。2016年,Prometheus被Linux基金会旗下的原生云基金会纳入,成为旗下仅次于Kubernetes的第二大开源项目,目前在开源社区中相当活跃。
Prometheus 平台架构
Prometheus监控平台架构.png-
Prometheus Targets
Prometheus Targets 是被Prometheus监控的对象,它可以是服务器,可以是数据库,也可以是软件应用(JAVA、Python、Ruby)。
-
Prometheus Server
Prometheus Server由Go语言编写而成,采取“拉”(pull)的方式,获取多种Prometheus Targets的监控信息。Prometheus Server可以通过静态配置管理Prometheus Targets,也可以配合使用Service Discovery的方式动态管理Prometheus Targets,并从这些监控目标中获取数据。其次Prometheus Server需要对采集到的监控数据进行存储,Prometheus Server本身有一个时序型数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。最后Prometheus Server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。
-
Alert Manager
Alert Manager是Prometheus监控平台中的一个独立组件,主要用于接收Prometheus发送的告警信息;它支持丰富的告警通知渠道,常用的有企业微信、邮箱、钉钉;他还能对告警信息进行去重、降噪、分组,是一款功能齐全的告警通知系统。
-
PushGateway
多个Prometheus Targets的监控数据汇聚到PushGateway,然后Prometheus Server从PushGateway中拉取数据。但是由于以下几点弊端,对于PushGateway的应用需要慎重:
1、因为PushGateway中汇聚了多个节点的数据,如果PushGateway挂了,无法获取多个节点的监控数据;
2、Prometheus拉取状态“up”只是针对于PushGateway的,无法做到对每个节点有效。
3、即使删除了Prometheus Server,PushGateway依然在汇集监控数据,并暴露给Prometheus Server。
-
PrometheusWeb UI
Prometheus Server内置的Express Browser UI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。
第三方可视化工具Grafana常用于Prometheus监控数据的展示;它的优点主要有界面美观、板块布局智能、支持多数据源、兼容多浏览器等。
- Influx DB
Prometheus Server自带的时序型数据库默认只能对15天的监控数据进行存储。想要对监控数据进行持久化存储并查询的话,需要引入第三方时序型数据库,Influx DB是一个比较好的选择。Influx DB单机每秒可最多写入60万条数据,平均每秒可执行600次查询,足以支撑上千个节点监控数据的存储与分析。
Prometheus 优点
-
多维度的数据模型和灵活的查询方式
将监控指标关联多个tag,对监控数据进行任意维度的组合,并提供简单的PromQL查询方式,还提供HTTP查询接口,可以很方便地结合Grafana等GUI组件展示监控信息。
-
支持多种机制发现监控对象
可通过静态文件配置和动态发现机制发现监控对象,完成数据采集。Prometheus目前已经支持Kubernetes、ETCD、Consul等多种服务发现机制。
-
易于维护
对于运维人员来说,服务的部署和维护非常简单:服务可通过二进制文件直接启动,也可使用容器化部署的方式。
-
支持大规模集群监控
分层联邦部署允许Prometheus扩展到数十个数据中心和数百万个节点的环境。在这种用例中,联邦部署类似于一棵树,高级别的Prometheus Server从大量的低级别的Prometheus Server收集汇总的监控数据。
网友评论