Zabbix和Prometheus

2024-08-29 06:28
文章标签 prometheus zabbix

本文主要是介绍Zabbix和Prometheus,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.Zabbix

1.1 Zabbix监控获取数据的方式

zabbix-agent 适用于服务器,主机监控
SNMP协议 适用于网络设备(交换机、路由器、防火墙)
IPMI协议 适用于监控硬件设备信息(温度、序列号)
JMX协议 适用于Java应用监控

1.2 Zabbix server部署

添加epel源、添加Zabbix镜像仓库、下载数据库
在数据库创建Zabbix需要的表、授权用户
编辑zabbix server 配置文件,指定数据库连接

1.3 Zabbix-agent监控的三种方式

链接模板
利用自带的key监控数据
自定义key监控数据

1.3.1 常用的key

监控网卡流量
net.if.in[if,]
⇒ net.if.in[eth0,errors]
⇒ net.if.in[eth0]
监控TCP服务状态
net.tcp.listen[port]
⇒ net.tcp.listen[80]

监控UDP服务状态
net.udp.listen[port]
=> net.udp.listen[123]

进程数量
proc.num[,]
⇒ proc.num[]
⇒ proc.num[redis_server,]
⇒ proc.num[nginx,www]
=> proc.num[,zomb]

进程所消耗的内存
proc.mem[,]
=> proc.mem[httpd]

进程所消耗的CPU使用率
proc.cpu.util[,]
=> proc.cpu.util[httpd]

磁盘空间
vfs.fs.size[fs,]
=> vfs.fs.size[/webdata, free]

内存大小
vm.memory.size[]
=> vm.memory.size[free]

文件内容变化
vfs.file.cksum[file]
⇒ vfs.file.cksum[/etc/passwd]

1.3.2 自定义key监控

在被监控端, 注意:命令、脚本只能返回一个结果
UnsafeUserParameters=1
UserParameter=,

1.4 zabbix分布式监控

被监控主机数量过多时,通过zabbix proxy代理来缓解server的压力负载

监控远程位置,解决跨机房
监控主机多,性能跟不上,延迟大
解决网络不稳定
在这里插入图片描述

1.4.1 zabbix proxy部署

创建Proxy需要的库,导入表
编辑zabbix proxy配置文件、指定数据库连接

2.Zabbix相关问题

Zabbix监控的优缺点有哪些
优点:开源、无软件成本、server端对设备性能要求低、支持的设备多,自带多种监控模板、能实现自动化监控、开放式接口,扩展性强。

缺点:需在被监控主机上安装agent, 所有数据都存在数据库里,产生的数据量很大,瓶颈主要在数据库。

Zabbix分布式监控有什么优点?
缓解服务器压力,提高可用性和灵活性,减少网络负载,提高监控系统的性能和效率,更好的处理大量的监控数据。

zabbix的分布式监控有什么作用?
部署Proxy是可选的,,但是可能非常有益于分散单个Zabbix sever的负载。 如果只有proxy收集数据,sever上的进程就会减少CPU消耗和磁盘I / O负载。

3.Prometheus

  • Prometheus Server

Prometheus 生态最重要的组件,主要用于抓取和存储时间 序列数据,同时提供数据的查询和告警策略的配置管理。

  • Alertmanager
    Prometheus 生态用于告警的组件,Prometheus Server 会将告警发送给 Alertmanager,Alertmanager 根据路由配置,将告警信息发送给指定的人或组。Alertmanager 支持邮件、Webhook、微信、钉钉、短信等媒介进行告警通知
  • Grafana

用于展示数据,便于数据的查询和观测。

  • Push Gateway

Prometheus 本身是通过 Pull 的方式拉取数据,但是有些监控数 据可能是短期的,如果没有采集数据可能会出现丢失。Push Gateway 可以用来 解决此类问题,它可以用来接收数据,也就是客户端可以通过 Push 的方式将数据推送到 Push Gateway,之后 Prometheus 可以通过 Pull 拉取该数据。

  • Exporter

主要用来采集监控数据,比如主机的监控数据可以通过 node_exporter 采集,MySQL 的监控数据可以通过 mysql_exporter 采集,之后 Exporter 暴露一 个接口,比如/metrics,Prometheus 可以通过该接口采集到数据

  • PromQL

PromQL 其实不算 Prometheus 的组件,它是用来查询数据的一种语法,比如查询数据库的数据,可以通过SQL语句,查询Loki的数据,可以通过LogQL,查询 Prometheus 数据的叫做 PromQL

  • Service Discovery

用来发现监控目标的自动发现,常用的有基于 Kubernetes、 Consul、Eureka、文件的自动发现等。
在这里插入图片描述

4.Prometheus相关问题

1. Prometheus 是什么?它有哪些主要功能?
Prometheus 是一个开源的系统和服务监控工具集,用于收集、存储和查询各种指标数据。它具有强大的数据模型、灵活的查询语言(PromQL)、不依赖分布式存储并且通过拉模式(Pull)和推模式(Push)收集时间序列数据。
2. Prometheus 的工作流程是怎样的?
Prometheus 通过定时拉取(Pull)或服务推送(Push)的方式,从被监控的目标(如服务器、服务等)收集指标数据,然后将这些数据存储在本地的时序数据库中,用户可以通过 Prometheus 的 Web UI 或 API 进行数据查询和可视化。
3. Prometheus 的组件有哪些?
主要组件包括 Prometheus 服务器、Alertmanager、Exporters、Pushgateway 等。
4. Prometheus 的监控数据是如何采集的?
Prometheus 主要通过拉模式(Pull)来采集监控数据,它也可以通过 Pushgateway 来接收服务推送的监控数据。
5. Prometheus 的查询语言 PromQL 是什么?
PromQL(Prometheus Query Language)是 Prometheus 使用的一种强大的查询语言,用于查询和聚合时间序列数据。
6. Prometheus 有哪些高可用方案?
高可用方案包括使用 Prometheus-operator 进行集群管理,以及设置多个 Prometheus 实例进行数据复制等。
7. Prometheus 是如何处理告警的?
Prometheus 通过 Alertmanager 组件来处理告警,它可以对 Prometheus 的告警规则进行管理和路由,支持多种通知方式。
8. Prometheus 的局限是什么?
例如,Prometheus 不支持多维数据模型,它的数据保留策略相对固定,且在处理高基数的监控数据时可能会遇到性能问题。
9. Prometheus 如何监控 Kubernetes 集群?
通过使用特定的 Exporters 如 kube-state-metrics 和 node-exporter,以及集成 Prometheus-operator 来实现对 Kubernetes 集群的监控。10. Prometheus 的容量规划是如何进行的? -

5.Zabbix和Prometheus的区别

1、Zabbix基于C语言开发,它可以用于服务器、操作系统、网络、应用程序等目标对象监控。在监控和数据收集的方式上,可支持zabbix agent、SNMP、ping、端口监控等多种方式。
agent用于部署在目标机器上,并提供数据指标给到server,它们之间基于TCP协议进行通信。
agent支持被动轮询与主动推送模式,被动模式下由server定时向agent端发起请求,agent会处理请求并将值返回给到server端。而在主动推送下,则是由agent定时向server端发送结果。
Zabbix使用外部数据库来存储数据,目前支持的数据库有MySQL、PostgreSQL、Oracle等。在存储的数据类型上,Zabbix除key-value格式外,还支持文本、日志等格式。
zabbix在查询方面功能较弱,只能通过Web界面做一些有限度的操作,或者直接到数据库使用SQL进行查询。
与可视化情况一样,Zabbix内置了告警功能,并支持多种介质的发送。Zabbix 警报系统允许以不同的方式管理事件:发送消息、执行远程命令、根据服务级别升级问题等。

更适用于传统业务架构的物理机、虚拟机环境的监控,对容器的支持比较差;数据存储主要采用的是关系型数据库,会随着被监控节点数量的增加,关系型数据库的压力也会变大,监控数据的读写也会变慢;对大规模集群监控的性能比Prometheus要弱一些,可适用于单集群不超过2000台节点的场景。

2、Prometheus基于Go语言,只专注于监控的功能并提供简单Web界面供用户查询;
基于客户端进行数据的收集,Server端会定时与客户端进行交互,并通过pull方式获取相关的监控指标。
基于HTTP进行通信,这使得与其他工具的集成变得简单,任何组件只要提供对应的HTTP接口就可以接入监控。
Prometheus将数据存储在内置的时间序列数据库(TSDB)中,该数据库相比关系型数据库可以较大的节省存储空间,并且拥有更高的处理效率,能够快速搜索出复杂的结果。
Prometheus在查询方面要比Zabbix强大得多。Prometheus提供了自带的查询语言PromQL,该语言非常灵活、简洁且功能强大,可以与函数和运算符配合,进行计算、过滤、分组等操作,同时支持正则表达式。
在告警上,Prometehus需要与Alertmanager结合使用。因为Prometheus的告警分为两部分,在Prometheus Server端定义告警规则,当触发规则时则会发送到Alertmanager,并由其发送给对应的接收人。

能支持云环境、K8S容器集群的监控,是目前容器监控最好的解决方案;数据存储采用的是时序数据库,大大的节省存储空间,还能提升查询效率;单集群能支持的节点规模更大,通常超过2000台节点、业务服务数量大于1000个的时候建议直接上Prometheus。

这篇关于Zabbix和Prometheus的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1117096

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

Prometheus与Grafana在DevOps中的应用与最佳实践

Prometheus 与 Grafana 在 DevOps 中的应用与最佳实践 随着 DevOps 文化和实践的普及,监控和可视化工具已成为 DevOps 工具链中不可或缺的部分。Prometheus 和 Grafana 是其中最受欢迎的开源监控解决方案之一,它们的结合能够为系统和应用程序提供全面的监控、告警和可视化展示。本篇文章将详细探讨 Prometheus 和 Grafana 在 DevO

kubernetes集群部署Zabbix监控平台

一、zabbix介绍 1.zabbix简介 Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。 2.zabbix特点 (1)安装与配置简单。 (2)可视化web管理界面。 (3)免费开源。 (4)支持中文。 (5)自动发现。 (6)分布式监控。 (7)实时绘图。 3.zabbix的主要功能

java后端服务监控与告警:Prometheus与Grafana集成

Java后端服务监控与告警:Prometheus与Grafana集成 大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在现代的微服务架构中,监控和告警是确保服务稳定性的关键组成部分。Prometheus和Grafana是两个强大的工具,它们可以集成在一起,为Java后端服务提供实时监控和可视化告警。 服务监控的重要性 服务监控可以帮助我们实时了解服务的健

如何使用Prometheus与Grafana监控Kubernetes集群

使用Prometheus与Grafana监控Kubernetes集群 一、引言 Kubernetes作为目前最受欢迎的容器编排工具,已经成为现代应用部署和管理的核心平台。然而,随着集群规模的扩大和复杂性的增加,对其进行有效的监控变得至关重要。Prometheus与Grafana是广泛使用的开源监控和可视化工具,能够提供强大的监控、报警和数据可视化功能。本文将详细介绍如何使用Prometheus

prometheus删除指定metrics下收集的值

Prometheus 删除指定 Metric 官方文档: ​ - https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis Prometheus 的管理 API 接口,官方到现在一共提供了三个接口,对应的分别是快照功能、数据删除功能、数据清理功能,想要使用 API 需要先添加启动参数 --web.en

Grafana+prometheus+php 自动创建监控图

背景 在grafana+ prometheus+php 监控系统实践文章当中已经实现了我们的第一个监控图表,现在我们有了一个新需求,需要对多个节点实现不同的监控,以及一个汇总的监控; 按照我们之前手动创建仪表盘的方法,每新增一个节点都需要手动去修改prometheus配置,并且需要去grafana系统当中创建一个仪表盘,在节点很少的时候这种方式也能满足,但当节点数量多起来的时候,就会增加很大一

grafana+ prometheus+php 监控系统实践

背景 团队在开发流媒体服务,需要实现一个监控在线人数的功能,可以看到历史有多少人在线,当前有多少人在线的功能。 如果用mysql等关系型数据库来实现,可以用事件记录日志,然后通过PHP加上一些绘图的插件来实现,但这种方式并不好,首先用关系型数据库随着时间累积,会存在数据量越来越大,导致查询缓慢,再者需要编写这部分统计代码,因此并不是最佳选择。 我们很快找到了一个“时序性数据库”(promet

zabbix-高级应用(主被动监控、邮件告警、企业微信告警)

文章目录 zabbix-高级应用监控路由器交换机SNMP简单网络管理协议测试案例配置网络设备创建主机创建监控项测试监控项 自动发现什么是自动发现Discovery?配置自动发现1、创建自动发现规则2、创建Action动作(发现主机后自动执行什么动作)3、通过动作,执行添加主机,链接模板到主机等操作4、测试,创建新的虚拟机(符合发现规则) 主被动监控1、概述2、创建被监控主机(主动监控)

Prometheus异常处理

文章目录 Prometheus 的功能和使用场景功能使用场景 Docker 服务的创建和启动1. 安装 Docker2. 创建 Prometheus 配置文件3. 启动 Prometheus Docker 容器4. 访问 Prometheus 常见报错及解决方法1. 配置文件错误2. 端口冲突3. 容器无法启动4. 配置文件挂载失败5. 无法访问 Prometheus Web 界面6. 服务