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

一、自动发现

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

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

1、部署准备

准备三台虚拟机

192.168.80.151;192.168.80.152做自动发现

192.168.80.153 做自动注册

2、配置安装源

cs 复制代码
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、修改主配置文件

cs 复制代码
[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、关闭防火墙和上下文

cs 复制代码
systemctl disable --now firewalld
 setenforce 0

5、启动服务

二、设置自动发现

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

2、找到告警,发现动作

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

三、自动注册动作

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

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

cs 复制代码
[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、添加模板

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

cs 复制代码
[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的值;后面需要用到

服务器上操作

  • 配置钉钉脚本
cs 复制代码
#将脚本写在/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安装一下;

cs 复制代码
[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
cs 复制代码
[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()

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

cs 复制代码
#为脚本添加执行权限
[root@zabbix alertscripts]# chmod +x dingding.py
 
#修改脚本的属主和属组:
[root@zabbix alertscripts]# chown zabbix.zabbix dingding.py
  • 创建日志文件:
cs 复制代码
[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权限
  • 测试脚本是否能运行成功:
cs 复制代码
#py脚本 手机号 关键词 告警信息
[root@zabbix alertscripts]# ./dingding.py 17835697281 告警 111
[root@zabbix alertscripts]# ./dingding.py 17835697281 告警 你的热得快炸了
[root@zabbix alertscripts]# ./dingding.py 19829651293 告警 你的热得快炸了

web页面操作

  • 告警-->媒介-->创建媒体类型
  • 配置-->动作-->创建动作
css 复制代码
#告警操作内容:
##标题:
服务器:{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}
  • 个人中心-->报警媒介-->添加

添加完成记得点击更新

创建监控项

测试一下,是否有值

创建图表

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

创建触发器

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

钉钉查看告警问题

相关推荐
day day day ...25 分钟前
MyBatis条件误写引发的查询条件污染分析与防范
java·服务器·tomcat
TechMasterPlus1 小时前
Linux U-Boot 与内核启动流程深度解析:从上电到 Shell 的完整之旅
linux·运维·服务器
大白菜和MySQL1 小时前
Linux下dhcp服务搭建
linux·运维·服务器
SPC的存折1 小时前
1、MySQL故障排查与运维案例
linux·运维·服务器·数据库·mysql
Run_Teenage1 小时前
Linux:认识信号,理解信号的产生和处理
linux·运维·算法
Deitymoon1 小时前
linux——TCP服务器获取客户端IP地址
linux·服务器·tcp/ip
CDN3601 小时前
高防服务器磁盘 / CPU 爆满?攻击引流与资源扩容实战
运维·服务器·网络协议
小贾要学习1 小时前
【Linux】应用层自定义协议与序列化
linux·服务器·c++·json
white-persist1 小时前
【vulhub spring CVE-2018-1270】CVE-2018-1270 Spring Messaging 远程命令执行漏洞 完整复现详细分析解释
java·服务器·网络·数据库·后端·python·spring
freewlt1 小时前
OpenClaw 工作流自动化实战:打造你的智能定时任务中心
运维·servlet·自动化