1. 自定义监控项

1.1 自定义监控项介绍


**
什么是监控项 监控项? _**
就是我们想要监控的指标,例如剩余内存,磁盘空间,服务的状 态等等
一个监控项对应一个唯一的key,简洁明了 (相当于shell脚本的变量名)

只需要安装zabbix-agent,默认就支持大量的监控项,但是linux模板并没 有使用所有监控项 Template OS Linux by Zabbix agent主要监控了 cpu,内存,磁盘,网卡, 安全,它们都属于通用监控 应用集是监控项的分组

1.2 使用内置key监控nginx的状态✨

image.png
image.png
你们, 美女66添加监控项之前,最好取值 (如何取值? zabbix-get )

  1. #只在zabbix-server上安装
  2. yum install zabbix-get -y
  3. zabbix_get -s 127.0.0.1 -k proc.num[nginx]
  4. #注释
  5. -s 被监控主机的ip地址
  6. -p 端口
  7. -k 指定监控项的key

image.png
添加完监控项之后 先查看一下最新数据
image.png

1.3 使用自定义的监控项来监控nginx

1.3.1 修改agent配置文件

  1. Ps: ---> UserParameter自定义监控项
  2. 配置文件中的key值不能相同,相同会造成冲突--> zabbix-agent 启动失败
  1. #zabbix-agent
  2. vim /etc/zabbix/zabbix_agentd.conf
  3. #zabbix-agent2
  4. vim /etc/zabbix/zabbix_agent2.conf
  5. #增加一行
  6. 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命令取不到值?

  • 注意获取信息的命令是否有执行权限
    1. 1:使用sudo来执行
    2. 2:使用suid来执行
    3. 3:使用root用户来运行zabbix-agent
    Ps : 对于方法3 zabbix服务端 配置zabbix-agent root用户运行注意修改两处:
  1. 修改 systemctl (zabbix-agent2 修改此处就行 )image.png
  2. systemctl deamon-reload
  3. 修改 zabbix_aget.cnfimage.png

1.4 自定义带参数的监控项

Ps 创建错误的监控项 没有最新数据的时:修改完正确的想要获得数据,需要等待较长时间。原因:image.png
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 自定义多条件触发器表达式

image.png
image.png
image.png
单条件

{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 自定义邮箱报警

配置发件人
image.png
image.png
image.png

配置收件人
image.png
image.png
配置触发器动作
image.png
触发报警

systemctl stop nginx.service

效果
image.png

3.2 微信企业号报警


准备好企业微信号
image.png
加入企业微信
使用微信关联企业微信
测试微信报警脚本

#修改脚本
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}

image.png
image.png
配置收件人
image.png

重新触发报警

systemctl stop nginx.service

注意权限问题
image.png

3.3 钉钉报警

dingding.py 钉钉报警.md


3.4 睿象云电话报警

睿象云短信电话报警.doc