Zabbix自定义监控
实验环境继zabbix入门到实战-01
自定义监控全流程
1. 确定监控需求
首先,你需要明确你想监控的是什么。比如:
-
你想知道某个服务的运行状态(比如一个自定义的应用程序
-
你想查看某个日志文件中
-
你想监控服务器上的某个自定义脚本的运行
2. 编写检测脚本
既然是自定义监控,Zabbix 自带的模板可能无法直接帮你监控这些指标,所以需要写一个简单的脚本来获取这些信息。比如你想监控一个服务是否在运行,可以编写一个类似以下的 Shell 脚本:
#!/bin/bash
if systemctl is-active my_custom_service >/dev/null 2>&1; then
echo 1 # 表示服务正在运行
else
echo 0 # 表示服务没有运行
fi
``
这个脚本会返回 1
代表0
代表
3. 设置 Zabbix Agent 配置
-
找到 Zabbix Agent 的配置文件(通常是
/etc/zabbix/zabbix_agentd.conf
)。 2 -
添加一个自定义的
UserParameter
UserParameter=custom.service.check,/path/to/your/script.sh
这行配置告诉 Zabbix Agent,你定义了一个叫 custom.service.check
的监控项,它的值是由 script.sh
脚本的输出决定的。
-
重启 Zabbix Agent 使配置生效:
sudo systemctl restart zabbix-agent
4. 在 Zabbix Web 界面上创建自定义监控项
-
登录到 Zabbix Web 界面。
-
进入
Configuration -> Hosts
,找到你想要监控的主机,点击进去。 -
在主机配置页面中,点击
Items(监控项)
,然后点击Create item
创建新的监控项。 -
在监控项配置中,设置以下字段:
-
Name:自定义监控项的名称,比如 "My Custom Service Status"。
-
Type:选择
Zabbix agent
,因为我们通过 agent 来获取数据。 -
Key:输入你之前在 agent 配置文件里定义的
custom.service.check
。 -
Type of information:选择
Numeric (unsigned)
,因为脚本返回的是数字。 -
Update interval:设置监控的频率,比如每 60 秒检查一次。
-
-
保存设置。
5. 创建触发器(可选)
如果你想要 Zabbix 在服务停止时发出警报,你可以创建一个触发器。
-
在主机的配置页面中,点击
Triggers(触发器)
,然后点击Create trigger
。 -
设置触发器的名称,比如 "Service Down Alert"。
-
在 Expression 字段中,填写触发条件,比如:
{your-host-name:custom.service.check.last()}=0
这表示当
custom.service.check
的值为0
时,触发警报。 -
设置触发器的严重程度,比如
Average
或High
,根据你的需求设置。 -
保存触发器。
6. 查看监控结果
完成上面的步骤后,Zabbix 会根据你设置的时间间隔去执行自定义脚本,并把结果显示在监控界面。你可以在 Zabbix Web 界面的 Monitoring -> Latest Data
中查看自定义监控项的实时数据。
7. 触发警报和行动
如果服务停止,Zabbix 会根据你设置的触发器发出警报。你可以在 Zabbix 中进一步设置警报通知方式,比如通过邮件、短信或微信通知管理员。
监控nginx服务是否运行
1、在web01安装nginx并启动
[root@web01 ~]# yum install -y nginx
[root@web01 ~]# systemctl start nginx
[root@web01 ~]# ss -lntup | grep -w 80
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=6293,fd=6),("nginx",pid=6292,fd=6))
[root@web01 ~]#
2、设置 agent2 配置
# 在web01的/etc/zabbix/zabbix_agent2.d/下
[root@web01 ~]# cat /etc/zabbix/zabbix_agent2.d/nginx.conf
UserParameter=nginx.port,ss -lntup | grep -w 80 | wc -l
[root@web01 ~]#
# 修改完配置文件之后重启服务
[root@web01 ~]# systemctl restart zabbix-agent2.service
3、zabbix-server安装zabbix-get并测试
# 根据自己的版本安装相应的版本的get
[root@zabbix-server ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/7.0/rhel/9/x86_64/zabbix-get-7.0.3-release1.el9.x86_64.rpm
# 测试监控项
[root@zabbix-server ~]# zabbix_get -s 10.45.25.31 -k nginx.port
1
[root@zabbix-server ~]#
# 在web01中停止nginx,再次测试,测试完之后启动nginx
[root@web01 ~]# systemctl stop nginx
[root@zabbix-server ~]# zabbix_get -s 10.45.25.31 -k nginx.port
0
[root@zabbix-server ~]#
[root@web01 ~]# systemctl start nginx
4、在web界面中创建自定义监控项
5、创建触发器
当nginx服务停止时,提示报警。选择刚创建的监控项。
6、停止和启动nginx,查看web界面报警
[root@web01 ~]# systemctl stop nginx # 当停止了nginx后,立马就出现了报警,因为我们设置的检测时间间隔为1s。具体根据实际情况设置,这里只提供测试。
# 启动nginx,查看报警是否消除 [root@web01 ~]# systemctl start nginx
7、为监控项创建图形,根据需求创建
总结:本次的示例很简单,最重要的就是配置流程,在今后要根据需求配置相应的参数,过程的内容会变复杂,但原理一致。可以自行尝试监控其他服务或自定义服务。