文章目录
- 一、自定义监控整体流程
- 二、自定义监控案例
- 1、监控TCP 443端口案例
- 2、监控服务器异地登入(带参监控项)
一、自定义监控整体流程
操作端 | 流程 | 备注 |
---|---|---|
Agent端 | 1️⃣ linux:通过命令、脚本取出对应的值 | |
2️⃣ linux:根据zbx要求按照格式、编写配置文件、创建键值 | 键值key用于获取客户端数据 | |
3️⃣ linux:重启zabbix-agent | ||
Server端 | 4️⃣ linux:服务端测试键值是否可用 | zabbix_get命令测试 |
5️⃣ web页面:创建监控项 | ||
6️⃣ web页面:创建图形(可选) | ||
7️⃣ web页面:创建触发器(可选) | ||
8️⃣ web页面:测试 |
二、自定义监控案例
1、监控TCP 443端口案例
PS:此案例只是练习自定义监控流程,仅此而已,监控TCP端口一般使用zabbix自带的 net.tcp.listen[port]
键值实现起来更方便!
1、编写脚本取出对应的值
使用nc
命令来判断端口是否可以建立连接,所以先安装nc
命令:
yum -y install nc
编写脚本取出对应的值
mkdir /etc/zabbix/zabbix6.0/shell
vi /etc/zabbix/zabbix6.0/shell/tcpPortCheck.sh#!/bin/bash
checkPort=$1if (nc -z localhost $checkPort);thenecho "1" # 存在返1
elseecho "0" # 不存在返0
fi
赋予执行权限
chmod +x /etc/zabbix/zabbix6.0/shell/tcpPortCheck.sh
2、创建键值
修改zabbix_agentd.conf
配置文件
vim /usr/local/conf/zabbix_agentd.conf
# 添加
Include=/usr/local/conf/zabbix_agentd/*.conf
# 追加16.32.15.0/24,不然无法使用zabbix_get命令(16.32.15.0/24修改为自己的IP网段或者0.0.0.0/0全部放开)
Server=10.10.10.0/24,16.32.15.0/24
创建键值
vim /usr/local/conf/zabbix_agentd/tcp_port.conf
# UserParameter=key,cmd(固定格式)
UserParameter=tcp.port.443,/etc/zabbix/zabbix6.0/shell/tcpPortCheck.sh 443
3、重启zabbix-agent
systemctl restart zabbix-agent
4、服务端测试键值是否可用
zabbix_get -s 16.32.15.115 -k tcp.port.443
5、创建监控项
- 历史数据保留时长:每个更新间隔获取到的数据,占用空间比较大,推荐设置60d
- 趋势数据保留时长:记录数据变化的趋势,占用空间较小,推荐保留365d
这里端口不通是属于正常情况,我本地并没有443端口!
6、创建图形
查看最新数据
如上图可以很清晰的观察到443端口在那个时间点Down了
7、创建触发器
触发器的作用是:当满足触发器的条件时,将触发报警通知。
8、测试
运行Nginx容器来占用443端口
docker run -itd --name nginx -p 443:80 nginx
将Nginx容器停止后,zabbix页面就会报警,如下图:
docker stop nginx
启动Nginx后,报警则会恢复,如下图:
docker start nginx
2、监控服务器异地登入(带参监控项)
1、使用命令获取最近一次登入IP地址
lastlog |grep -w root|awk '{print $3}'
2、创建键值
vim /usr/local/conf/zabbix_agentd/user_login.conf
UserParameter=user.login[*],lastlog |grep -w "$1"|awk '{print $$3}'
小细节:如果使用自定义键值传参,awk取列的时候要使用$$列,如果没有使用传参,正常使用awk即可!
3、重启zabbix-agent
systemctl restart zabbix-agent
4、服务端测试
# 获取root用户最后一次登入IP地址
zabbix_get -s 16.32.15.115 -k user.login[root]
# 获取qinzt用户最后一次登入IP地址
zabbix_get -s 16.32.15.115 -k user.login[qinzt]
5、添加监控项,监控root用户是否异地登入
6、创建触发器
7、测试
使用其他IP地址登入root用户,查看页面告警
如上图,已经触发了告警通知,但是这个告警等待10s后会自动恢复,原因是在恢复表达式填写逻辑是 与上次IP对比一致即可恢复,而监控项是10s取一次,所以10s后自动恢复!