一、自动发现
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}
个人中心–>报警媒介–>添加
添加完成记得点击更新
创建监控项
测试一下,是否有值
创建图表
主机选择,钉钉创建的主机
创建触发器
条件--监控项选择创建的监控项
钉钉查看告警问题