0
点赞
收藏
分享

微信扫一扫

Zabbix应用

简介

在现代运维工作中,一个高效的监控系统能够实现自动化管理,极大减轻运维人员的负担。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、邮件告警。通过这些功能,运维人员可实现主机自动管理、服务深度监控和故障及时通知,显著提升运维效率。在实际应用中,需根据环境特点选择自动发现或自动注册,并合理配置自定义监控项和告警策略,构建稳定高效的监控体系。

举报

相关推荐

0 条评论