【Techo Day腾讯技术开放日】图解云原生监控系统 Prometheus 的原理

浅析监控系统 Prometheus 的原理

你好,我是悟空。

最近公司正在往云原生进行转型,想拥有一套适合当前项目的监控系统,基于这个出发点,我们团队考虑使用 Prometheus 和 Grafana 组件。本篇将会以图解的方式剖析 Prometheus 的原理。

本文主要内容如下:

一、Prometheus 是什么?

ELK Stack 日志收集和检索平台想必大家应该比较熟悉,Elasticsearch + Filebeat + Logstash + Kibana。

  • Endpoint:端点,可以抓取的指标来源。
  • Target:目标,包含了端点地址,端口的状态等信息。

下面是 Prometheus 抓取目标的配置:

  - job\\_name: prometheus

    static\\_configs:

      - targets: ['localhost:9090']

        labels:

          instance: prometheus
  • Job:代表了一组相同角色或功能的目标。
  • Instance:在当前主机上运行的 exporter 监控程序被称为一个实例。

抓取到目标的指标数据后,会生成时间序列数据,然后存储在 Prometheus 服务器本地,也可以设置从服务器发送数据到外部存储器或其他时间序列数据库。

三、Prometheus 采集方式

Prometheus 抓取数据可以通过**直接采集**和**间接采集**两种。

https://prometheus.io/docs/instrumenting/exporters/

五、PromQL

PromQL 看名字很 SQL 很像,它其实是另外一种查询语言。

Prometheus提供了一种功能强大的表达式语言 PromQL(Prometheus Query Language)。PromQL允许用户实时选择和汇聚时间序列数据,是 Prometheus 自己开发的数据查询 DSL(领域特定语言),使用这个查询语言能够进行各种聚合、分析和计算,使管理员能够根据指标更好地了解系统性能。

如下图所示,PromQL 内置在 Prometheus 中。通过 Prometheus WebUI、Grafana 和 API Clients 来进行查询。

下面是 Prometheus WebUI 界面:

下面是 Grafana 的界面:

六、监控告警

发送告警

Prometheus 告警规则触发后,告警规则被触发后,才会将信息发送给独立组件 Alertmanager 上,经过对告警的处理后,最终通过接收器(如Email)通知用户。(告警规则是在 Prometheus server 端定义的)

告警的原理图
  • 在 Prometheus 监控体系中,指标的采集存储与告警是分开的。
  • 我们使用 Prometheus server 采集各类监控指标,然后基于PromQL对这些指标定义阈值告警规则(Rules)。
  • Prometheus server对告警规则周期性地进行计算,如果满足告警触发条件,便生成一条告警信息,并将其推送到Alertmanager组件。
  • 收到告警信息后,Alertmanager会处理告警,进行分组(grouping)并将它们路由(routing)到正确的接收器(receiver),如Email、钉钉等,最终把异常事件的通知发送给接收者。

七、总结

通过图解的方式,分别介绍了 Prometheus 的优势和劣势、指标收集、采集方式、Exporter、PromQL、监控告警,希望能给大家云原生的监控之路上带来一些启发~

本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
【Techo Day腾讯技术开放日】图解云原生监控系统 Prometheus 的原理
最近公司正在往云原生进行转型,想拥有一套适合当前项目的监控系统,基于这个出发点,我们团队考虑使用 Prometheus 和 Grafana 组件。本篇将会以图解...
<<上一篇
下一篇>>