Zabbix和Prometheus的区别

Zabbix监控平台

监控概念

  • 对服务的管理,不能仅限于可用性。
  • 还需要服务可以安全、稳定、高效地运行。
  • 监控的目的:早发现、早治疗。
  • 被监控的资源类型:
    • 公开数据:对外开放的,不需要认证即可获取的数据
    • 私有数据:对外不开放,需要认证、权限才能获得的数据

Zabbix是什么?

Zabbix是个适用于监控硬件服务器的一款开源的分布式监控方案

  • 实施监控的几个方面:
    • 数据采集:使用agent(可安装软件的系统上)、SNMP(简单网络管理协议,用于网络设备的数据采集)
    • 数据存储:使用mysql数据库
    • 数据展示:通过web页面
  • 组成部分:
  • C/S:数据采集、数据存储
  • B/S:数据展示
  • 组件:
  • MySQL:数据持久化存储
  • zabbix-server:数据接收及回写
  • zabbix-agent:数据采集
  • zabbix-web:数据展示(基于LNMP平台运行的一组PHP代码)

 Zabbix核心概念

  • 主机: 被监控端,通常是安装了agent的服务器或支持SNMP协议的网络设备
  • 主机群组: 主机分类,便于查找监控项:数据采集单位,每个监控项对应一个数据采集点
  • 模板: 监控项的分组,便于新增设备时绑定对应的监控项
  • 触发器: 定义阈值,表现形式为一个表达式
  • 触发器动作: 触发器中定义的闽值被触发后的行为
  • 自定义监控项: 语法:UserParameter=键值[*],脚本(shell命令) $1
  • 自动发现规则: 定义符合条件的规则
  • 自动发现动作: 符合自动发现条件的主机如何处理
  • 被动监控:Server向Agent发起连接
  • 主动监控:Agent向Server发起连接
  • 触发器(trigger)
  • 表达式,如内存不足300M,,用户超过30个等
  • 当触发条件发生后,会导致一个触发事件
  • 触发事件会执行某个动作
  • 动作(action)
    • 触发器的条件被触发后的行为
    • 可以是发送邮件、也可以是重启某个服务等
  • 自动发现(Discovery)
    • 当Zabbix需要监控的设备越来越多,手动添加监控设备越来越有挑战,此时,可以考虑使用自动发现功能
    • 自动发现可以实现:发现主机、添加主机,添加主机到组、链接模板等

 Zabbix主被动监控

  • 主动和被动都是对被监控端主机而言的
  • 默认zabbix采用的是被动监控

  • 被动模式:
  • server向agent发起索要数据的请求,agent接收到请求后将数据发送给server
  • 表现: zabbix-agent服务监听固定端口10050用于连接建立和数据传输
  • 主动模式:
  • agent按照指定的时间间隔将采集到的数据推送给server
  • 表现: zabbix-agent服务不监听固定端口,推送数据时临时启用一个高位端口,传输完成断开连接
  • 区别:Server不用每次需要数据都连接Agent,Agent会自己收集数据并处理数据,Server仅需要保存数据即可
 

Prometheus监控平台

Prometheus是什么?

Prometheus(普罗米修斯):适用于监控云原生领域容器相关指标的一款开源监控方案

  • Prometheus是一个开源系统监控和警报工具包,最初由 SoundCloud构建。
  • 也是一款监控软件,也是一个时序数据库。Prometheus 将其指标收集并存储为时间序列数据,即指标信息与记录时的时间戳以及称为标签的可选键值对一起存储。
  • 主要用在容器监控方面,也可以用于常规的主机监控。
  • 使用google公司开发的go语言编写。
  • Prometheus是一个框架,可以与其他组件完美结合。

  • 组件:
  • prometheus-server: 核心组件,负责数据收集、存储和查询。
  • xx-exporter: 用于收集各种应用和系统的指标数据,并暴露给 Prometheus 抓取。例如,Node Exporter 用于收集系统级指标,Blackbox Exporter 用于监控外部服务。
  • push-gateway: push模式下数据中转站
  • Alertmanager: 负责处理告警,可以配置通知规则,并将告警发送到不同的接收器,如邮件、Slack、PagerDuty 等。
  • Kubernetes:虽然 Kubernetes 不是 Prometheus 的组件,但 Prometheus 提供了对Kubernetes 集群的监控支持,包括节点、Pod、服务等
  • Grafana:
  1. Grafana是一款开源的、跨平台的、基于web的可视化工具
  2. 展示方式:客户端图表、面板插件
  3. 数据源可以来自于各种源,如prometheus

 监控方式

  • 拉取:pull。监控端主动向被监控端拉取数据,这样需要被监控端上安装exporters(导出器)作为守护进程
  • 推送:push。被监控端主动把数据发给监控端。在prometheus中,被监控端需要安装pushgateway插件,然后运维人员用脚本把监控数据组成键值形式提交给pushgateway,再由它提交给监控端
  • 被监控端根据自身运行的服务,可以运行不同的exporter(被监控端安装的、可以与Prometheus通信,实现数据传递的软件)

 自动发现机制

  • 自动发现是指Prometheus自动对节点进行监控,不需要手动一个一个去添加,和Zabbix的自动发现、自动注册一个道理
  • Prometheus有多种自动发现发现,比如file_sd_configs基于文件自动发现、基于K8S自动发现、基于openstack自动发现、基于consul自动发现等

基于文件自动发现:

  • file_sd_configs实现文件级别的自动发现
  • 使用文件自动发现功能后,Prometheus会定期检查配置文件是否有更新
  • 如果有更新的话就将新加入的节点接入监控,服务端无需重启服务

Alertmanager

  • Prometheus服务器中的告警规则向Alertmanager发送告警。然后,Alertmanager管理这些告警,包括静默、抑制、分组以及通过电子邮件、即时消息系统和聊天平台等方法发出通知。
  • 设置告警和通知的主要步骤是:
  • 设置和配置Alertmanager
  • 配置Prometheus与Alertmanager对接
  • 在普罗米修斯中创建告警规则

  • Alertmanager处理客户端应用程序(如Prometheus服务器)发送的警报。它负责重复数据删除、分组,并将其路由到正确的接收方集成
  • 分组:分组将性质相似的警报分类到单个通知中。这在较大的停机期间特别有用,此时许多系统同时发生故障,数百到数千个警报可能同时发出。
  • 抑制:抑制是当某一告警发出后,可以停止重复发送由此告警引发的其它告警的机制。
  • 静默提供了一个简单的机制可以快速根据标签对告警进行静默处理。如果接收到的告警符合静默的配置, Alertmanager则不会发送告警通知。静默设置需要在Alertmanager的Web页面上进行设置。
 

常用的监控指标

Prometheus 监控的指标类型非常广泛,以下是一些常用的指标类型:

  • 系统指标:
  • CPU 使用率:cpu_usage_seconds_total
  • 内存使用率:memory_usage_bytes
  • 磁盘 I/O 操作数:disk_io_time_seconds
  • 网络带宽:
  1. network_receive_bytes_total
  2. network_transmit_bytes_total
  • Kubernetes 指标:
  • Pod 状态:kube_pod_container_status_running、kube_pod_info
  • 节点状态:kube_node_status_condition
  • 资源使用率:kube_pod_container_resource_requests_cpu、kube_pod_container_resource_requests_memory
  • 应用程序指标:
  • 请求数:http_requests_total
  • 响应时间:http_response_duration_seconds
  • 错误率:http_request_errors_total

 监控内容&报警标准

Prometheus 可以监控各种系统和应用程序的性能和健康状态,包括但不限于以下内容:

  • 系统资源使用情况:CPU、内存、磁盘 I/O、网络带宽等。
  • 容器和虚拟机的资源使用情况:Kubernetes Pod、Docker 容器等。
  • 应用程序的请求数、响应时间、错误率等指标。
  • 数据库的连接数、查询时间、错误率等指标。
  • 报警标准

Prometheus 的报警系统基于 Alertmanager 组件,可以根据预定义的报警规则触发报警。以下是一些常见的报警规则示例:

  • 高 CPU 使用率:
  1. 规则:cpu_usage_seconds_total{mode="idle"} > 80
  2. 描述:当 CPU 空闲时间超过 80% 时,触发报警。
  • 高内存使用率:
  1. 规则:memory_usage_bytes{job="node_exporter"} > 0.8 * node_memory_MemTotal_bytes
  2. 描述:当节点内存使用率超过 80% 时,触发报警。
  • 磁盘空间不足:
  1. 规则:node_filesystem_avail_bytes{mountpoint="/"} < 10 * 1024 * 1024 * 1024
  2. 描述:当根文件系统的可用空间小于 10GB 时,触发报警。
  • 高错误率:
  1. 规则:rate(http_request_errors_total[5m]) > 0.01
  2. 描述:当 5 分钟内的错误率超过 1% 时,触发报警。
  • Pod 重启次数过多:
  1. 规则:kube_pod_container_status_restarts_total > 5
  2. 描述:当 Pod 容器重启次数超过 5 次时,触发报警。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值