Zabbix应用

发布于:2025-07-25 ⋅ 阅读:(13) ⋅ 点赞:(0)

目录

简介

一、Zabbix网络自动发现

1.1 环境准备

1.2 客户端配置Zabbix Agent

1.3 创建网络自动发现规则

1.4 创建自动发现动作

1.5 验证自动发现效果

二、Zabbix自动注册

2.1 清理自动发现配置

2.2 配置Agent自动注册参数

2.3 创建自动注册动作

2.4 验证自动注册效果

三、监控Nginx服务

3.1 部署Nginx并启用状态模块

3.2 编写Nginx状态监控脚本

3.3 配置自定义Key

3.4 在服务端验证自定义Key

3.5 创建Nginx监控模板

3.6 应用模板至主机

四、Zabbix邮件报警

4.1 配置告警媒介(邮件服务器)

4.2 配置用户告警媒介

4.3 创建触发器动作

4.4 测试邮件告警

总结


简介

在现代运维工作中,一个高效的监控系统能够实现自动化管理,极大减轻运维人员的负担。Zabbix作为一款强大的开源监控工具,提供了自动发现、自动注册、自定义监控以及告警通知等一系列高级功能。本文将详细介绍这些功能的实现过程,附带完整的命令解释和配置说明,帮助运维人员快速掌握Zabbix的企业级应用。

一、Zabbix网络自动发现

Zabbix的网络自动发现功能能够在指定IP范围内自动检测并管理主机,特别适合快速部署和动态变化的IT环境。其核心优势在于加快部署速度、简化管理流程,并避免过度管理。

1.1 环境准备

本次实战环境使用openEuler 24.03操作系统,具体资源清单如下:

操作系统

配置

主机名

IP地址

角色

openEuler 24.03

2C4G

zabbix

192.168.207.137

Zabbix服务端

openEuler 24.03

2C4G

server01

192.168.207.138

被监控节点

openEuler 24.03

2C4G

server02

192.168.207.139

被监控节点

1.2 客户端配置Zabbix Agent

在所有被监控节点(以server01为例)上配置Zabbix Agent,使其能够与服务端通信:

[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf

配置文件关键参数说明:

# 指定Zabbix服务端IP,允许该IP从Agent获取数据(被动模式)
Server=192.168.207.137
# 指定Zabbix服务端IP,Agent主动向该IP发送数据(主动模式)
ServerActive=192.168.207.137
# 主机名,需与服务端配置一致
Hostname=server01

配置完成后重启Agent使配置生效:

[root@server01 ~]# systemctl restart zabbix-agent
1.3 创建网络自动发现规则

通过Zabbix Web界面创建自动发现规则,步骤如下:

  1. 登录Zabbix Web界面,导航至「数据采集」→「自动发现」→「创建发现规则」
  2. 配置关键参数:
  • 名称:自定义规则名称(如“自动发现规则”)
  • 由agent代理程序自动发现:选择“No proxy”(由服务端直接执行)
  • IP范围:指定待发现的IP地址范围,支持多种格式:
  • 单个IP:​​192.168.207.138​
  • 范围:​​192.168.207.1-255​
  • 子网:​​192.168.207.0/24​
  • 混合列表:​​192.168.207.138,192.168.207.139,192.168.4.0/24​
  • 更新间隔:设置规则执行频率(如60秒)
  • 检查:配置发现方式,选择“Zabbix客户端”,端口10050,键值​​system.uname​​(获取系统信息)
  • 设备唯一性准则:选择“IP地址”或“Zabbix客户端:system.uname”,避免重复发现
  • 已启用:勾选启用规则
1.4 创建自动发现动作

发现主机后,需要通过动作配置自动执行的操作(如添加主机、关联模板等):

  1. 导航至「告警」→「动作」→「发现动作」→「创建动作」
  2. 配置动作参数:
  • 名称:自定义动作名称(如“自动发现动作”)
  • 条件:关联之前创建的发现规则
  1. 配置操作(「操作」选项卡):
  • 添加主机:自动将发现的主机添加到Zabbix
  • 添加到主机群组:选择目标主机组(如“Linux servers”)
  • 链接到模板:关联监控模板(如“Linux by Zabbix agent”)
1.5 验证自动发现效果
  1. 查看发现状态:导航至「监测」→「自动发现」,确认已发现目标主机
  2. 查看主机列表:导航至「数据采集」→「主机」,确认发现的主机已被添加并关联模板

二、Zabbix自动注册

自动注册适用于未知IP地址范围的场景,由Agent主动向服务端发起注册请求,简化动态环境的管理。

2.1 清理自动发现配置

若已配置自动发现,需先清理相关配置避免冲突:

  1. 删除「告警」→「动作」中的发现动作
  2. 删除「数据采集」→「自动发现」中的发现规则
  3. 删除「数据采集」→「主机」中通过自动发现添加的主机
2.2 配置Agent自动注册参数

修改Agent配置文件,启用自动注册功能:

[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf

关键参数说明(补充或修改):

# 必须配置,Agent通过该地址主动注册
ServerActive=192.168.207.137
# 可选参数:通过系统函数获取主机名(当Hostname未配置时生效)
# HostnameItem=system.hostname
# 可选参数:自定义主机元数据,用于服务端识别主机类型
# HostMetadata=Linux_host

重启Agent:

[root@server01 ~]# systemctl restart zabbix-agent
2.3 创建自动注册动作
  1. 导航至「告警」→「动作」→「自动注册动作」→「创建动作」
  2. 配置动作参数:
  • 名称:自定义名称(如“自动注册动作”)
  • 条件:可根据HostMetadata过滤主机(如“Host metadata包含Linux”)
  1. 配置操作(与自动发现动作类似):
  • 添加主机至主机组
  • 关联监控模板(如“Linux by Zabbix agent”)
2.4 验证自动注册效果

导航至「数据采集」→「主机」,确认Agent已主动注册并显示在主机列表中。

三、监控Nginx服务

Zabbix通过内置Key可满足大部分监控需求,对于特殊场景(如Nginx状态监控),需通过自定义Key实现。

3.1 部署Nginx并启用状态模块

在被监控节点(如server01)上部署Nginx并启用状态统计模块:

  1. 添加Nginx源:
[root@server01 ~]# cat > /etc/yum.repos.d/nginx.repo << "EOF"
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/8/x86_64
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/centos/8/x86_64
gpgcheck=0
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
EOF
  1. 安装Nginx:
[root@server01 ~]# dnf -y install nginx
  1. 配置Nginx状态页面:
[root@server01 ~]# vim /etc/nginx/conf.d/default.conf

在​​server​​块中添加以下配置:

location /nginx_status {
    stub_status on;    # 启用状态统计
    access_log off;    # 关闭该路径的访问日志
}
  1. 启动Nginx并设置开机自启:
[root@server01 ~]# systemctl start nginx
[root@server01 ~]# systemctl enable nginx
3.2 编写Nginx状态监控脚本

通过脚本解析Nginx状态页面数据,供Zabbix调用:

[root@server01 ~]# vim /etc/zabbix/nginx-status.sh

脚本内容及说明:

#!/bin/bash
# 定义Nginx端口
NGINX_PORT=80
# 接收参数(如active、reading等)
NGINX_COMMAND=$1

# 获取活动连接数
nginx_active(){
    /usr/bin/curl -s "http://127.0.0.1:${NGINX_PORT}/nginx_status/" | awk '/Active/{print $3}'
}

# 获取读取客户端Header的数量
nginx_reading(){
    /usr/bin/curl -s "http://127.0.0.1:${NGINX_PORT}/nginx_status/" | awk '/Reading/{print $2}'
}

# 获取向客户端发送Header的数量
nginx_writing(){
    /usr/bin/curl -s "http://127.0.0.1:${NGINX_PORT}/nginx_status/" | awk '/Writing/{print $4}'
}

# 获取等待请求的连接数
nginx_waiting(){
    /usr/bin/curl -s "http://127.0.0.1:${NGINX_PORT}/nginx_status/" | awk '/Waiting/{print $6}'
}

# 获取总接受连接数
nginx_accepts(){
    /usr/bin/curl -s "http://127.0.0.1:${NGINX_PORT}/nginx_status/" | awk 'NR==3 {print $1}'
}

# 获取总处理连接数
nginx_handled(){
    /usr/bin/curl -s "http://127.0.0.1:${NGINX_PORT}/nginx_status/" | awk 'NR==3 {print $2}'
}

# 获取总请求数
nginx_requests(){
    /usr/bin/curl -s "http://127.0.0.1:${NGINX_PORT}/nginx_status/" | awk 'NR==3 {print $3}'
}

# 根据参数执行对应函数
case $NGINX_COMMAND in
    active) nginx_active ;;
    reading) nginx_reading ;;
    writing) nginx_writing ;;
    waiting) nginx_waiting ;;
    accepts) nginx_accepts ;;
    handled) nginx_handled ;;
    requests) nginx_requests ;;
    *) echo "USAGE: $0 {active|reading|writing|waiting|accepts|handled|requests}" ;;
esac

设置脚本可执行权限:

[root@server01 ~]# chmod +x /etc/zabbix/nginx-status.sh
3.3 配置自定义Key

在Agent配置文件中定义自定义Key,关联监控脚本:

[root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf

添加以下配置:

# 启用自定义Key功能(默认0禁用,1启用)
UnsafeUserParameters=1
# 定义自定义Key:nginx_status[*],参数通过$1传递给脚本
UserParameter=nginx_status[*],/etc/zabbix/nginx-status.sh $1

重启Agent:

[root@server01 ~]# systemctl restart zabbix-agent
3.4 在服务端验证自定义Key

在Zabbix服务端使用​​zabbix_get​​工具测试自定义Key是否生效:

# 安装zabbix_get(若未安装)
[root@zabbix ~]# dnf -y install zabbix-get

# 测试获取活动连接数
[root@zabbix ~]# zabbix_get -s 192.168.207.138 -k nginx_status[active]

# 测试获取Nginx端口状态(内置Key)
[root@zabbix ~]# zabbix_get -s 192.168.207.138 -k net.tcp.port[,80]
3.5 创建Nginx监控模板
  1. 导航至「数据采集」→「模板」→「创建模板」,命名为“Nginx-status”
  2. 为模板添加监控项(「监控项」→「创建监控项」):

监控项名称

键值

说明

nginx active

nginx_status[active]

活动连接数

nginx reading

nginx_status[reading]

读取客户端Header数

nginx writing

nginx_status[writing]

发送客户端Header数

nginx waiting

nginx_status[waiting]

等待请求的连接数

nginx accepts

nginx_status[accepts]

总接受连接数

nginx port

net.tcp.port[,80]

80端口状态(1开启,0关闭)

  1. 添加触发器(如Nginx端口关闭时告警):
  • 导航至「触发器」→「创建触发器」
  • 条件:​​net.tcp.port[,80] = 0​​(端口关闭)
  • 严重级别:设置为“警告”或“严重”
3.6 应用模板至主机

将创建的“Nginx-status”模板关联到目标主机(server01):

  1. 导航至「数据采集」→「主机」→ 选择server01
  2. 「模板」→「链接新模板」→ 选择“Nginx-status”→「添加」

四、Zabbix邮件报警

当监控指标触发告警时,Zabbix可通过邮件自动通知运维人员,及时响应故障。

4.1 配置告警媒介(邮件服务器)
  1. 导航至「告警」→「媒介」→ 选择“Email”→「编辑」
  2. 配置邮件服务器参数:
  • SMTP服务器:如​​smtp.163.com​​(网易邮箱)
  • SMTP服务器端口:465(SSL加密)
  • SMTP HELO:邮件服务器域名(如​​163.com​​)
  • SMTP邮箱:发送告警的邮箱地址
  • 认证:选择“用户名和密码”
  • 用户名:发送邮箱的账号
  • 密码:邮箱的授权码(非登录密码,需在邮箱设置中开启SMTP并获取)
  1. 勾选「已启用」,点击「更新」
4.2 配置用户告警媒介

为用户(如Admin)关联邮件告警媒介:

  1. 导航至「用户」→「用户」→ 选择“Admin”→「报警媒介」→「添加」
  2. 配置参数:
  • 类型:选择“Email”
  • 收件人:接收告警的邮箱地址
  • 当启用时:设置告警生效时间(如00:00-24:00)
  • 严重性:勾选需要通知的告警级别(如“警告”、“严重”)
  1. 点击「添加」并「更新」
4.3 创建触发器动作

配置当触发器触发时执行的动作(发送邮件):

  1. 导航至「告警」→「动作」→「触发器动作」→「创建动作」
  2. 配置动作名称(如“Nginx告警动作”)
  3. 配置触发条件(「条件」选项卡):
  • 选择“触发器”,关联之前创建的Nginx触发器(如“Nginx port is down”)
  1. 配置操作(「操作」选项卡):
  • 操作类型:选择“发送消息”
  • 发送到用户:选择Admin
  • 仅送到:选择“Email”
  • 消息内容:自定义告警内容,如:
问题:{TRIGGER.NAME}
主机:{HOST.NAME}
时间:{EVENT.DATE} {EVENT.TIME}
状态:{TRIGGER.STATUS}
4.4 测试邮件告警

手动关闭被监控节点的Nginx服务,验证告警是否触发:

[root@server01 ~]# systemctl stop nginx

等待片刻后,查看接收告警的邮箱,确认是否收到告警邮件。测试完成后重启Nginx:

[root@server01 ~]# systemctl start nginx

总结

本文介绍了Zabbix的四个应用:网络自动发现、自动注册、自定义Key监控Nginx、邮件告警。通过这些功能,运维人员可实现主机自动管理、服务深度监控和故障及时通知,显著提升运维效率。在实际应用中,需根据环境特点选择自动发现或自动注册,并合理配置自定义监控项和告警策略,构建稳定高效的监控体系。


网站公告

今日签到

点亮在社区的每一天
去签到