一、Promethuse是什么
Prometheus是最初在SoundCloud上构建的开源监控系统。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立于任何公司进行维护。Prometheus 在2016年加入了 Cloud Native Computing Foundation,这是继Kubernetes之后的第二个托管项目。
二、Promethuse能做什么
promethuse能在近几年被广泛使用也是因为云原生架构的流行,很多互联网公司开始了由传统业务向云上迁移的步伐,做微服务架构的转型,而目前K8S作为主流的容器编排系统,已经成为行业的一个事实标准,Promethuse和K8S的高度契合使之成为各大企业选择监控系统的首选。Promethuse其主要应用范围还是在服务资源本身的监控,如K8S集群的磁盘、IO、CPU负载、TPS、QPS等指标的监控,以及对K8S管理的Pod资源的相关负载指标监控,能够定义相应的告警规则,并及时通知到相应的责任人进行应急处理。
Promethuse整体系统架构图
三、Promethuse相关组件
- exporters
端点负责采集数据转换为promethuse-server可以识别的数据格式并暴露出http接口。
- Pushgateway
有一些不支持exporter的监控目标,可以先将数据写入Pushgateway网关。然后Promethuse-server可以向exporter或Pushgateway中拉取采集的指标数据,这个过程由Promethuse-server中的Retrieval完成。
- TSDB
TSDB(time serial database) 时序数据库,Promethuse-server将采集到的数据存入到时序数据库中,时序数据库是一种内存数据库,拥有极高的查询和存储效率,并由相关的数据持久化机制将数据同步到磁盘上,即保证了服务的高可用又保证了数据的可靠性。
- Alertmanager
我们可以在Promethuse-server设置一些关键指标的告警规则,当指标值触发告警规则后Promethuse-server会向Alertmanager推送对应的告警信息,而Alertmanager模块支持多种通知渠道:邮件、各种社交软件等。可以在线上资源异常或者告警的时候能第一时间收到通知并进行处理。
- PromQL
PromQL是Promethuse-server为了方便快速查询各个监控指标所定义的一种查询语言,类似于Mysql中的SQL查询,通过PromQL能够快速的得到想要的指标数据。
- Grafana
promethuse支持各种可视化UI对监控指标的查询,提供自定义监控报表的生成。
四、Promethuse适用场景
前文已经提到promethuse的适用场景主要用于资源运行环境指标相关的一些监控,更偏向于硬件指标监控,而在微服务架构中,除了对资源运行环境的监控外,还会需要对服务本身的性能进行监控,包括一次请求处理在整个微服务架构中的调用链关系,每个调用过程中的子节点的性能消耗,帮助定位和追踪线上发生业务异常时候的完成调用上下文,能够快速定位到整个请求调用链中响应较慢的环节并进行单独优化。其中比较流行的开源APM(Application Performance Management)系统有Skywalking等等,其对整体的业务代码没有侵入性,通过使用agent和插件模式进行服务监控指标的采集。