一、自動發現
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]# ls
zabbix_agentd.conf zabbix_agentd.d
[root@localhost zabbix]# vim zabbix_agentd.conf 117 Server=192.168.80.150
4、關閉防火墻和上下文
systemctl disable --now firewalldsetenforce 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_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}
個人中心–>報警媒介–>添加
?添加完成記得點擊更新
創建監控項
測試一下,是否有值
創建圖表
主機選擇,釘釘創建的主機
創建觸發器
條件--監控項選擇創建的監控項
釘釘查看告警問題