当前位置:   article > 正文

Prometheus——监控平台

prometheus

目录

前言

一、Promtheus概述

1.Promtheus定义

2.Prometheus功能

2.1多维数据模型

2.2数据采集和存储

2.3指标类型

2.4数据查询

2.5警报和通知

2.6云原生支持

3.Prometheus优势

3.1易于管理

3.2强大的查询语言 PromQL

3.3高效

3.4可扩展

3.5易于集成

3.6可视化

4.Prometheus基础架构

4.1Prometheus Server

4.2Client Library

4.3Push Gateway

4.4Exporters

4.5Alertmanager

4.6Service Discovery

4.7Grafana

4.8Prometheus数据流向

5.Prometheus工作原理

5.1Prometheus工作模式

5.2Prometheus工作流程

二、运维监控平台设计思路

三、Prometheus监控体系

1.系统层监控

2.中间件及基础设施类监控

2.1Redis监控内容

3.应用层监控

3.1监控的分类

4.业务层监控

四、Prometheus时间序列数据

1.数据来源

2.收集数据

3.Prometheus——获取方式

五、Prometheus局限性

六、Prometheus安装

1.环境准备

2.下载

3.配置

4.后端存储配置

4.1安装 

 4.2验证

4.3配置Prometheus集成infuxdb

5.使用Prometheus实现系统监控

5.1安装Node_Exporter

5.2修改Prometheus配置文件

5.3验证

七、使用 Prometheus + Grafana 实现可视化界面

1.安装Grafana

2.配置 Grafana 的 Web 界面

八、总结

1.Zabbix 和 Prometheus 的区别

2.Prometheus如何收集k8s服务的信息

3.如何防止告警信息轰炸

4.Prometheus监控对象

5.常见的时间序列数据库


前言

zabbix是传统的监控系统,出现比云原生早,使用的是SQL关系型数据库;而Prometheus基于谷歌的borgemon使用go语言开发,使用TSDB数据库,所以支持云原生。zabbix最新发布的6.0版本,知道自己处于生死存亡时刻,也支持了Prometheus使用的TSDB数据库。

一、Promtheus概述

1.Promtheus定义

Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,由 SoundCloud 公司开发,广泛用于云原生环境和容器化应用的监控和性能分析。其提供了通用的数据模型和快捷数据采集、存储和查询接口。它的核心组件Prometheus server会定期从静态配置的监控目标或者基于服务发现自动配置的自标中进行拉取数据,当新拉取到的数据大于配置的内存缓存区时,数据就会持久化到存储设备当中。

Prometheus 基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供 HTTP 接口就可以接入监控系统,不需要任何 SDK 或者其他的集成过程。这样做非常适合虚拟化环境比如 VM 或者 Docker 。

Prometheus 应该是为数不多的适合 Docker、Mesos、Kubernetes 环境的监控系统之一。

每个被监控的主机都可以通过专用的 exporter 程序提供输出监控数据的接口,它会在目标处收集监控数据,并暴露出一个HTTP接口供Prometheus server查询,Prometheus通过基于HTTP的pull的方式来周期性的采集数据。

如果存在告警规则,则抓取到数据之后会根据规则进行计算,满足告警条件则会生成告警,并发送到Alertmanager完成告警的汇总和分发

当被监控的目标有主动推送数据的需求时,可以以Pushgateway组件进行接收并临时存储数据,然后等待Prometheus Server完成数据的采集。

任何被监控的目标都需要事先纳入到监控系统中才能进行时序数据采集、存储、告警和展示,监控目标可以通过配置信息以静态形式指定,也可以让Prometheus通过服务发现的机制进行动态管理。

Prometheus 能够直接把API Server作为服务发现系统使用,进而动态发现和监控集群中的所有可被监控的对象。

Prometheus官网地址:https://prometherus.io

Prometheus GitHub地址:https://github.com/prometheus 

2.Prometheus功能

Prometheus为系统监控提供了强大的工具和功能,支持多维数据分析、动态警报、自动服务发现等特性。

2.1多维数据模型

Prometheus使用多维数据模型来表示时间序列数据,每个时间序列都由一个唯一的标识符,包括:指标名称和一组标签标识。由度量名称和键值对标识的时间序列数据。

时间序列数据:按照时间顺序记录系统、设备状态变化的数据,每个数据称为一个样本;服务器指标数据、应用程序性能监控数据、网络数据等都是时序数据

2.2数据采集和存储

Prometheus支持从各种数据源中采集指标数据,包括应用程序、操作系统、容器、服务发现和云平台等。

2.3指标类型

Prometheus支持多种指标类型,包括计数器(Counter)、仪表(Gauge)、直方图(Histogram)和摘要(Summary)等数据。

2.4数据查询

Prometheus提供了PromQL(Prometheus Query Language)查询语言,允许用户灵活地查询和聚合数据。

2.5警报和通知

Prometheus可以设置警报规则,当指标数据达到预设的阈值时,可以触发警报通知。

2.6云原生支持

Prometheus在云原生环境中得到广泛应用,与Kubernetes等容器编排平台集成紧密,能够自动发现和监控容器化应用。

TSDB作为Prometheus的存储引擎完美契合了监控数据的应用场景

  • 存储的数据量级十分庞大
  • 大部分时间都是写入操作
  • 写入操作几乎是顺序添加,大多数时候都以时间排序
  • 很少更新数据,大多数情况再数据被采集到数秒或者数分钟后就会被写入数据库
  • 删除操作一般为区块删除,选定开始的历史时间并指定后续的区块。很少单独删除某个时间或者分开的随机时间的数据
  • 基本数据大,一般超过内存大小。一般选择的知识其一小部分且没有规律,缓存几乎不起任何作用
  • 读操作是十分典型的升序或者降序的顺序读
  • 高并发的读操作十分常见

3.Prometheus优势

3.1易于管理

  • Prometheus核心部分只有一个单独的二进制文件,不存在任何的第三方依赖(数据库,缓存等等);
  • 唯一需要的就是本地磁盘,因此不会有潜在级联故障的风险。

3.2强大的查询语言 PromQL

  • Prometheus 内置一个强大的数据查询语言 PromQL,通过 PromQL 可以实现对监控数据的查询、聚合。
  • 同时 PromQL 也被应用于数据可视化(如 Grafana)以及告警中。

3.3高效

对于监控系统而言,大量的监控任务必然导致有大量的数据产生。而 Prometheus 可以高效的处理这些数据。

3.4可扩展

  • Prometheus 支持联邦集群,可以让多个 Prometheus 实例产生一个逻辑集群;
  • 当单实例 Prometheus 处理的任务量过大时,通过使用功能分区(sharding)+ 联邦集群(federation)可以对其进行扩展。

3.5易于集成

目前官网提供了多种语言的客户端 SDK,基于这些 SDK 可以快速让应用程序纳入到监控系统中,同时还支持与其它的监控系统集成。

3.6可视化

  • Prometheus Server 自带一个 UI,通过这个 UI 可以方便对数据进行查询和图形化展示;
  • 同时还可以对接 Grafana 可视化工具展示精美监控指标。

4.Prometheus基础架构

Prometheus 生态系统包含了几个关键的组件:Prometheus serverPushgatewayAlertmanagerWeb UI 等。

  • Prometheus:主要是负责存储、抓取、聚合、查询方面。
  • Alertemanager:主要是负责实现报警功能。
  • Pushgateway:主要是实现接收有 Client-push 过来的指标数据,在指定的时间间隔,有主程序来抓取。
  • *_exporter:主要是负责采集物理机、中间件的信息。 

4.1Prometheus Server

收集和储存时间序列数据

服务核心组件,采用pull方式收集监控数据,通过http协议传输。并存储时间序列数据,基于“告警规则”生成告警通知。Prometheus server 由三个部分组成:Retrival,Storage,PromQL

  • Retrieval:负责在活跃的target 主机上抓取监控指标数据。
  • Storage:存储,主要是把采集到的数据存储到磁盘中。默认为15天(可修改)。
  • PromQL:是Prometheus提供的查询语言模块。

4.2Client Library

客户端库,目的在于为那些期望原生提供 Instrumentation 功能的应用程序提供便捷的开发途径,用于基于应用程序内建的测量系统。

4.3Push Gateway

类似一个中转站,Prometheus的server端只会使用pull方式拉取数据,但是某些节点因为某些原因只能使用push方式推送数据,那么它就是用来接收push而来的数据并暴露给Prometheus的server拉取的中转站。可以理解成目标主机可以上报短期任务的数据到Pushgateway,然后Prometheus server 统一从Pushgateway拉取数据。

4.4Exporters

指标暴露器,负责收集不支持内建Instrumentation的应用程序或服务的性能指标数据,并通过HTTP接口供Prometheus Server获取。用于暴露现有应用程序或服务(不支持Instrumentation)的指标给Prometheus Server。Exporters负责从目标应用程序上采集和聚合原始格式的数据,并转换或聚合为Prometheus格式的指标向外暴露。

而pro内建了数据样本采集器,可以通过配置文件定义,告诉prometheus到那个监控对象中采集指标数据,prometheus 采集过后,会存储在自己内建的TSDB数据库中,提供了promQL 支持查询和过滤操作,同时支持自定义规则来作为告警规则,持续分析一场指标,一旦发生,通知给alerter来发送告警信息,还支持对接外置的UI工具(grafana)来展示数据

采集、抓取数据是其自身的功能,但一般被抓去的数据一般来自于:
export/instrumentation (指标数据暴露器) 来完成的,或者是应用程序自身内建的测量系统(汽车仪表盘之类的,测量、展示)来完成

常用的 Exporters

  • Node-Exporter:用于收集服务器节点的物理指标状态数据,如平均负载、CPU、内存、磁盘、网络等资源信息的指标数据,需要部署到所有运算节点。
  • 指标详细介绍:https://github.com/prometheus/node_exporter
  • mysqld-exporter/nginx-exporter
  • Kube-State-Metrics:为 Prometheus 采集 K8S 资源数据的 exporter,通过监听 APIServer 收集 kubernetes 集群内资源对象的状态指标数据,例如 pod、deployment、service 等等。同时它也提供自己的数据,主要是资源采集个数和采集发生的异常次数统计。
  • 需要注意的是 kube-state-metrics 只是简单的提供一个 metrics 数据,并不会存储这些指标数据,所以可以使用 Prometheus 来抓取这些数据然后存储, 主要关注的是业务相关的一些元数据,比如 Deployment、Pod、副本状态等;调度了多少个 replicas ?现在可用的有几个?多少个 Pod 是 running/stopped/terminated 状态?Pod 重启了多少次?有多少 job 在运行中。
  • cAdvisor:用来监控容器内部使用资源的信息,比如 CPU、内存、网络I/O、磁盘I/O 。
  • blackbox-exporter:监控业务容器存活性。

4.5Alertmanager

Alertmanager:是一个独立的告警模块,从Prometheus server端接收到“告警通知”后,会进行去重、分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件、钉钉、企业微信等。

  • Prometheus Server 仅负责生成告警指示,具体的告警行为由另一个独立的应用程序AlertManager负责;
  • 告警指示由 Prometheus Server基于用户提供的告警规则周期性计算生成,Alertmanager 接收到Prometheus Server发来的告警指示后,基于用户定义的告警路由向告警接收人发送告警信息。

4.6Service Discovery

Service Discovery:服务发现,用于动态发现待监控的Target,Prometheus支持多种服务发现机制:文件、DNS、Consul、Kubernetes等等。

服务发现可通过第三方提供的接口,Prometheus查询到需要监控的Target列表,然后轮询这些Target 获取监控数据。该组件目前由Prometheus Server内建支持

4.7Grafana

Grafana:是一个跨平台的开源的度量分析和可视化工具,可以将采集的数据可视化的展示,并及时通知给告警接收方。其官方库中具有丰富的仪表盘插件。

4.8Prometheus数据流向

  1. Prometheus server 定期从配置好的 jobs 或者 exporters 中拉取 metrics,或者接收来自       Pushgateway 发送过来的metrics,或者从其它的Prometheus server中拉取 metrics。
  2. Prometheus server在本地存储收集到的 metrics,并运行定义好的 alerts.rules,记录新         的时间序列或者向Alert manager推送警报。
  3. Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警。
  4. 在图形界面中,可视化采集数据。

5.Prometheus工作原理

5.1Prometheus工作模式

  • Prometheus Server 基于服务发现(Service Discovery)机制或静态配置获取要监视的目标(Target),并通过每个目标上的指标 exporter来采集(Scrape)指标数据;
  • Prometheus Server 内置了一个基于文件的时间序列存储来持久存储指标数据,用户可使用PromQL接口来检索数据,也能够按需将告警需求发往Altermanager完成告警内容发送;
  • 一些短期运行的作业的生命周期过短,难以有效地将必要的指标数据供给到Server端,它们一般会采用推送(Push)方式输出指标数据,Prometheus借助于Pushgateway 接收这些推送的数据,进而由server端进行抓取

5.2Prometheus工作流程

  1. Prometheus以prometheus Server 为核心,用于收集和存储时间序列数据。Prometheus Server从监控目标中通过pull方式拉取指标数据,或通过pushgateway 把采集的数据拉取到Prometheus server中。
  2. Prometheus server 把采集到的监控指标数据通过 TSDB存储到本地HDD/ssD中。
  3. Prometheus 采集的监控指标数据按时间序列存储,通过配置报警规则,把触发的报警发        送到Alertmanager。
  4. Alertmanager 通过配置报警接收方,发送报警到邮件、钉钉或者企业微信等。
  5. Prometheus 自带的Web UI 界面提供 PromQL 查询语言,可查询监控数据。
  6. Grafana 可接入Prometheus 数据源,把监控数据以图形化形式展示出。

ps:告警数据采集、告警信息提取、告警通知

  1. 首先,需要采集监控数据,pro会周期性的pull或被push指标数据,数据采集的方式主要包括exporters、instrumentation、pushgateway 3种方式,前两者为pull方式获取,pushgateway借助于push方式推送给prometheus。 
  2. 根据prometheus配置文件中(K8S-configmap的配置种),获取被监控端的数据之后,保存在TSDB中,我们可以借助Grafana或者告警平台来展示数据,grafana的展示是通过PromQL来获取数据。
  3. prometheus通过rule配置来借助于PromQL来定义布尔值表达式,产生告警信息
  4. 一旦出现告警,prometheus产生告警信息,发送给altermanager,altermanager根据自定义的告警路由,来进行告警通知,对接第三方平台,例如告警平台、邮件、钉钉。

二、运维监控平台设计思路

  • 数据收集模块
  • 数据提取模块(prometheus-TSDB,查询语言是promQL)
  • 监控告警模块(布尔值表达式判断是否需要告警,不成立是健康状态)

可以细化为6层

  • 第六层:用户展示管理层   同一用户管理、集中监控、集中维护
  • 第五层:告警事件生成层   实时记录告警事件、形成分析图表(趋势分析、可视化)
  • 第四层:告警规则配置层   告警规则设置、告警伐值设置(定义布尔值表达式,筛选异常状态)
  • 第三层:数据提取层       定时采集数据到监控模块
  • 第二层:数据展示层       数据生成曲线图展示(对时序数据的动态展示)
  • 第一层:数据收集层       多渠道监控数据(网络,硬件,应用,数据,物理环境)

三、Prometheus监控体系

1.系统层监控

  • CPU、Load、Memory、swap、disk、I/O、process等
  • 网络监控:网络设备、工作负载、网络延迟、丢包率等

2.中间件及基础设施类监控

  • 消息中间件:kafka、RocketMQ、等消息代理(redis 中间件)
  • WEB服务容器:tomcat、weblogic、apache、php、spring系列
  • 数据库/缓存数据库:Mysql、Postgresql、MongoDB、es、redis

2.1Redis监控内容

  • Redis的服务状态
  • Redis所在服务器的系统层监控
  • RDB和AOF日志监控

日志--->如果是哨兵模式--->哨兵共享集群信息,产生的日志--->直接包含的其他节点哨兵信息及mysql信息

3.应用层监控

用于衡量应用程序代码状态和性能

3.1监控的分类

  • 白盒监控:自省指标,等待被下载(cadvisor)
  • 黑盒监控:基于探针(snmp)的监控方式,不会主动干预、影响数据

4.业务层监控

用于衡量应用程序的价值,如电商业务的销售量,ops、dau日活、转化率等,

业务接口:登入数量,注册数、订单量、搜索量和支付量

四、Prometheus时间序列数据

时序数据,是在一段时间内通过重复测量(measurement)而获得的观测值的集合将这些观测值绘制于图形之上,它会有一个数据轴和一个时间轴,服务器指标数据、应用程序性能监控数据、网络数据等也都是时序数据

1.数据来源

prometheus基于HTTP call (http/https请求),从配置文件中指定的网络端点(endpoint/IP:端口)上周期性获取指标数据。
很多环境、被监控对象,本身是没有直接响应/处理http请求的功能,prometheus-exporter则可以在被监控端收集所需的数据,收集过来之后,还会做标准化,把这些数据转化为prometheus可识别,可使用的数据(兼容格式)

2.收集数据

监控概念:白盒监控、黑盒监控

  • 白盒监控:自省方式,被监控端内部,可以自己生成指标,只要等待监控系统来采集时提供出去即可
  • 黑盒监控:对于被监控系统没有侵入性,对其没有直接"影响",这种类似于基于探针机制进行监控(snmp协议)

Prometheus支持通过三种类型的途径从目标上"抓取(Scrape)"指标数据(基于白盒监控);

Exporters ——>工作在被监控端,周期性的抓取数据并转换为pro兼容格式等待prometheus来收集,自己并不推送
Instrumentation ——>指被监控对象内部自身有数据收集、监控的功能,只需要prometheus直接去获取
Pushgateway ——>短周期5s—10s的数据收集

3.Prometheus——获取方式

Prometheus同其它TSDB相比有一个非常典型的特性:它主动从各Target上拉取(pull)数据,而非等待被监控端的推送(push)

两个获取方式各有优劣,其中,Pull模型的优势在于:
集中控制:有利于将配置集在Prometheus server上完成,包括指标及采取速率等;
Prometheus的根本目标在于收集在rarget上预先完成聚合的聚合型数据,而非一款由事件驱动的存储系统
通过targets(标识的是具体的被监控端)
比如配置文件中的 targets:['localhost:9090']

五、Prometheus局限性

  • Prometheus是一款指际监控系统,不适合存储事件及日志等;它更多地展示的是趋势性的监控,而非精准数据;
  • Prometheus认为只有最近的监控数据才有查询的需要,其本地存储的设计初衷只是保存短期(例如一个月)数据,因而不支持针对大量的历史数据进行存储;若需要存储长期的历史数据,建议基于远端存储机制将数据保存于InfluxDB或openTsDB等系统中;
  • Prometheus的集群机制成熟度不高,可基于Thanos(和灭霸是一个单词)实现Prometheus集群的高可用及联邦集群

六、Prometheus安装

主机名主机IP
Prometheus192.168.241.25
Client192.168.241.26
Granfana192.168.241.27

1.环境准备

  1. #在所有节点上安装 ntpdate 工具,并进行时间同步(因为 Prometheus 对时间要求非常严格)
  2. yum -y install ntpdate
  3. /usr/sbin/ntpdate ntp.aliyun.com
  4. #如果是时区不同,导致时间不同步可以修改时区timedatectl set-timezone Asia/Shanghai

2.下载

普罗米修斯下载链接地址:https://prometheus.io/download/ 

此次我们安装 prometheus-2.16.0.linux-amd64.tar.gz 的版本

  1. #在Prometheus节点进行操作
  2. cd /opt
  3. wget https://github.com/prometheus/prometheus/releases/download/v2.16.0/prometheus-2.16.0.linux-amd64.tar.gz
  4. tar xf prometheus-2.16.0.linux-amd64.tar.gz
  5. mv prometheus-2.16.0.linux-amd64 /usr/local/prometheus

3.配置

  1. useradd -s /sbin/nologin prometheus
  2. chown -R prometheus:prometheus /usr/local/prometheus/

  1. vim /usr/lib/systemd/system/prometheus.service
  2. [Unit]
  3. Description=prometheus
  4. After=network.target
  5. [Service]
  6. User=prometheus
  7. Group=prometheus
  8. WorkingDirectory=/usr/local/prometheus
  9. ExecStart=/usr/local/prometheus/prometheus
  10. [Install]
  11. WantedBy=multi-user.target
  12. systemctl daemon-reload
  13. systemctl enable --now prometheus

4.后端存储配置

  • 默认情况下 Prometheus 会将采集的数据存储到本机的 /usr/local/prometheus/data 目录,存储数据的大小受限和扩展不便;
  • 所以这里使用 influxdb 作为后端的数据库来存储数据。

4.1安装 

  1. wget https://dl.influxdata.com/influxdb/releases/influxdb-1.7.8.x86_64.rpm
  2. yum -y localinstall influxdb-1.7.8.x86_64.rpm
  3. cp /etc/influxdb/influxdb.conf /etc/influxdb/influxdb.conf.default
  4. systemctl enable --now influxdb

 4.2验证

  1. influx
  2. Connected to http://localhost:8086 version 1.7.8
  3. InfluxDB shell version: 1.7.8
  4. > create database prometheus;
  5. #创建Prometheus数据库,用于存储监控数据
  6. > exit

4.3配置Prometheus集成infuxdb

  1. vim /usr/local/prometheus/prometheus.yml
  2. 在最后面添加:
  3. remote_write:
  4. - url: "http://localhost:8086/api/v1/prom/write?db=prometheus"
  5. remote_read:
  6. - url: "http://localhost:8086/api/v1/prom/read?db=prometheus"
  7. systemctl restart prometheus

5.使用Prometheus实现系统监控

  • 因为 Prometheus 并不能直接监控服务,其主要任务负责数据的收集,存储并对外提供数据查询支持;
  • 因此,为了能够监控到某些东西,如:主机的 CPU 使用率,我们需要使用到 Exporter

5.1安装Node_Exporter

  1. wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
  2. tar xf node_exporter-0.18.1.linux-amd64.tar.gz
  3. mv node_exporter-0.18.1.linux-amd64 /usr/local/exporter/

  1. useradd prometheus -M -s /sbin/nologin
  2. chown prometheus:prometheus /usr/local/exporter
  3. vim /usr/lib/systemd/system/node_exporter.service
  4. [Unit]
  5. Description=Prometheus node_exporter
  6. [Service]
  7. User=nobody
  8. ExecStart=/usr/local/exporter/node_exporter --log.level=error
  9. [Install]
  10. WantedBy=default.target
  11. systemctl daemon-reload
  12. systemctl enable --now node_exporter

当启动 node_exporter 服务后,便可以通过 20001 端口来访问 Client 的监控指标

5.2修改Prometheus配置文件

  1. vim /usr/local/prometheus/prometheus.yml
  2. - job_name: "Client"
  3. static_configs:
  4. - targets: ['192.168.241.26:20001']
  5. systemctl restart prometheus

5.3验证

七、使用 Prometheus + Grafana 实现可视化界面

  • 在 Prometheus 中,我们可以使用 Web 界面进行数据的查询和展示,但是展示效果不是很好;
  • 所以我们这里使用 Grafana 来配合 Prometheus 使用。

1.安装Grafana

  1. wget https://dl.grafana.com/oss/release/grafana-6.1.4-1.x86_64.rpm
  2. yum -y localinstall grafana-6.1.4-1.x86_64.rpm
  3. systemctl enable --now grafana-server
  4. netstat -anpt | grep 3000

2.配置 Grafana 的 Web 界面

八、总结

1.Zabbix 和 Prometheus 的区别

  1. 和Zabbix类似,Prometheus也是一个近年比较火的开源监控框架,和Zabbix不同之处在于Prometheus相对更灵活点,模块间比较解耦,比如告警模块、代理模块等等都可以选择性配置。服务端和客户端都是开箱即用,不需要进行安装。zabbix则是一套安装把所有东西都弄好,很庞大也很繁杂。
  2. zabbix的客户端 agent 可以比较方便的通过脚本来读取机器内数据库、日志等文件来做上报。而 Prometheus 的上报客户端则分为不同语言的SDK和不同用途的 exporter 两种,比如如果你要监控机器状态、mysql性能等,有大量已经成熟的 exporter 来直接开箱使用,通过http 通信来对服务端提供信息上报(server去pull信息);而如果你想要监控自己的业务状态,那么针对各种语言都有官方或其他人写好的 sdk供你使用,都比较方便,不需要先把数据存入数据库或日志再供zabbix-agent采集。
  3. zabbix的客户端更多是只做上报的事情,push模式。而Prometheus则是客户端本地也会存储监控数据,服务端定时来拉取想要的数据,pull模式。
  4. 界面来说zabbix比较陈旧,而prometheus比较新且非常简洁,简洁到只能算一个测试和配置平台。要想获得良好的监控体验,搭配Grafana还是二者的必走之路。

2.Prometheus如何收集k8s服务的信息

  • Exporters(指标暴露器):收集节点的信息、将数据格式化或转化为 promtheus 可识别的http这种转化方式/镜像拉取方式
  • Instrumentation (应用内置的指标暴露器): 收集有内置指标暴露器的信息
  • Pushgateway : 收集短周期的数据

3.如何防止告警信息轰炸

alertmanagr: prometheus可以生成告警信息,但是不能直接提供告警,需要使用一个外置的组件alertmanager来进行告警,emailetctif优势在于,收敛、支持静默、去重、可以防止告警信息的轰炸
把这条告警规则中的支持静默开启,让它必须,配置文件里直接改alertmanager改一个单词

4.Prometheus监控对象

级别监控对象Exporter
网络

网络协议:http、dns、tcp、icmp;

网路硬件:路由器、交换机等

BlockBox Exporter;SNMP Exporter
主机资源用量node exporter
容器资源用量cadvisor
应用(包括Library)延迟、错误,QPS,内部状态代码集中集成Prometheus Client
中间件状态资源用量,以及服务状态代码集中集成Prometheus Client
编排工具集群资源用量,调度等Kubernetes Components

5.常见的时间序列数据库

TSDB项目官网
influxDBInfluxDB: Open Source Time Series Database | InfluxData
RRDtoolRRDtool - About RRDtool
GraphiteGraphite
OpenTSDBOpenTSDB - A Distributed, Scalable Monitoring System
Kdb+KX: The Leading Provider of Time-Series Database Technology
DruidDruid | Database for modern analytics applications
KairosDBKairosDB
PrometheusPrometheus - Monitoring system & time series database
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/1009369
推荐阅读
相关标签
  

闽ICP备14008679号