1. 自定义监控项
1.1 自定义监控项介绍
**什么是监控项 监控项? _**
就是我们想要监控的指标,例如剩余内存,磁盘空间,服务的状 态等等
一个监控项对应一个唯一的key,简洁明了 (相当于shell脚本的变量名)
只需要安装zabbix-agent,默认就支持大量的监控项,但是linux模板并没 有使用所有监控项 Template OS Linux by Zabbix agent主要监控了 cpu,内存,磁盘,网卡, 安全,它们都属于通用监控 应用集是监控项的分组
1.2 使用内置key监控nginx的状态✨
你们, 美女66添加监控项之前,最好取值 (如何取值? zabbix-get )
#只在zabbix-server上安装
yum install zabbix-get -y
zabbix_get -s 127.0.0.1 -k proc.num[nginx]
#注释
-s 被监控主机的ip地址
-p 端口
-k 指定监控项的key
添加完监控项之后 先查看一下最新数据
1.3 使用自定义的监控项来监控nginx
1.3.1 修改agent配置文件
Ps: ---> UserParameter自定义监控项
• 配置文件中的key值不能相同,相同会造成冲突--> zabbix-agent 启动失败
#zabbix-agent
vim /etc/zabbix/zabbix_agentd.conf
#zabbix-agent2
vim /etc/zabbix/zabbix_agent2.conf
#增加一行
UserParameter=nginx_status,netstat -lntp|grep -c nginx
1.3.2 重启agent生效
systemctl restart zabbix-agent2.service
1.3.3 使用zabbix-get测试取值
只能在zabbix-server上执行
zabbix_get -s 10.0.0.8 -k nginx_status
1.3.4 web界面添加监控项过程
同上,略
PS:
zabbix_get命令取不到值?
- 注意获取信息的命令是否有执行权限
Ps : 对于方法3 zabbix服务端 配置zabbix-agent root用户运行注意修改两处:1:使用sudo来执行
2:使用suid来执行
3:使用root用户来运行zabbix-agent
- 修改 systemctl (zabbix-agent2 修改此处就行 )
- systemctl deamon-reload
- 修改 zabbix_aget.cnf
1.4 自定义带参数的监控项
Ps 创建错误的监控项 没有最新数据的时:修改完正确的想要获得数据,需要等待较长时间。原因:
Ps: 建议把agent自定义监控项独立成一个配置文件
好处:可以复用,管理更方便
vim /etc/zabbix/zabbix_agent2.d/zbx_nginx.conf
UserParameter=nginx_status,netstat -lntp|grep -c nginx
- 传参形式监控项
精简(只适合有规律的监控项)UserParameter=mysql_Uptime,echo 'show status;'|mysql -uroot|grep -w 'Uptime'|awk '{print $2}' UserParameter=mysql_Com_select,echo 'show status;'|mysql -uroot|grep -w 'Com_select'|awk '{print $2}' UserParameter=mysql_Com_delete,echo 'show status;'|mysql -uroot|grep -w 'Com_delete'|awk '{print $2}'
UserParameter=mysql_define[*],echo 'show status;'|mysql -uroot|grep -w "$1"|awk '{print $$2}'
取值效果
[root@zabbix-server ~]# zabbix_get -s 10.0.0.8 -k mysql_define[Uptime]
827
[root@zabbix-server ~]# zabbix_get -s 10.0.0.8 -k mysql_define[Com_select]
1
[root@zabbix-server ~]# zabbix_get -s 10.0.0.8 -k mysql_define[Com_insert]
0
2.创建触发器
2.1 自定义触发器表达式
介绍:
触发器:设置一个报警条件
一个触发器至少对应一个监控项
触发器表达式的格式
{10.0.0.8:vfs.file.cksum[/etc/passwd].diff()}>0
主机:10.0.0.8
key值:vfs.file.cksum[/etc/passwd]
函数方法:diff() 对比两次监控项的值
例子2:
{10.0.0.8:proc.num.last()}/{10.0.0.8:kernel.maxproc.last()}*100>80
10.0.0.8:proc.num:当前运行进程
10.0.0.8:kernel.maxproc 系统最大允许进程的数量
函数方法:last() 最新值
例子3:
{10.0.0.8:vm.memory.size[available].min(5m)}<{$MEMORY.AVAILABLE.MIN} and {10.0.0.8:vm.memory.size[total].last()}>0
函数方法 mim(5m),max(5m),avg(5m)
{$MEMORY.AVAILABLE.MIN}=20m
and 同时
10.0.0.8:vm.memory.size[total] 最新的总内存大小
2.2 自定义多条件触发器表达式
单条件
{10.0.0.8:nginx_status.last()}=0
多条件
{10.0.0.8:disk_free.last()}<100M and {10.0.0.8:disk_free_per.last()}<3
3. 自定义报警
3.1 自定义邮箱报警
配置发件人
配置收件人
配置触发器动作
触发报警
systemctl stop nginx.service
3.2 微信企业号报警
准备好企业微信号
加入企业微信
使用微信关联企业微信
测试微信报警脚本
#修改脚本
corpid='wxd074861951c67ba6'
appsecret='QtraZrI936DZ0jZ3aSWTZ-lFVheAMgLmq3toM4B9U1A'
agentid=1
#安装python模板
yum install python-pip -y
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
#测试发送微信消息
python weixin.py 'BuYuanTouLuXingShiDeCuiXianSheng' '天气真好' '阳光明媚,春暖花开!'
#第一个参数,企业微信的用户
#第二个参数,报警标题
#第三个参数,报警内容
将脚本放在指定的位置
#查看报警脚本路径
grep -Ev '^$|#' /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
mv weixin.py /usr/lib/zabbix/alertscripts/
chmod +x /usr/lib/zabbix/alertscripts/weixin.py
配置发件人
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
配置收件人
重新触发报警
systemctl stop nginx.service
注意权限问题