乘风原创程序

  • 一文秒懂Prometheus 介绍及工作原理
  • 2021/1/24 12:22:07
  • 1. prometheus 介绍

    prometheus是一套开源的系统监控报警框,相比nagios或者zabbix拥有如下优点

    1.1 易管理性

    prometheus: prometheus核心部分只有一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。

    1.2 业务数据相关性

    prometheus:监控服务的运行状态,基于prometheus丰富的client库,用户可以轻松的在应用程序中添加对prometheus的支持,从而让用户可以获取服务和应用内部真正的运行状态。

    1.3 高效:

    单一prometheus可以处理数以百万的监控指标;每秒处理数十万的数据点。

    1.4 易于伸缩:

    通过使用功能分区(sharing)+联邦集群(federation)可以对prometheus进行扩展,形成一个逻辑集群;prometheus提供多种语言的客户端sdk,这些sdk可以快速让应用程序纳入到prometheus的监控当中。

    1.5 良好的可视化:

    prometheus除了自带有prometheus ui,grafana可视化工具也提供了完整的proetheus支持

    2. prometheus 框架图

    在这里插入图片描述

    3. prometheus 组件介绍

    3.1 prometheus server:

    prometheus sever是prometheus组件中的核心部分,负责实现对监控数据的获取,存储及查询。prometheus server可以通过静态配置管理监控目标,也可以配合使用service discovery的方式动态管理监控目标,并从这些监控目标中获取数据。其次prometheus sever需要对采集到的数据进行存储,prometheus server本身就是一个实时数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。prometheus server对外提供了自定义的promql,实现对数据的查询以及分析。另外prometheus server的联邦集群能力可以使其从其他的prometheus server实例中获取数据。

    3.2 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等。

    3.3 alertmanager:

    在prometheus server中支持基于prom ql创建告警规则,如果满足prom ql定义的规则,则会产生一条告警。在alertmanager从 prometheus server 端接收到 alerts后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,webhook 等。

    3.4 pushgateway:

    prometheus数据采集基于prometheus server从exporter pull数据,因此当网络环境不允许prometheus server和exporter进行通信时,可以使用pushgateway来进行中转。通过pushgateway将内部网络的监控数据主动push到gateway中,prometheus server采用针对exporter同样的方式,将监控数据从pushgateway pull到prometheus server。

    4. prometheus的工作流:

    4.1 prometheus server定期从配置好的jobs或者exporters中拉取metrics,或者接收来自 pushgateway发送过来的metrics,或者从其它的prometheus server中拉metrics。

    4.2 prometheus server在本地存储收集到的metrics,并运行定义好的alerts.rules,记录新的时间序列或者向alert manager推送警报。

    4.3 alertmanager根据配置文件,对接收到的警报进行处理,发出告警。

    4.4 在图形界面中,可视化采集数据。

    到此这篇关于一文秒懂prometheus 介绍及工作原理的文章就介绍到这了,更多相关prometheus 介绍及工作原理内容请搜索本教程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持本教程网!