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

发布于:2025-07-26 ⋅ 阅读:(12) ⋅ 点赞:(0)

一、自动发现

  • 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.rpm

yum clean all

3、修改主配置文件

[root@localhost ~]# cd /etc/zabbix/
[root@localhost zabbix]# ls
zabbix_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.150


Hostname=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_count
4

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

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 requests
import json
import sys
import os
import datetime
webhook = "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}

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

 添加完成记得点击更新

创建监控项

测试一下,是否有值

创建图表

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

创建触发器

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

钉钉查看告警问题


网站公告

今日签到

点亮在社区的每一天
去签到