> 技术文档 > ZABBIX配置自动发现与自动注册,网易邮箱告警和钉钉告警

ZABBIX配置自动发现与自动注册,网易邮箱告警和钉钉告警


一、自动发现

  • zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。

  • 缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。

 1、部署准备

准备三台虚拟机

192.168.80.151;192.168.80.152做自动发现

192.168.80.153  做自动注册

2、配置安装源

rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-7.0-5.el9.noarch.rpmyum clean all

3、修改主配置文件

[root@localhost ~]# cd /etc/zabbix/[root@localhost zabbix]# lszabbix_agentd.conf zabbix_agentd.d[root@localhost zabbix]# vim zabbix_agentd.conf 117 Server=192.168.80.150

4、关闭防火墙和上下文

systemctl disable --now firewalld setenforce 0

5、启动服务

二、设置自动发现

点击监测--自动发现,两台主机已经连接

2、找到告警,发现动作

添加成功后,回到数据采集--主机  刷新等待一会,发现已经创好了

三、自动注册动作

设置自动发现的主机尽量不要再设置自动注册,会有影响

添加成功后回到客户端修改配置

[root@localhost zabbix]# vim zabbix_agentd.conf ServerActive=192.168.80.150Hostname=host1[root@localhost zabbix]# systemctl start zabbix-agent.service 

四、邮件告警设置

1、登录邮箱点击设置,查看SMTP

 复制授权码

2、创建媒介

告警->媒介->创建媒介类型

用户网易用户

密码就是上面的授权码

 创建完成点击消息模板,创建问题

 测试邮件发送

3、设置调用用户

4、添加模板

在终端创建一个脚本文件,测试用户登陆数量

[root@localhost zabbix_agentd.d]# cat test.conf UserParameter=user_count,w | awk \'NR>=3{print|\"wc -l\"}\'在服务器上测试[root@zabbix zabbix_agentd.d]# zabbix_get -s 192.168.80.151 -p 10050 -k user_count4

数据采集->主机或模版->触发器->创建触发器(假如有触发器可跳过该步骤!!)

5、创建图形

6、创建触发器

设置关联

点击告警---动作--触发器动作

 操作详情

 7、回到终端测试

观察图形

查看邮件,收到一条问题

五、设置钉钉警告

  • 登录钉钉

  • 创建钉钉群

手机、电脑都可以,这里以电脑举例

 这里可以自己随便选择,我选择的是内部群

添加机器人–>设置关键词

 点击添加机器人

添加”机器人“–>“自定义”

生成webhook(请保管好webhook的值;后面需要用到

服务器上操作

  • 配置钉钉脚本

#将脚本写在/usr/lib/zabbix/alertscripts/目录下[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/##安装python或者python3[root@zabbix alertscripts]# yum install python3 

注意:这里需要提前安装好这几个python模块:requests、json、sys、os、datetime; 

安装方式为:pip3 install requests 以此类推;  

如遇到以下报错就是没有安装requests模块,就需要pip安装一下;  

[root@zabbix ~]# mkdir -p /usr/lib/zabbix/alertscripts/[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts/[root@zabbix alertscripts]# vim dingding.py[root@zabbix alertscripts]# chmod +x dingding.py[root@zabbix alertscripts]# chown zabbix.zabbix dingding.py
[root@zabbix alertscripts]# cat dingding.py #!/usr/bin/env python# -*- coding: utf-8 -*- import requestsimport jsonimport sysimport osimport datetimewebhook = \"https://oapi.dingtalk.com/robot/send?access_token=382cec5bbd171e65780867f926cfdea2ad8faf92d4b7216e48bee4c8a60601d6\"user=sys.argv[1]subject=sys.argv[2]text=sys.argv[3]data={ \"msgtype\": \"text\", \"text\": { \"content\": \"%s%s\"%(subject,text) }, \"at\": { \"atMobiles\": [ user ], \"isAtAll\": False }}headers = {\'Content-Type\': \'application/json\'}x=requests.post(url=webhook,data=json.dumps(data),headers=headers)if os.path.exists(\"/usr/lib/zabbix/alertscripts/log/dingding.log\"): f=open(\"/usr/lib/zabbix/alertscripts/log/dingding.log\",\"a+\")else: f=open(\"/usr/lib/zabbix/alertscripts/log/dingding.log\",\"w+\")f.write(\"\\n\"+\"--\"*30)if x.json()[\"errcode\"] == 0: f.write(\"\\n\"+str(datetime.datetime.now())+\" \"+str(user)+\" \"+\"发送成功\"+\"\\n\"+str(text)) f.close()else: f.write(\"\\n\"+str(datetime.datetime.now())+\" \"+str(user)+\" \"+\"发送失败\"+\"\\n\"+str(text)) f.close()

为脚本添加权限和更改属主属组

#为脚本添加执行权限[root@zabbix alertscripts]# chmod +x dingding.py #修改脚本的属主和属组:[root@zabbix alertscripts]# chown zabbix.zabbix dingding.py
  • 创建日志文件:

[root@zabbix alertscripts]# mkdir -p /usr/lib/zabbix/alertscripts/log[root@zabbix alertscripts]# touch /usr/lib/zabbix/alertscripts/log/dingding.log###递归更改的 属主属组[root@zabbix alertscripts]# chown zabbix.zabbix -R /usr/lib/zabbix/alertscripts/log###增加权限[root@zabbix alertscripts]# chmon +x /usr/lib/zabbix/alertscripts/log####ls -l 查看一下zabbix整个路径的属主属组和权限 一定要是zabbix权限
  • 测试脚本是否能运行成功:

#py脚本 手机号 关键词 告警信息[root@zabbix alertscripts]# ./dingding.py 17835697281 告警 111[root@zabbix alertscripts]# ./dingding.py 17835697281 告警 你的热得快炸了[root@zabbix alertscripts]# ./dingding.py 19829651293 告警 你的热得快炸了

web页面操作

  • 告警–>媒介–>创建媒体类型

  • 配置–>动作–>创建动作

#告警操作内容:##标题:服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!##消息内容:告警主机:{HOST.NAME}告警地址:{HOST.IP}监控项目:{ITEM.NAME}监控取值:{ITEM.LASTVALUE}告警等级:{TRIGGER.SEVERITY}当前状态:{TRIGGER.STATUS}告警信息:{TRIGGER.NAME}告警时间:{EVENT.DATE} {EVENT.TIME}事件ID:{EVENT.ID}#恢复操作内容##标题:服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!##消息内容:告警主机:{HOST.NAME}告警地址:{HOST.IP}监控项目:{ITEM.NAME}监控取值:{ITEM.LASTVALUE}告警等级:{TRIGGER.SEVERITY}当前状态:{TRIGGER.STATUS}告警信息:{TRIGGER.NAME}告警时间:{EVENT.DATE} {EVENT.TIME}恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}持续时间:{EVENT.AGE}事件ID:{EVENT.ID}

  • 个人中心–>报警媒介–>添加

 添加完成记得点击更新

创建监控项

测试一下,是否有值

创建图表

主机选择,钉钉创建的主机

创建触发器

条件--监控项选择创建的监控项

钉钉查看告警问题