Prometheus

Posted on Thu, Oct 20, 2022 learning

公司用到了prometheus(普罗米修斯),用来监控服务器、docker等容器。

PromQL:针对Prometheus多维数据模型的一种灵活查询语言 。

核心组件:

Prometheus Server从Exporters拉取数据,并将监控数据按照时间序列存储在磁盘中(Prometheus Server本身也是个时序数据库)。并支持通过PromQL和通过API Client对数据进行查询,还支持通过PromQL和通过API Client对数据进行查询;还负责通过服务发现或服务配置方式来识别监控目标。

Exporters,用于从监控目标采集数据,并向Prometheus Server提供收集数据的端口。是一个广义的概念,只要可以支持Server获取监控数据,就可以称为Exporter。具体分为两类:直接采集:此类Exporter直接内置了对Prometheus监控的支持,如cAdvisor, Kubernetes, Etcd等;间接采集:被监控目标不支持直接采集,需要集成专门的类库,比如Mysql Exporter, Consule Exporter, ASP.NET Core Exporter等。

PushGateway,Prometheus采用Pull模式采集数据,Server会定期调用Exporter提供的端口;但对于定期运行的Job类应用来说,并不是总能采集到数据,此外也可能受网络的限制,Server无法访问到Exporter,这些情况下,可以使用PushGateway进行数据的中转,由Exporter采用Push模式主动将数据发送到PushGateway,再由Server从PushGateway拉取数据。

AlertManager,Prometheus Server支持基于PromQL创建告警规则,如果规则满足,会产生一条告警,告警的后续处理流程由AlertManager来处理,它内置支持邮件、Slack等方式,也可以通过WebHook支持更多的自定义方式。