Zabbix6.x企业级监控解决方案
1、监控的意义2、监控的对象3、常见监控软件4、Zabbix应用手册4.1 Zabbix介绍4.1.1 zabbix企业版选型4.2 zabbix架构图详解4.2.1 zabbix 组件介绍4.2.2 zabbix 进程介绍4.3 Zabbix 优点和不足4.4 Zabbix功能4.5 zabbix 监控数据流程4.5.1 Zabbix 核心概念5、Zabbix 常用监控架构6、Zabbix 监控系统监控对象6.1 Zabbix监控方式7、安装和配置 Zabbix 服务7.1 实验准备7.2 安装 Zabbix-server端7.3 测试访问7.4 zabbix 主机图形乱码解决8、配置文件详解9、zabbix agent版本差异解释(了解)10、监控任意主机10.1 快速添加新的主机11、主机群组使用12、自定义监控模版12.1 boot分区剩余容量监控12.2 网卡出入流量监控12.2.1 ens33网卡进入流量监控12.2.2 ens33网卡出去流量监控12.3 监控服务端口12.4 监控系统进程数量12.5 监控cpu的状态12.5 监控文件的修改12.6 监控磁盘IO的情况12.7 监控磁盘的总和13、自定义监控设置(Items)13.1 自定义监控项编写13.2 获取不到内容报错解决13.3 使用脚本定义自定义监控项14、 自定义图形14.1 自定义单个监控项图形14.2 仪表盘创建(聚合图形)15、触发器器设置( Triggers)15.1 触发器介绍15.2 触发器严重性15.3 配置触发器15.3.1 触发器示例一:web服务端口15.3.2 触发器示例二:cpu 1分钟负载15.4 触发器常用表达式功能函数介绍16、zabbix监控模版16.1 zabbix server自带模版17、触发器 Action17.1 Action 动作介绍17.2 告警分类17.2 邮箱告警17.3 飞书告警18、宏18.1 介绍18.2 设置优先级18.3 作用及场景18.4 宏设置19、zabbix 自动发现20、zabbix自动注册20.1 zabbix自动注册介绍20.2 zabbix自动注册操作21、zabbix Proxy21.1 介绍21.2 安装zabbix-agent2配置23、zabbix结合Grafana实现图形展示
1、监控的意义
-
保障业务稳定运行
:监控系统通过实时关注与业务相关的各项指标
,确保服务器、网络设备等硬件资源的正常运行,从而保障公司线上业务的稳定性。 -
及时发现和解决问题
:监控系统能够及时发现系统的异常和故障,通过告警
管理迅速通知运维人员,以便尽快采取措施解决问题,减少潜在的损失。 -
数据收集与分析:监控系统可以收集系统运行的各种数据,如性能数据、日志信息等,通过数据分析帮助管理者更好地理解系统运行状况,优化系统性能。
-
预防故障
:除了发现和解决已经发生的故障,监控系统还能够通过历史数据
分析预测潜在的问题,提前采取预防措施,避免故障发生。 -
统一管理平台
:监控系统往往提供一个统一的管理平台
,使得企业可以从一个集中的地方监控和管理所有的IT资源,简化管理流程,提高工作效率。 -
支持决策:监控系统提供的详细报表和图表可以帮助企业决策者更好地理解业务状况,支持做出更加明智的决策
2、监控的对象
通常情况下,我们可以将监控对象这么来分:
-
服务器监控:主要监控服务器如:CPU 负载、内存使用率、磁盘使用率、登陆用户数、进程状态、网卡状态等。
-
应用程序监控:主要监控该应用程序的服务状态,吞吐率和响应时间,因为不同应用需要监控的对象不同,这里不一一列举。
-
数据库监控:只所以把数据库监控单独列出来,足以说明它的重要性,一般监控数据库状态,数据库表或者表空间的使用情况,是否有死锁,错误日志,性能信息等等。
-
网络监控:主要监控当前的网络状况,网络流量,端口,连接等。
举例:
Nginx监控:Zabbix可以收集包括活跃连接数(active connections)、已接受的连接数(accepts)、已处理的请求总数(handled requests)等在内的关键性能指标。这些数据可以通过自定义脚本使用awk
等工具从Nginx状态页中提取出来。
3、常见监控软件
-
Nagios:Nagios是一款开源的监控工具,主要用于监控系统和网络的运行状态,它可以通过多种插件来监控不同的服务和应用。Nagios的特点是轻量级,配置复杂,但是功能强大。
-
Zabbix:Zabbix是一款更加强大的监控工具,它不仅可以监控系统和应用的运行状态,还可以进行分布式监控、容器监控、网络监控等。Zabbix的特点是功能强大,界面友好,同时支持多种插件和自定义脚本。
-
Prometheus:Prometheus是一款开源的监控和报警系统,它将所有监控数据保存为时间序列数据,并对这些数据进行高效的查询和聚合。Prometheus的特点是数据模型简单,强大的查询语言,以及可通过Pull模式获取监控数据。
4、Zabbix应用手册
4.1 Zabbix介绍
zabbix官方网站:Zabbix :: The Enterprise-Class Open Source Network Monitoring Solution
Zabbix是一款开源的监控软件,用于监控各种网络参数、服务器的健康状况以及应用程序的状态。它能够提供灵活的通知机制,允许用户在问题发生时立即得到通知。以下是Zabbix的一些关键特性和组成部分的详细解释:
-
分布式监控
:Zabbix支持分布式监控,可以轻松地从一台主机监控远程主机和服务。这使得它适合于监控大型网络和云基础设施。 -
实时数据收集
:Zabbix提供了实时数据收集和图形展示功能,使管理员能够快速了解系统状态并及时响应问题。 -
灵活的告警机制:Zabbix具有灵活的告警机制,可以根据预设的条件触发告警,并通过多种方式(如邮件、短信)通知管理员。
-
自动发现
:Zabbix支持自动发现功能,可以自动检测网络中的设备和服务,简化了配置过程。 -
模板化管理:Zabbix使用模板来简化监控项的配置,只需将模板应用于特定的主机或服务,就可以实现对多个对象的统一监控。
-
Web界面
:Zabbix提供了一个直观的Web界面,使管理员能够轻松查看监控数据、配置告警和管理系统设置。 -
Agent和Agentless监控:Zabbix支持基于Agent的监控和无Agent的监控。基于Agent的监控需要在被监控的主机上安装Zabbix Agent,而无Agent的监控则通过SNMP、IPMI等协议收集数据。
-
历史数据存储:Zabbix可以将历史数据存储在数据库中,以便进行长期趋势分析和报告生成。
-
权限管理
:Zabbix具有强大的权限管理功能,可以定义不同角色的用户,并赋予他们对特定资源的访问权限。 -
集成和API:Zabbix提供了API接口,可以与其他系统集成,实现自动化和定制化的监控解决方案。
总的来说,Zabbix是一个功能强大且灵活的监控工具,适用于各种规模的网络和系统环境。通过合理的配置和使用,它可以帮助企业及时发现并解决潜在的问题,确保系统的稳定运行。
4.1.1 zabbix企业版选型
Zabbix LTS (长期支持版本)的生命周期
Zabbix标准版本的生命周期
4.2 zabbix架构图详解
zabbix
是一个典型的C/S(客户端/服务端)架构。
监控大致流程:zabbix-agent(客户端)获取监控数据,zabbix_server端(服务端)索要数据,然后数据会被存放至数据库,zabbix web展示所收集的监控数据。
4.2.1 zabbix 组件介绍
-
Zabbix Server:Zabbix Server 是 Zabbix 的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。 它主要负责接收客户端发送的报告和信息,同时,所有配置、统计数据及配置操作数据均由其组织进行。
-
Zabbix Database Storage:主要用于存储数据,所有配置信息和 Zabbix 收集到的数据都被存储在数据库中。常用的存储设备有 MySQL、Oracle 等。
-
Zabbix Web 界面:这是 Zabbix 提供的 GUI 接口,通常(但不一定)与 Zabbix Server 运行在同一台物理机器上。
-
Zabbix Proxy 代理服务器:这是一个可选组件,常用于分布监控环境中,代理 Server 可以替 Zabbix Server 收集性能和可用性数据,汇总后统一发往 Zabbix Server 端。
-
Zabbix Agent 监控代理: Zabbix Agent 部署在被监控主机上,能够主动监控本地资源和应用程序,并负责收集数据发往 Zabbix Server 端或 Zabbix Proxy 端。从 zabbix 5 版本开始,zabbix_agent 分为 zabbix_agent 和 zabbix_agent2,zabbix_agent2 是第二个 agent 版本,功能更加强大,采用 go 语言编写,支持 zabbix_agent 所有功能。使用 zabbix_agent2 可监控 docker 容器、ceph、mysql、oracle、 redis等。
4.2.2 zabbix 进程介绍
根据功能和用途,默认情况下 zabbix 包含 5 个进程,分别是 zabbix_agentd/zabbix_agent2、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外还有一个 zabbix_java_gateway 是可选的功能,需要另外安装。下面分别介绍下它们各自的作用。
-
zabbix_agentd/zabbix_agent2
: zabbix_agentd/agent2 是 Zabbix Agent 监控代理端守护进程,此进程收集客户端数据,例如cpu 负载、内存、硬盘、网络使用情况等,推荐使用 zabbix_agent2。 -
zabbix_get
: zabbix 提供的一个工具,通常在 Zabbix server 或者 Zabbix proxy 端执行用来获取远程客户端信息,这其实是 Zabbix server 去 Zabbix Agent 端拉取数据的过程,此工具主要用来进行用户排错。例如在 Zabbix server 端获取不到客户端的监控数据时,可以使用 zabbix_get 命令测试获取客户端数据来做故障排查。 -
zabbix_sender:zabbix 提供的一个工具,用于发送数据给 Zabbix server 或者 Zabbix proxy,这其实是 Zabbix Agent 端主动推送监控数据到 Zabbix Server 端的过程,通常用于耗时比较长的检查或者有大量主机(千台以上)需要监控的场景。此时通过主动推送数据到 Zabbix server,可以在很大程度上减轻 Zabbix server 的压力和负载。
-
zabbix_proxy:Zabbix Proxy 的代理守护进程。功能类似 Zabbix server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交或者被提交到 Zabbix server上。
-
zabbix_java_gateway:Zabbix 2.0 之后引入的一个功能。顾名思义:Java 网关,主要用来监控 JAVA 应用环境,类似 zabbix_agentd 进程。需要特别注意的是,它只能主动去推送数据,而不能等待 zabbix server或者 zabbix proxy 来拉取数据。它的数据最终会给到 zabbix server 或者 zabbix proxy 上。
-
zabbix_server
:Zabbix server 是整个 Zabbix 系统的核心进程。其它进程 zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway 的数据最终都是提交到 Zabbix server 来统一进行处理。 -
zabbix web service:Zabbix web service 是一个用来连接外部网站服务的进程。现在,Zabbix web service 用来收集和发送定时报告,Zabbix web service 模块在预编译的 Zabbix 安装包中提供。通过源码包中编译 Zabbix web service 时,需要指定 --enable-webservice 配置参数。
4.3 Zabbix 优点和不足
优点:
-
开源性:Zabbix作为一个开源工具,意味着用户可以免费使用,并且拥有对软件进行二次开发的灵活性。这为企业节约了成本,并允许根据特定需求定制功能。
-
数据采集能力:它支持多种数据收集方式,包括agent、SNMP、JMX和telnet等,还支持主动和被动模式的数据传输。用户还可以自定义插件来收集数据,这提供了高度的灵活性和适应性。
-
高可用性:Zabbix server对设备性能要求低,支持proxy分布式监控,这使得它能够适应不同规模和需求的监控环境。
-
监控能力:Zabbix能够监控各种网络参数,并提供灵活的通知机制,帮助运维人员快速定位并解决存在的问题。
-
模板丰富:Zabbix自带多种监控模板,这简化了新设备的监控配置过程,加快了部署速度。
-
API支持:Zabbix提供API支持,方便与其他系统整合,这为自动化和扩展功能提供了便利。
-
自动发现与全面监控:Zabbix支持自动发现网络中的设备和服务,这减少了手动配置的工作量,并确保了监控覆盖的全面性。
-
报警处理:它可以针对报警默认进行固定操作,减少人为操作失误的风险,同时降低人员成本。
-
支持多协议设备监控:Zabbix支持多种协议的设备监控,这意味着它可以用于多样化的技术环境中。
-
用户界面友好:基于Web的用户界面使得管理和配置变得直观和方便。
缺点:
-
性能瓶颈:当机器数量增加时,数据量的增大会导致数据库写入成为瓶颈。Zabbix官方指出单机上限为5000台设备,超过这个数量就需要增加proxy来分担负载,这无疑增加了成本。
-
数据延迟问题:在采用主动模式即server pull方式采集数据时,如果目标机器数量庞大,则可能出现任务积压和数据延迟的问题。
-
数据库压力:所有数据都存在数据库里, 产生的数据据很大,瓶颈主要在数据库。
4.4 Zabbix功能
-
可用性和性能采集;
-
支持 SNMP(包括主动轮询和被动捕获)、IPMI、JMX、VMware 监控;
-
自定义检查;
-
按照自定义的时间间隔采集需要的数据;
-
通过 Server/Proxy 和 Agents 来执行数据采集。
-
您可以定义非常灵活的告警阈值,称之为触发器,触发器从后端数据库获得参考值。
-
可以根据递增计划、接收者、媒介类型自定义发送告警通知;
-
使用宏变量可以使告警通知变得更加高效有益;
-
自动动作包含远程命令。
-
使用内置图形功能可实以将监控项绘制成图形。
-
Zabbix 可以追踪模拟鼠标在 Web 网站上的点击操作,来检查 Web 网站的功能和响应时间。
-
能够创建可以将多个监控项组合到单个视图中的自定义图形;
-
存储在数据库中的数据;
-
可配置的历史数据;
-
内置数据管理机制(housekeeping)。
-
将被监控设备添加为主机;
-
主机一旦添加到数据库中,就会采集主机数据用于监控;
-
将模板用于监控设备。
-
在模板中分组检查;
-
模板可以关联其他模板,获得继承。
-
自动发现网络设备;
-
Zabbix Agent 发现设备后自动注册;
-
基于 PHP 的 Web 前端;
-
可以从任何地方访问;
-
您可以定制自己的操作方式;
-
审计日志。
-
Zabbix API 为 Zabbix 提供可编程接口,用于批量操作、第三方软件集成和其他用途。
-
使用 Zabbix Proxy 代理,可以轻松实现分布式远程监控。
4.5 zabbix 监控数据流程
首先,为了创建一个采集数据的监控项
,您就必须先创建主机
。其次,必须有一个监控项,然后创建触发器。最后,您必须有一个触发器来触发一个动作,这几个点构成了一个完整的数据流。因此,如果您想要收到 CPU load it too high on Server X 的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监视其 CPU 的监控项,最后创建一个触发器,用来触发 CPU is too high 这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,其实并不复杂。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。
4.5.1 Zabbix 核心概念
主机(host)
你想要监控的联网设备,有IP/DNS。
主机的逻辑组;可能包含主机和模板。一个主机组里的主机和模板之间并没有任何直接的关联。通常在给不同用户组的主机分配权限时候使用主机组。
你想要接收的主机的特定数据,一个度量/指标数据。
转化/预处理接收到的指标数据* 存入数据库之前
一个被用于定义问题阈值和“评估”监控项接收到的数据的逻辑表达式
当接收到的数据高于阈值时,触发器从“OK”变成“Problem”状态。当接收到的数据低于阈值时,触发器保留/返回“OK”的状态。
一次发生的需要注意的事情,例如触发器状态改变、发现/监控代理自动注册
提前设置的事件标记*可以被用于事件关联,权限细化设置等。
自动灵活的、精确的关联问题和解决方案
比如说,你可以定义触发器A告警的异常可以由触发器B解决,触发器B可能采用完全不同的数据采集方式。
一个处在“异常”状态的触发器
Zabbix提供的问题管理选项,例如添加评论、确认异常、改变问题级别或者手动关闭等。
预先定义的应对事件的操作
一个动作由操作(例如发出通知)和条件(什么时间进行操作)组成
一个在动作内执行操作的自定义方式; 发送通知/执行远程命令的顺序安排。
发送告警通知的方式;传送途径
关于事件的信心,将通过选设定的媒介途径发送给用户。
一个预定义好的,满足特定条件的情况下,可以在被监控主机上自动执行的命令。
一组可以被应用到一个或多个主机上的实体(监控项,触发器,图形,聚合图形,应用,LLD,Web场景)的集合
模版的应用使得主机上的监控任务部署快捷方便;也可以使监控任务的批量修改更加简单。模版是直接关联到每台单独的主机上。
一组监控项组成的逻辑分组
检查网站可浏览性的一个或多个HTTP请求
Zabbix提供的web界面
-
Zabbix API允许用户使用JSON RPC协议来创建、更新和获取Zabbix对象(如主机、监控项、图形和其他)信息或者执行任何其他的自定义的任务
Zabbix监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等
部署在监控对象上的,能够主动监控本地资源和应用的程序
一个帮助Zabbix Server收集数据,分担Zabbix Server的负载的程序
支持Zabbix组建之间的加密通讯(server, proxy, agent, zabbix_sender 和 zabbix_get 程序)使用TLS(Transport Layer Security )协议。
5、Zabbix 常用监控架构
-
分布式监控 (企业常用) server-proxy-agent
-
server-anget(点对点监控)
监控报警流程图:
6、Zabbix 监控系统监控对象
-
数据库: MySQL,MariaDB,Oracle,SQL Server agent
-
应用软件:Nginx,Apache,PHP,Tomcat agent
-
集群: LVS,Keepalived,HAproxy,RHCS,F5 agent
-
虚拟化: VMware,KVM,XEN ,docker,k8s agent
-
操作系统:Linux,Unix,Windows性能参数 agent
-
硬件: 服务器,存储,网络设备 IPMI
-
网络: 网络环境(内网环境,外网环境) SNMP
IPMI:智能平台管理接口(Intelligent Platform Management Interface)IPMI 能够横跨不同的操作系统、固件和硬件平台,可以智能的监视、控制和自动回报大量服务器的运作状况,以降低服务器系统成本。
SNMP:网络管理协议(SNMP) 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机等)的一种标准协议,它是一种应用层协议。
6.1 Zabbix监控方式
被动模式
-
被动检测:相对于agent而言;agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;
主动模式
-
主动检测:相对于agent而言;agent(active),agent向server请求与自己相关监控项配置,主动地将server配置的监控项相关的数据发送给server;
-
主动监控能极大节约监控server 的资源。 Zabbix由几个主要的软件组件构成,这些组件的功能如下。
7、安装和配置 Zabbix 服务
服务器配置要求:2 安装要求 (zabbix.com)
7.1 实验准备
Centos7.9 系统服务器3台、 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间可以通过主机名互相通信。
1. 所有机器关闭防火墙和selinux
$ setenforing 0 (修改配置文件关闭) $ sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config $ systemctl disable --now firewalld.service
2. 根据架构图,实验基本设置如下:
机器名称 | IP配置 | 服务角色 | 备注 |
---|---|---|---|
zabbix-server | 192.168.153.147 | zabbix-server | 开启 |
zabbix-node1 | 192.168.153.178 | zabbix-agent-node1 | 开启 |
zabbix-node2 | 192.168.153.179 | zabbix-agent-node2 | 开启 |
7.2 安装 Zabbix-server端
安装NGINX
# 安装nginx [root@zabbix-server ~]# vim /etc/yum.repos.d/nginx.repo [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [root@zabbix-server ~]# yum install -y nginx [root@zabbix-server ~]# systemctl enable --now nginx [root@zabbix-server ~]# systemctl status nginx
安装PHP
# 安装epel源
[root@zabbix-server ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
# 安装webtatic 扩展源,安装PHP服务时需要
[root@zabbix-server ~]# yum install -y https://mirror.webtatic.com/yum/el7/epel-release.rpm
[root@zabbix-server ~]# yum install -y https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 安装PHP服务
[root@zabbix-server ~]# yum install php72w-cli php72w-fpm php72w-gd php72w-mbstring php72w-bcmath php72w-xml php72w-ldap php72w-mysqlnd -y
修改nginx配置文件
[root@zabbix-server ~]# vim /etc/nginx/conf.d/zabbix.conf server { listen 80; server_name zabbix.tanke.love; root /app/zabbix; location / { index index.php; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } # 创建站点目录 [root@zabbix-server ~]# mkdir /app/zabbix # 检查配置文件是否正确 [root@zabbix-server ~]# nginx -t # 重新加载nginx配置文件 [root@zabbix-server ~]# systemc reload nginx
修改PHP的服务的启动用户和用户组
# 进行替换 [root@zabbix-server ~]# sed -ri '/^(user|group)/s#apache#nginx#g' /etc/php-fpm.d/www.conf # 进行检查 [root@zabbix-server ~]# egrep '^(user|group)' /etc/php-fpm.d/www.conf user = nginx group = nginx # 创建测试文件 [root@zabbix-server ~]# vim /app/zabbix/info.php <?php phpinfo(); ?> # 启动服务 [root@zabbix-server ~]# systemctl enable --now php-fpm [root@zabbix-server ~]# systemctl status php-fpm
数据库部署
# 添加数据库源 [root@zabbix-server ~]# vim /etc/yum.repos.d/mariadb.repo [mariadb] name = MariaDB baseurl = http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/ gpgkey = http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck = 1 enabled=1 # 安装数据库 [root@zabbix-server ~]# yum install -y mariadb-server # 检查是否安装成功 [root@zabbix-server ~]# rpm -qa | grep -i mariadb MariaDB-compat-10.5.24-1.el7.centos.x86_64 MariaDB-client-10.5.24-1.el7.centos.x86_64 MariaDB-server-10.5.24-1.el7.centos.x86_64 MariaDB-common-10.5.24-1.el7.centos.x86_64 # 启动数据库 [root@zabbix-server ~]# systemctl enable --now mariadb # 数据库基本设置 [root@zabbix-server ~]# mysql_secure_installation mysql_secure_installation是一个用于设置MySQL服务器安全选项的脚本。它可以帮助你设置root密码、删除匿名用户、禁止远程root登录等,以提高MySQL服务器的安全性。 # 创建zabbix用户及数据库 mysql> create database zabbix charset utf8 collate utf8_bin; 2. 创建zabbix用户 mysql> grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix'; #如果数据库与zbx,php不在一起 #grant all on zabbix.* to 'zabbix'@'172.16.1.%' identified by 'zabbix' ;
zabbix server 配置
# 解压安装包 [root@zabbix-server ~]# tar xf zabbix-6.0.26.tar.gz # 切换目录 [root@zabbix-server ~]# cd zabbix-6.0.26/database/mysql # 导入zabbix 相关数据和表结构 [root@zabbix-server ~]# mysql -uroot -pabc123 zabbix < schema.sql [root@zabbix-server ~]# mysql -uroot -pabc123 zabbix < images.sql [root@zabbix-server ~]# mysql -uroot -pabc123 zabbix < data.sql [root@zabbix-server ~]# mysql -uroot -pabc123 zabbix < double.sql [root@zabbix-server ~]# mysql -uroot -pabc123 zabbix < history_pk_prepare.sql
# 安装编译需要的基础环境 [root@zabbix-server ~]# yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel gcc gcc-c++ # 编译安装zabbix 6.0 [root@zabbix-server ~]# cd zabbix-6.0.26 [root@zabbix-server ~]# ./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql --with-net-snmp --with-libxml2 --with-ssh2 --with-openipmi --with-zlib --with-libpthread --with-libevent --with-openssl --with-ldap --with-libcurl --with-libpcre # 编译安装zabbix server [root@zabbix-server ~]# make install # 检查是否安装成功 [root@zabbix-server ~]# echo $? [root@zabbix-server ~]# zabbix_server --version # 编写 zabbix server systemd启动配置文件 [root@zabbix-server ~]# cat /usr/lib/systemd/system/zabbix_server.service [Unit] Description=Zabbix Server with MySQL DB After=syslog.target network.target mysqld.service [Service] Type=simple ExecStart=/usr/local/sbin/zabbix_server -f User=zabbix [Install] WantedBy=multi-user.target # 重新加载systemd启动文件 [root@zabbix-server ~]# systemctl daemon-reload # 启动并且检查 zabbix server [root@zabbix-server ~]# systemctl enable --now zabbix-server [root@zabbix-server ~]# systemctl status zabbix-server
部署前端代码
# 切换前端代码目录 [root@zabbix-server ~]# cd zabbix-6.0.26 # 拷贝前端代码 [root@zabbix-server ~]# cp -r ui/* /app/zabbix/ # 修改属主和数组 [root@zabbix-server ~]# chown -R nginx.nginx /app/zabbix/
7.3 测试访问
游览器输入: http://zabbix.tanke.love
修改php配置文件,解决报错:
# 修改配置文件参数 [root@zabbix-server ~]# egrep -n '^(max_.*_time|post_max)' /etc/php.ini /etc/php.ini:368:max_execution_time = 300 /etc/php.ini:378:max_input_time = 300 /etc/php.ini:656:post_max_size = 80M # 重新启动 PHP [root@zabbix-server ~]# systemctl restart php-fpm
修改时区
文件位置:
/app/code/zbx/conf/zabbix.conf.php
用户名:Admin 密码:zabbix
此故障表示没有安装zabbix-agnet或者客户端宕机
zabbix server 自我测试
# 安装zabbix-agent安装源 [root@zabbix-server ~]# rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-1.el7.noarch.rpm # 安装zabbix-agent2 [root@zabbix-server ~]# yum install -y zabbix-agent2.x86_64 # 修改zabbix-agent2 配置文件参数 [root@zabbix-server ~]# grep '^[a-Z]' /etc/zabbix/zabbix_agent2.conf PidFile=/run/zabbix/zabbix_agent2.pid LogFile=/var/log/zabbix/zabbix_agent2.log LogFileSize=0 Server=127.0.0.1 # zabbix-server所在的主机IP ServerActive=127.0.0.1 # zabbix-server所在的主机IP Hostname=Zabbix server Include=/etc/zabbix/zabbix_agent2.d/*.conf PluginSocket=/run/zabbix/agent.plugin.sock ControlSocket=/run/zabbix/agent.sock Include=./zabbix_agent2.d/plugins.d/*.conf # 启动zabbix-agent2 [root@zabbix-server ~]# systemctl enable --now zabbix-agent2
再次访问web界面
7.4 zabbix 主机图形乱码解决
原因:zabbix显示中文的字体有问题,导致显示中文异常。 解决:把zabbix中文字体替换即可。
# 切换值zabbix 字体目录 [root@zabbix-server ~]# cd /app/zabbix/assets/fonts/ [root@zabbix-server fonts]# ls DejaVuSans.ttf # 备份原有字体 [root@zabbix-server fonts]# cp DejaVuSans.ttf{,.bak} # 添加新的字体 [root@zabbix-server fonts]# ls msyh.ttc # 重命名新字体,不需要重新启动nginx [root@zabbix-server fonts]# mv msyh.ttc DejaVuSans.ttf
注意:修改成新的字体后,但是仍然有些许字段没有改变,生产环境建议使用英文版的。
8、配置文件详解
zabbix_server主配置文件详解
[root@zabbix-server ~]# grep "^[a-Z]" /etc/zabbix/zabbix_server.conf ListenPort=10051 LogFile=/tmp/zabbix_server.log DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix Timeout=4 AlertScriptsPath=${datadir}/zabbix/alertscripts LogSlowQueries=3000 StatsAllowedIP=127.0.0.1
参数 | 说明 |
---|---|
ListenPort=10051 | Zabbix服务器监听的端口号,默认为10051 |
LogFile=/tmp/zabbix_server.log | Zabbix服务器日志文件的路径,默认为/tmp/zabbix_server.log。 |
DBHost=localhost | Zabbix服务器连接的数据库主机名,默认为localhost。 |
DBName=zabbix | Zabbix服务器连接的数据库名称,默认为zabbix。 |
DBUser=zabbix | Zabbix服务器连接的数据库用户名,默认为zabbix。 |
DBPassword=zabbix | Zabbix服务器连接的数据库密码,默认为zabbix。 |
Timeout=4 | Zabbix服务器的超时时间,单位为秒,默认为4秒。 |
AlertScriptsPath=${datadir}/zabbix/alertscripts | Zabbix服务器报警脚本的存放路径,默认为{datadir}/zabbix/scripts。 |
LogSlowQueries=3000 | Zabbix服务器记录慢查询的阈值,单位为毫秒,默认为3000毫秒。 |
StatsAllowedIP=127.0.0.1 | 允许访问Zabbix服务器统计信息的IP地址,默认为127.0.0.1(本地回环地址)。 |
zabbix-agent2配置文件参数解析
[root@zabbix-server ~]# grep "^[a-Z]" /etc/zabbix/zabbix_agent2.conf PidFile=/run/zabbix/zabbix_agent2.pid LogFile=/var/log/zabbix/zabbix_agent2.log LogFileSize=0 Server=127.0.0.1 #被动模式,服务端主动拉取数据 ServerActive=127.0.0.1 #主动模式,客户端主动推送 Hostname=Zabbix server Include=/etc/zabbix/zabbix_agent2.d/*.conf PluginSocket=/run/zabbix/agent.plugin.sock ControlSocket=/run/zabbix/agent.sock Include=./zabbix_agent2.d/plugins.d/*.conf
参数 | 解释 | |
---|---|---|
PidFile=/run/zabbix/zabbix_agent2.pid | 指定Zabbix代理进程ID文件的路径,默认为/run/zabbix/zabbix_agent2.pid | |
LogFile=/var/log/zabbix/zabbix_agent2.log | 指定Zabbix代理日志文件的路径,默认为/var/log/zabbix/zabbix_agent2.log。 | |
LogFileSize=0 | 指定Zabbix代理日志文件的大小限制,单位为字节,默认为0,表示不限制大小。 | |
Server=127.0.0.1 | 指定Zabbix服务器的IP地址,默认为127.0.0.1。 | |
ServerActive=127.0.0.1 | 指定Zabbix服务器的活动IP地址,默认为127.0.0.1。 | |
Hostname=Zabbix server | 指定Zabbix代理的主机名,默认为"Zabbix server" | |
Include=/etc/zabbix/zabbix_agent2.d/*.conf | 指定自定义监控文件配置路径。 | |
PluginSocket=/run/zabbix/agent.plugin.sock | 指定插件套接字的路径,默认为/run/zabbix/agent.plugin.sock。 | |
ControlSocket=/run/zabbix/agent.sock | 指定控制套接字的路径,默认为/run/zabbix/agent.sock。 | |
Include=./zabbix_agent2.d/plugins.d/*.conf |
9、zabbix agent版本差异解释(了解)
zabbix-agent:
-
C语言开发,基于传统的单线程设计,使用单个进程来处理所有的数据收集和处理任务。
zabbix-agent2:
-
GO语言和C语言混合开发,基于多线程设计,采用了更先进的异步架构,能够更高效地处理并发请求和大量数据。
10、监控任意主机
监控步骤:
-
被监控端安装客户端工具,并修改配置文件中,server端的主机IP地址。
-
启动客户端工具,并且查看服务是否正常启动。
(ps netstat)
-
服务端 web界面进行配置。
10.1 快速添加新的主机
-
被监控端安装客户端工具zabbix-agent
-
通过web界面配置过的被监控主机进行克隆。
流程图如下:
11、主机群组使用
将多个相同服务
的主机,归纳一个主机群组,该主机群组可针对服务设定相同的监控项或者自定义监控项,比如多个nginx,他们所监控的指标一致,可以为它们专门创建一个主机群组,例如web-servers。实现统一,方便后期管理。
12、自定义监控模版
12.1 boot分区剩余容量监控
-
历史数据(history)和趋势数据(trends)是Zabbix中存储收集到的数据的两种方式。
-
历史数据:每一个收集到的监控数据
-
趋势数据:按小时统计计算的平均值数据
强烈建议将历史数据保留时长设置得尽可能的小。这么做可以让数据库不会因存储了大量的历史数据,导致超负荷运行。可以选择长时间的保留趋势数据,来替代长期需要的历史数据。例如:设置成保留14天历史数据和5年的趋势数据。
创建图形
添加主机
查看监控指标
或者:
测试监控数据变化
# 被监控端boot分区压测 [root@test01 boot]# dd if=/dev/zero of=/boot/1.txt bs=1M count=100 [root@test01 boot]# dd if=/dev/zero of=/boot/1.txt bs=1M count=50 [root@test01 boot]# dd if=/dev/zero of=/boot/1.txt bs=1M count=20 [root@test01 boot]# rm -rf /boot/1.txt
被监控端压测完成以后,回到监控面板查看图形
12.2 网卡出入流量监控
12.2.1 ens33网卡进入流量监控
12.2.2 ens33网卡出去流量监控
选择配置-->模版-->监控项
12.3 监控服务端口
创建图形
监控网卡的上下流量总和
创建图形
12.4 监控系统进程数量
-
系统总进程数量
创建监控项图形
-
运行中的进程数量
-
监控系统中沉睡的进程数量
12.5 监控cpu的状态
-
cpu 五分钟负载情况
-
cpu 1分钟负载情况
-
cpu 15分钟负载情况
12.5 监控文件的修改
练习题
12.6 监控磁盘IO的情况
练习题
12.7 监控磁盘的总和
练习题
13、自定义监控设置(Items)
客户端(安装有zabbix-agent端):
-
通过命令、脚本取出需要监控的值;
-
安装zabbix的格式,编写配置文件、创建键值;格式为:key=values,key为监控项名称。values为监控项的值。通过shell命令取出。
-
重启客户端服务,并测试是否取出数据。
zabbix-agent2 -t Key名
服务端:
-
服务端命令行测试是否
get
到客户端自定义监控的值; -
web界面:获取到的键值与监控项关联;
-
web界面:测试。
13.1 自定义监控项编写
小试牛刀:监控web服务80端口
# 命令行取值 [root@test01 ~]# ss -tunlp | grep -w 80 | wc -l 1
# 查看自定监控配置文件存放路径 [root@test01 ~]# grep -i "include" /etc/zabbix/zabbix_agent2.conf ... Include=/etc/zabbix/zabbix_agent2.d/*.conf ... # 编写自定义监控项配置文件 [root@test01 ~]# vim /etc/zabbix/zabbix_agent2.d/web_status.conf #UserParameter=key,cmd #UserParameter=web_port_status,bash /check_service/xxx.sh UserParameter=web_port_status,ss -tunlp | grep 80 | wc -l # 重启客户端服务 [root@test01 ~]# systemctl restart zabbix-agent2 [root@test01 ~]# systemctl status zabbix-agent2
Include=/etc/zabbix/zabbix_agent2.d/*.conf
自定义监控项配置文件默认位置。UserParameter=key,cmd UserParemeter=固定格式,表示要自定义监控项。 key表示键值名称,也就是自定义监控项的名称,命名最好为 单词+"." cmd表示取值的命令或者脚本。
# 客户端本地测试 [root@test01 ~]# zabbix_agent2 -t web_port_status web_port_status [s|1]
解释:
web_port_status
表示自定义监控的Key,非配置文件名称。
# 服务端测试,安装测试工具 [root@zabbix-server ~]# yum install -y zabbix-get [root@zabbix-server ~]# zabbix_get -s 192.168.174.60 -p 10050 -k web_port_status 1
解释:
-s 客户端IP地址;
-p 客户端zabbix-agent 端口,默认:10050;
-k 客户端自定义监控项Key名。
web界面添加自定义监控项
配置-->主机-->选择主机监控项
参数解释:
历史数据保留时长:根据服务器的配置决定,建议保留时长不宜过久;
趋势存储时间:通常趋势数据设置的的留存时间应当比历史数据留存时间设置的长。
详细信息参考官方文档:4 历史数据与趋势数据 (zabbix.com)
web 查看自定义监控项数据
13.2 获取不到内容报错解决
报错内容
Unknown metric web_port_statuss
-
客户端测试时,自定义监控名称写错;
-
自定义监控项配置文件内部语法错误,例如:固定格式、命令;
-
自定义监控项创建完成没有重启客户端。
13.3 使用脚本定义自定义监控项
详细请见附件基于脚本实现自定义监控项
14、 自定义图形
14.1 自定义单个监控项图形
查看自定义图形
14.2 仪表盘创建(聚合图形)
仪表盘用于,将我们自定以图像进行集中值一个界面进行展示,使得我们更方便的找到服务器的瓶颈。
查看自定义仪表盘
15、触发器器设置( Triggers)
15.1 触发器介绍
触发器是条件的定义
,一个触发器是根据一个监控项的返回值
,将之对比预先设置的阈值
,当监控项返回了不符合预定义的值范围后,就进行触发下一步操作的警戒线,一般要对创建的监控项设置触发器以及触发方式和值的大小
-
可以在指定主机上创建触发器,只是针对指定主机有效;
-
也可以在指定
模板上创建触发器
,则使用此模板的所有主机都有效,一个模板中可以有多触发器;触发器中使用的表达式是非常灵活的。你可以使用它们去创建关于监控统计的复杂逻辑测试。
15.2 触发器严重性
触发器严重性表示触发器的重要程度
,Zabbix支持下列6种触发器的严重程度:
严重性功能:
-
通过不同的颜色区分不同的严重程度;
-
报警音频,不同的音频代表不同的严重程度;
-
用户媒介,不同的用户媒介(通知渠道)代表不同的严重程度。例如,短信 - 高严重性,email - 其他;
-
不同的严重性通过触发器执行对应的条件动作。
15.3 配置触发器
15.3.1 触发器示例一:web服务端口
解释:
监控项:自定义监控项默认没有触发器,需要自己去添加,选择自定义监控项的名称;
功能:
last
函数:表示最新的值和最近一次的值作比较。结果:如果自定义监控项取出的值为0时,触发报警。
解释:表达式 zabbix5和zabbix6之间的区别
zabbix 6
last(/nginx01/web_port_status)=0 # 函数(/主机/自定义监控项)=0
zabbix 5
{nginx01:web_port_status.last()}=0 # {主机:自定义监控项名称.功能函数}=0
测试触发器是否生效
# 客户端关闭nginx [root@test01 ~]# systemctl stop nginx
web界面查看
15.3.2 触发器示例二:cpu 1分钟负载
$ dd if=/dev/zero of=/1.txt bs=1M count=4000
查看触发器
表达式:last(/nginx_status_monitor/system.cpu.load[all,avg1])>=0.4
解释:表达式函数(/监控模版/自定义监控项)>=0.4
图形查看触发器
15.4 触发器常用表达式功能函数介绍
触发器示例场景
# 触发器示例场景1:www.zabbix.com的处理器负载过高 last(www.zabbix.com/system.cpu.load[all,avg1])>5 服务器是www.zabbix.com,监控项键值是system.cpu.load[all,avg1] 通过使用函数“last()”获取最新的值。最后>5 意味着当www.zabbix.com最新获取的处理器负载值大于5时触发器就会处于异常状态。 # 触发器示例场景2:当前处理器负载大于5或者最近10分钟内最小值大于2,表达式为True last(www.zabbix.com/system.cpu.load[all,avg1]) > 5 and last(www.zabbix.com/system.cpu.load[all.avg1].min(10m)) > 2 # 触发器示例场景3:监控/etc/passwd 文件是否被修改,当文件/etc/passwd的checksum值与最近的值不同时,表达式为true。 diff(www.zabbix.com/vfs.file.cksum[/etc/passwd]) = 1 # 触发器示例场景4:如果在最后五分钟期间eth0网卡接收到的网络字节数最小值超过 100 KB 将触发。 min(/Zabbix server/net.if.in[eth0,bytes],5m)>100K # 触发器实力场景5:Zabbix server上的处理器负载太高。 last(/Zabbix server/system.cpu.load[all,avg1])>5 ‘/Zabbix server/system.cpu.load[all,avg1]‘ 给出了被监控参数的简短名称。它指定了服务器是“Zabbix server”,监控项的键值是“system.cpu.load[all,avg1]”。通过使用函数“last()”获取最新的值。最后,“>5”意味着当Zabbix server最新获取的处理器负载值大于5时触发器就会处于异常状态。 # 触发器示例场景6:/etc/passwd文件被修改 (last(/www.example.com/vfs.file.cksum[/etc/passwd],#1)<>last(/www.example.com/vfs.file.cksum[/etc/passwd],#2))=1 当 /etc/passwd 校验和的前一个值与最近的值不同时,表达式为真。类似的表达式可能有助于监控重要的文件变化 ,例如 /etc/passwd、/etc/inetd.conf、/kernel 等。 # 触发器示例场景7:服务器网卡从 Internet 下载一个大文件。 min 函数的使用: min(/www.example.com/net.if.in[eth0,bytes],5m)>100K 在过去5分钟内,eth0上接收字节数大于100kb时,表达式为true。 # 触发器示例场景8:服务器无法访问。 count(/example.example.com/icmpping,30m,,"0")>5、 如果主机“example.example.com” 在过去 30 分钟内超过 5 次无法访问,则表达式为真。
16、zabbix监控模版
16.1 zabbix server自带模版
Linux by Zabbix agent
名称 | 解释 |
---|---|
Linux: Host name of Zabbix agent running | Linux:Zabbix代理运行的主机名 |
Linux: Zabbix agent ping | Linux:Zabbix代理ping |
Linux: Version of Zabbix agent running | Linux:运行Zabbix代理的版本 |
Linux: Maximum number of open file descriptors | 打开文件描述符的最大数量 |
Linux: Maximum number of processes | Linux:进程的最大数量 |
Linux: Number of processes | Linux:进程数 |
Linux: Number of running processes | Linux:正在运行的进程数 |
Linux: System boot time | Linux:系统启动时间 |
Linux: Interrupts per second | Linux:每秒中断次数 |
Linux: Load average (1m avg) | Linux:平均负载(平均1分钟) |
Linux: Load average (5m avg) | Linux:平均负载(平均5分钟) |
Linux: Load average (15m avg) | Linux:平均负载(平均15分钟) |
Linux: Number of CPUs | Linux:CPU数量 |
Linux: Context switches per second | Linux:每秒上下文切换次数 |
Linux: CPU idle time: Linux: CPU utilization | Linux:CPU空闲时间:Linux:CPU利用率 |
Linux: CPU guest time | Linux 中的 CPU guest time 是指虚拟机在宿主机上运行期间,CPU 资源被占用的时间 。这个指标可以帮助管理员了解虚拟机对宿主机 CPU 资源的使用情况,以便进行性能优化和资源分配。 |
Linux: CPU guest nice time | Linux 中的 CPU guest nice time 是指虚拟机在宿主机上运行期间 ,CPU 资源被占用的 nice 时间 。nice 值是 Linux 系统中用于控制进程优先级的一个参数,范围从 -20(最高优先级)到 19(最低优先级)。 |
Linux: CPU idle time | 在 Linux 系统中,CPU idle time 指的是 CPU 处于空闲状态的时间 。这是系统性能监控中的一个重要指标,因为它可以帮助你理解系统资源是否得到了充分利用或者是否存在过剩的计算能力。 |
Linux: CPU interrupt time | Linux 中的 CPU interrupt time 是指 CPU 在处理中断请求时所花费的时间 。中断是计算机系统中的一种机制,用于响应硬件设备或软件程序的请求,以便进行相应的操作。 |
Linux: CPU iowait time | 在 Linux 中,CPU iowait time(I/O等待时间)是指 CPU 等待 I/O 操作完成的时间 。当 CPU 需要从磁盘、网络或其他慢速设备读取数据时,如果该数据尚未准备好,CPU 就会进入等待状态。iowait 是衡量系统 I/O 性能的关键指标之一,它可以帮助识别是否存在 I/O 瓶颈问题。 |
Apache by HTTP
名称 | 解释 |
---|---|
Apache: Service ping | httpd服务是否存活 |
Apache: Service response time | Apache 服务器的响应时间。是指从客户端发送请求到接收到服务器响应所需的时间。这个指标对于评估服务器性能和用户体验非常重要。 |
Apache: Get status: Apache: Total workers idle | Apache: Total workers idle 是指当前空闲的工作进程数量。这个指标可以帮助你了解服务器的负载情况,以及是否需要增加或减少工作进程的数量来优化性能。 |
Apache: Get status: Apache: Total workers busy | Apache: Total workers busy 是指当前正在处理请求的工作进程数量。这个指标可以帮助你了解服务器的负载情况,以及是否需要增加或减少工作进程的数量来优化性能。 |
Apache: Get status: Apache: Workers waiting for connection | Apache: Workers waiting for connection 是指当前正在等待连接的工作进程数量。这个指标可以帮助你了解服务器的负载情况,以及是否需要增加或减少工作进程的数量来优化性能。 |
Apache: Get status: Apache: Workers starting up | Apache: Workers starting up 是指当前正在启动的工作进程数量。这个指标可以帮助你了解服务器的负载情况,以及是否需要增加或减少工作进程的数量来优化性能。 |
Apache: Get status: Apache: Workers slot with no current process | 指当前没有正在处理请求的工作进程的插槽数量。 |
Apache: Get status: Apache: Workers sending reply | 指当前正在发送响应的工作进程数量。 |
Apache: Get status: Apache: Workers reading request | 指当前正在读取请求的工作进程数量。 |
Apache: Get status: Apache: Workers logging | 指当前正在记录日志的工作进程数量。 |
Apache: Get status: Apache: Workers keepalive (read) | 指当前正在处理 Keep-Alive 连接的工作进程数量。 |
Apache: Get status: Apache: Workers finishing | 指当前正在结束请求的工作进程数量。 |
Apache: Get status: Apache: Workers DNS lookup | 指当前正在执行 DNS 查询的工作进程数量。 |
Apache: Get status: Apache: Workers closing connection | 指当前正在关闭连接的工作进程数量。 |
Apache: Get status: Apache: Workers idle cleanup | 指当前正在执行空闲清理的工作进程数量。 |
Apache: Get status: Apache: Version | 指 Apache HTTP Server 的版本号。 |
Apache: Get status: Apache: Uptime | 指 Apache HTTP Server 自上次启动以来的运行时间。 |
Apache: Get status: Apache: Requests per second | 指 Apache HTTP Server 每秒处理的请求数量。 |
Apache: Get status: Apache: Total requests | 指 Apache HTTP Server 自上次启动以来处理的总请求数量。 |
Apache: Get status | 指获取 Apache HTTP Server 的状态信息。 |
Apache: Get status: Apache: Bytes per second | 指 Apache HTTP Server 每秒传输的字节数。 |
Apache: Get status: Apache: Total bytes | 指 Apache HTTP Server 自上次启动以来传输的总字节数。 |
Nginx by Zabbix agent
17、触发器 Action
17.1 Action 动作介绍
Zabbix中的Action是根据不同的事件状态执行相应操作的功能。
在Zabbix监控系统中,Action是一个核心功能,它允许你基于事件的不同状态来执行预定义的操作
。这些操作可以极大地自动化日常的运维工作,减少手动干预的需要。以下是Zabbix Action的一些主要特点和用途:
-
自动响应:当监控系统检测到问题(如触发器状态变化)时,可以自动执行一系列操作,而不是需要人工介入。
-
可配置性:你可以根据需要自定义Action,例如发送报警通知、执行远程命令等。
-
权限管理:为了执行某些操作,如重启服务,可能需要相应的权限。因此,配置sudo权限或修改zabbix配置文件以允许接收远程命令是常见的设置步骤。
-
报警通知:最常见的用法是在检测到问题时,通过邮件、短信或其他方式将报警信息发送给指定的用户。
-
远程命令执行:可以配置Action来在特定条件下执行远程命令,如系统重启、服务重启等,这通常需要确保Zabbix用户具有执行这些命令的权限。
-
日志记录:所有执行的Action都会被记录在Zabbix的日志中,便于后续的问题排查和分析。
17.2 告警分类
报警方式 | 企业使用场景 |
---|---|
邮件告警 | 企业邮箱,免费试用 |
企业微信/飞书-告警机器人 | 企业微信,免费使用 |
OA系统(钉钉) | 钉钉,免费使用 |
短信 | 0.04元/条左右,云厂商,收费 |
电话 | 收费 |
17.2 邮箱告警
详细请见附件:zabbix 6.0 结合邮箱触发告警
17.3 飞书告警
详细请见附件:zabbix 6.0结合飞书触发告警
18、宏
18.1 介绍
Zabbix中的宏是一种用于简化配置和提高可重用性的功能强大的工具。在Zabbix中,宏可以被视为一种变量,用于保存预设的文本模式,并在调用时将其替换为相应的值。例如,内置宏{HOST.NAME}会在使用中自动替换为对应主机的名称。
18.2 设置优先级
-
全局宏:作用于所有模板和主机,但优先级最低。
-
模板宏:仅适用于关联的模板。
-
主机宏:特定于单个主机。
18.3 作用及场景
-
简化配置:通过使用宏,可以在多个地方重复使用相同的值,而不必手动更改每个实例。
-
统一管理:方便后期统一修改和维护,例如,如果需要更改服务器名称,只需更改全局宏一次即可。
实际应用场景
-
监控项和触发器:在创建监控项或触发器时,可以使用宏来定义动态的名称或参数值。
-
自发现规则:在自发现规则中使用宏,可以让规则更加灵活,适应不同的监控环境。
-
SNMP监控:在添加主机的SNMP监控时,可以使用宏来调用团体名,从而简化配置过程。
总的来说,Zabbix宏是系统管理员在配置和管理监控系统时的得力助手,它不仅可以减少重复性工作,还能提高系统的可维护性和灵活性。
18.4 宏设置
19、zabbix 自动发现
为了满足监控企业成千上万台服务器,因此我们需要使用Zabbix批量监控来实现。自动发现功能是一个强大的网络监控工具,它允许系统管理员无需手动添加即可自动检测网络中的设备和服务。以下是该功能的详细介绍:
-
自定义Key的创建
-
确定Linux命令:首先需要明确要在客户端执行哪些Linux命令来收集数据。
-
配置监控项:接着创建Zabbix监控项配置文件,定义自定义的key,这个key将与前面确定的Linux命令相对应。
-
服务端验证:在Zabbix服务端进行验证,确保新建的监控项能够正确反映客户端的状态。
-
-
Web界面操作
-
创建模板:在Zabbix的Web界面上创建一个新的监控项模板。
-
创建监控项和触发器:为模板添加具体的监控项和触发器,用于定义何时触发告警。
-
创建图形:设计并创建用于展示监控数据的图形。
-
关联主机:将发现的主机与之前创建的模板关联起来。
-
设置邮件报警:配置邮件通知,当触发器被触发时发送警报。
-
-
Agent服务启动
-
启动zabbix-agent服务:确保被监控的客户端上的Zabbix Agent服务已经启动,这样才能进行有效的数据采集。
-
-
配置自动发现规则
-
创建发现规则:在Zabbix中配置自动发现规则,这些规则定义了如何在网络上搜索和识别设备。
-
完成规则创建:按照向导完成自动发现规则的创建。
-
监测自动发现:创建完规则后,可以在“监测”菜单下的“自动发现”选项中查看自动发现的结果。
-
-
配置动作
-
选择动作类型:根据发现的新主机进行相应的配置动作,如添加主机、应用模板等。
-
创建动作:点击“配置”菜单下的“动作”,选择“发现动作”并创建所需的动作。
-
总的来说,Zabbix 6.0的自动发现是一个强大的功能,它可以大大简化网络设备的监控配置过程,提高监控效率和准确性。通过上述步骤,可以实现对网络中新加入或已有设备的自动监控,无需手动逐一添加。
查看自动发现主机
20、zabbix自动注册
20.1 zabbix自动注册介绍
Zabbix 自动注册是一种方便的功能,它允许 Zabbix Agent 主动向 Zabbix Server 注册自己,而无需手动在 Zabbix 中为每个主机创建条目。以下是实现 Zabbix 自动注册的关键步骤:
-
配置元数据:在 Zabbix Agent 的配置文件中,需要设置一些参数,如
Hostname
、HostMetadata
等客户端的元数据信息,以便 Zabbix Server 根据这些信息来匹配服务器的主机或模板。 -
启用 Agent 的主动模式:确保 Zabbix Agent 是以主动模式运行的,即 Agentd 必须安装并启动。在被动模式下,Zabbix Server 会主动扫描局域网中的设备,这在 Agent 数量较多时可能会给 Zabbix Server 带来较大压力。
-
修改 zabbix_agentd.conf 文件:在客户端的 zabbix_agentd.conf 文件中,需要定义要执行的监控命令和自定义的 key。这些 key 将与服务器端的监控项相对应。
通过以上步骤,可以实现 Zabbix 的自动注册功能,从而提高监控效率和准确性。在配置过程中,需要注意 Zabbix Agent 和 Server 之间的通信安全,确保只有授权的设备能够注册到 Zabbix 监控系统中。此外,定期检查和更新配置文件也是维护自动注册系统正常运行的重要环节。
20.2 zabbix自动注册操作
客户端配置
# 被监控端修改zabbix-agent2配置文件,开启主动模式 [root@web02 ~]# vim /etc/zabbix/zabbix_agent2.conf ServerActive=192.168.174.58 # 注释掉配置文件的主机名。 # Hostname=Zabbix server # 获取当前主机名 HostnameItem=system.hostname # 获取当前主机元数据信息 HostMetadataItem=system.uname # 重启zabbix-agent2 [root@web02 ~]# systemctl restart zabbix-agent2 [root@web02 ~]# egrep -n "^Server|^Host" /etc/zabbix/zabbix_agent2.conf 80:Server=192.168.174.58 133:ServerActive=192.168.174.58 153:HostnameItem=system.hostname 176:HostMetadataItem=system.uname
服务端配置
21、zabbix Proxy
21.1 介绍
Zabbix是一款开源的企业级网络监控软件,可以监测服务器、网络设备、应用程序等各种资源的状态和性能指标。在大型环境中,如果只有一个Zabbix Server来监控所有的节点,可能会遇到性能瓶颈
和数据处理
难题。
为了解决这个问题,Zabbix提供了分布式监控的功能,允许多个Zabbix Server之间通过代理和数据共享来协同完成监控任务。其中,zabbix-proxy就是一种可选的代理,它可以缓解Zabbix Server的负担,提高监控效率。
zabbix-proxy可以安装在局域网内的节点上,负责采集这些节点的监控数据,并将数据转发给Zabbix Server。相比于Zabbix Server直接采集数据,
zabbix-proxy的优势在于:减轻Zabbix Server的负荷,提高监控效率。可以在低带宽、高延迟的网络环境下工作,避免数据传输的瓶颈。可以在多个Zabbix Server之间共享数据,提高监控数据的可用性和容错能力。需要注意的是,zabbix-proxy仅负责数据采集和转发,不具备数据处理和存储的能力。因此,在使用分布式监控时,需要根据实际情况合理安排Zabbix Server和zabbix-proxy的数量和布局,以满足监控要求和性能需求。
21.2 安装
安装数据库
# 安装mariadb 略 # 创建用户 MariaDB [(none)]> create database zabbix_proxy character set utf8 collate utf8_bin; MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@'%' identified by 'zabbix'; MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix'; MariaDB [(none)]> grant all privileges on zabbix_proxy.* to zabbix@'127.0.0.1' identified by 'zabbix'; MariaDB [(none)]> flush privileges;
安装zabbix-proxy
# 安装zabbix_proxy [root@web01 zabbix]# yum -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy
导入数据SQL文件
[root@web01 zabbix]# mysql -uroot zabbix_proxy < /usr/share/zabbix-sql-scripts/mysql/proxy.sql
修改配置文件
# 备份文件 [root@web01 zabbix]# cp /etc/zabbix/zabbix_proxy.conf{,.bak} # 修改文件 [root@web01 zabbix]# vim /etc/zabbix/zabbix_proxy.conf #指定zabbix-server的IP地址 Server=192.168.174.58 #日志文件路径必须指定 LogFile=/var/log/zabbix/zabbix_proxy.log #pid文件路径必须指定 PidFile = /run/zabbix/zabbix_proxy.pid #当前主机的主机名,注意这里一定要和hostname的结果一致 Hostname=zabbix-proxy DBName=zabbix_proxy DBUser=zabbix DBPassword=zabbix #指定mariadb的的socket文件 DBSocket=/var/lib/mysql/mysql.sock #关闭数据库版本检查 AllowUnsupportedDBVersions=1 # 启动zabbix-proxy [root@web01 zabbix]# systemctl enable --now zabbix-proxy [root@web01 zabbix]# systemctl status zabbix-proxy
zabbix-agent2配置
[root@web03 ~]# hostname -I 192.168.174.62 # 修改配置zabbix-agent2配置文件 [root@web03 ~]# vim /etc/zabbix/zabbix_agentd.conf # 这里不在写zabbix server的地址,写zabbix proxy主机的地址 Server=192.168.174.60 # 被动模式 ServerActive=192.168.174.60:10051 # 主动模式 #此值也必须和hostname的值一致 Hostname=web03 # 重启服务 [root@web03 ~]# systemctl restart zabbix-agent2 [root@web03 ~]# systemctl status zabbix-agent2
zabbix 服务端 web界面配置
配置主机
注意:如果主机可用性长时间没有变绿,则先重启被监控端zabbix-agnet2,和proxy端的zabbix-proxy。
23、zabbix结合Grafana实现图形展示
详细请见附件zabbix 6.0结合Grafana实现图像展示
#####