什么是prometheus?

网友投稿 1010 2022-10-04

什么是prometheus?

什么是prometheus?

  导航:这里主要是列出一个prometheus一些系统的学习过程,最后按照章节顺序查看,由于写作该文档经历了不同时期,所以在文中有时出现

的云环境不统一,但是学习具体使用方法即可,在最后的篇章,有一个完整的腾讯云的实战案例。

  1.​​什么是prometheus?​

  2.​​Prometheus安装​

  3.​​Prometheus的Exporter详解​

  4.​​Prometheus的PromQL​

  5.​​Prometheus告警处理​

  6.​​Prometheus的集群与高可用​

  7.​​Prometheus服务发现​

  8.​​kube-state-metrics 和 metrics-server​

  9.​​监控kubernetes集群的方式​

  10.​​prometheus operator​

  11.​​Prometheus实战之联邦+高可用+持久​

  12.​​Prometheus实战之配置汇总​

  13.​​Grafana简单用法​

  14.​​Grafana SQL汇总​

  15.​​prometheus SQL汇总​

  参考:

  ​​data-id="p838747a-TkdE4vFh">  ​​data-id="p838747a-7vLgQGOJ">  ​​data-id="p838747a-riQyjVqg">  ​​data-id="p838747a-Xu4zmn4E">  ​​SoundCloud 开源监控告警解决方案,从 2012 年开始编写代码,再到 2015 年 github 上开源以来,已经吸引了 9k+ 关注,以及很多大公司的使用;2016 年 Prometheus 成为继 k8s 后,第二名 CNCF(​​Cloud Native Computing Foundation​​) 成员。

作为新一代开源解决方案,很多理念与 Google SRE 运维之道不谋而合。

1.1 主要功能

多维​​数据模型​​(时序由 metric 名字和 k/v 的 labels 构成)。灵活的查询语句(​​PromQL​​)。无依赖存储,支持 local 和 remote 不同模型。采用 协议,使用 pull 模式,拉取数据,简单易懂。监控目标,可以采用服务发现或静态配置的方式。支持多种统计数据模型,图形化友好。

1.2 核心组件

Prometheus Server

Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。 Prometheus Server可以通过静态配置管理监控目标,也可以配合使用Service Discovery的方式动态管理监控目标,并从这些监控目标中获取数据。其次Prometheus Server需要对采集到的监控数据进行存储,Prometheus Server本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。最后Prometheus Server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。

Prometheus Server内置的Express Browser UI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。

Prometheus Server的联邦集群能力可以使其从其他的Prometheus Server实例中获取数据,因此在大规模监控的情况下,可以通过联邦集群以及功能分区的方式对Prometheus Server进行扩展。

Exporters

Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。

一般来说可以将Exporter分为2类:

直接采集:这一类Exporter直接内置了对Prometheus监控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接内置了用于向Prometheus暴露监控数据的端点。

间接采集:间接采集,原有监控目标并不直接支持Prometheus,因此我们需要通过Prometheus提供的Client Library编写该监控目标的监控采集程序。例如: Mysql Exporter,JMX Exporter,Consul Exporter等。

AlertManager

在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。在AlertManager中我们可以与邮件,Slack等等内置的通知方式进行集成,也可以通过Webhook自定义告警处理方式。AlertManager即Prometheus体系中的告警处理中心。

PushGateway

由于Prometheus数据采集基于Pull模型进行设计,因此在网络环境的配置上必须要让Prometheus Server能够直接与Exporter进行通信。 当这种网络需求无法直接满足时,就可以利用PushGateway来进行中转。可以通过PushGateway将内部网络的监控数据主动Push到Gateway当中。而Prometheus Server则可以采用同样Pull的方式从PushGateway中获取到监控数据。

1.3 基础架构图

从这个架构图,也可以看出 Prometheus 的主要模块包含, Server, Exporters, Pushgateway, PromQL, Alertmanager, WebUI 等。

它大致使用逻辑是这样:

1.Prometheus server 定期从静态配置的 targets 或者服务发现的 targets 拉取数据。

2.当新拉取的数据大于配置内存缓存区的时候,Prometheus 会将数据持久化到磁盘(如果使用 remote storage 将持久化到云端)。

3.Prometheus 可以配置 rules,然后定时查询数据,当条件触发的时候,会将 alert 推送到配置的 Alertmanager。

4.Alertmanager 收到警告的时候,可以根据配置,聚合,去重,降噪,最后发送警告。

5.可以使用 API, Prometheus Console 或者 Grafana 查询和聚合数据。

注意

Prometheus 的数据是基于时序的 float64 的值,如果你的数据值有更多类型,无法满足。Prometheus 不适合做审计计费,因为它的数据是按一定时间采集的,关注的更多是系统的运行瞬时状态以及趋势,即使有少量数据没有采集也能容忍,但是审计计费需要记录每个请求,并且数据长期存储,这个 Prometheus 无法满足,可能需要采用专门的审计系统。

2.为什么选择 Prometheus

在前言中,简单介绍了我们选择 Prometheus 的理由,以及使用后给我们带来的好处。

在这里主要和其他监控方案对比,方便大家更好的了解 Prometheus。

2.1 Prometheus vs Zabbix

Zabbix 使用的是 C 和 PHP, Prometheus 使用 Golang, 整体而言 Prometheus 运行速度更快一点。Zabbix 属于传统主机监控,主要用于物理主机,交换机,网络等监控,Prometheus 不仅适用主机监控,还适用于 Cloud, SaaS, Openstack,Container 监控。Zabbix 在传统主机监控方面,有更丰富的插件。Zabbix 可以在 WebGui 中配置很多事情,但是 Prometheus 需要手动修改文件配置。

2.2 Prometheus vs Graphite

​​Graphite​​功能较少,它专注于两件事,存储时序数据, 可视化数据,其他功能需要安装相关插件,而 Prometheus 属于一站式,提供告警和趋势分析的常见功能,它提供更强的数据存储和查询能力。在水平扩展方案以及数据存储周期上,Graphite 做的更好。

2.3 Prometheus vs InfluxDB

​​InfluxDB​​是一个开源的时序数据库,主要用于存储数据,如果想搭建监控告警系统, 需要依赖其他系统。InfluxDB在存储水平扩展以及高可用方面做的更好, 毕竟核心是数据库。

2.4 Prometheus vs OpenTSDB

​​OpenTSDB​​是一个分布式时序数据库,它依赖 Hadoop 和 HBase,能存储更长久数据, 如果你系统已经运行了 Hadoop 和 HBase, 它是个不错的选择。如果想搭建监控告警系统,OpenTSDB 需要依赖其他系统。

2.5 Prometheus vs Nagios

​​Nagios​​数据不支持自定义 Labels, 不支持查询,告警也不支持去噪,分组, 没有数据存储,如果想查询历史状态,需要安装插件。Nagios 是上世纪 90 年代的监控系统,比较适合小集群或静态系统的监控,显然 Nagios 太古老了,很多特性都没有,相比之下Prometheus 要优秀很多。

2.6 Prometheus vs Sensu

​​Sensu​​广义上讲是 Nagios 的升级版本,它解决了很多 Nagios 的问题,如果你对 Nagios 很熟悉,使用 Sensu 是个不错的选择。Sensu 依赖 RabbitMQ 和 Redis,数据存储上扩展性更好。

2.7 总结

Prometheus属于一站式监控告警平台,依赖少,功能齐全。Prometheus支持对云或容器的监控,其他系统主要对主机监控。Prometheus数据查询语句表现力更强大,内置更强大的统计函数。Prometheus在数据存储扩展性以及持久性上没有 InfluxDB,OpenTSDB,Sensu 好。

作者:​​小家电维修​​

转世燕还故榻,为你衔来二月的花。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小程序popupwindow弹出框的实现代码
下一篇:小程序中canvas的拖拽功能详解(canvas 拖拽)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~