1. 自定義監控項
在 監控主機
上配置自定義監控項:
# 查看當前登錄用戶
[root@agent ~]# who
root pts/0 2020-05-20 21:29 (10.0.0.1)
root pts/1 2020-05-20 21:35 (10.0.0.1)
# 查看當前用戶登錄數
[root@agent ~]# who|wc -l
2
# 設置自定義監控項login_users,命令是who|wc -l
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=login_users,who|wc -l
# 重啓zabbix監控主機
[root@agent ~]# systemctl restart zabbix-agent
在zabbix server機器上獲取設置的監控項的值:
# 下載zabbix-get.x86_64
[root@Zabbix-server ~]# yum install zabbix-get.x86_64 -y
# 獲取監控項的值
[root@Zabbix-server ~]# zabbix_get -s 10.0.0.3 -k login_users
添加監控項,可以把 歷史數據保留時長
設置的小一些:
可以看到我們自定義的監控項:
2. 創建觸發器
這裏要注意表達式部分監控項的名字要使用我們自定義的:
3. 自定義郵件發件人
這裏需要注意的是163郵箱需要開啓SMTP服務,才能拿到授權碼:
授權碼寫在密碼部分:
4. 自定義郵件收件人
點擊用戶頭像,到 用戶基本資料
下的 報警媒介
下添加Email類型的報警媒介:
5. 啓用觸發器的動作
到 配置
選項下的 動作
項中將狀態修改爲已啓用的狀態:
6. 觸發報警
當觸發“當前系統用戶的登錄數”觸發器的時候,會向接收郵箱發送消息。這裏可以查看已經發送的報警郵件:
郵箱也會接收到報警消息:
7. 自定義郵件報警信息
默認的郵件報警信息除了宏部分,其它均爲英文且比較亂。所以,爲了方便查看,需要自定義郵件報警信息:
自定義郵件報警信息,我這裏使用的模板是:
服務器: {HOST.NAME}發生:{EVENT.NAME}故障!
{
告警主機: {HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}
下面換成我們定義的信息:
當觸發報警後,可以在 動作日誌
中查看到發送給接收郵件的報警信息:
檢查郵箱後發現郵箱也收到了對應的報警信息:
8. 自定義微信報警
寫一個微信發送消息的腳本,這裏需要用到企業微信。需要修改企業微信ID、機器人密碼和應用ID,這些在企業微信管理都可以看到。下面是微信發送消息的腳本:
# 導入相關模塊
import requests, os, sys, logging, json
# 定義日誌的格式
logging.basicConfig(
filename=os.path.join('/tmp', 'weixin.log'),
format='%(asctime)s - %(name)s - %(levelname)s - %(module)s:%(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
level=logging.DEBUG,
)
# 企業微信id
corpid = ''
# 機器人密碼
appsecret = ''
# 應用id
agentid = 1
# 獲取accesstoken
token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettonken?corpid' + corpid + '&corpsecret=' + appsecret
req = requests.get(token_url)
accesstoken = req.json()['access_token']
# 發送消息
send_msg_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
touser = sys.argv[1]
subject = sys.argv[2]
message = subject + '\n\n' + sys.argv[3]
params = {
'touser': touser,
'msgtype': 'text',
'agentid': agentid,
'text': {
'content': message
},
'safe': 0
}
req = requests.post(send_msg_url, data=json.dumps(params))
# 把結果記錄的日誌中
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
把腳本放到zabbix server中的指定的目錄下:
# 查看腳本應該放到哪個位置
[root@Zabbix-server ~]# grep -Ev '^$|#' /etc/zabbix/zabbix_server.conf
...
AlertScriptsPath=/usr/lib/zabbix/alertscripts
...
添加微信報警媒介:
指定收件人:
添加完成後啓用微信報警媒介,可以暫時把Email報警媒介停用:
下面執行這個腳本開始向微信發送報警信息:
[root@Zabbix-server ~]# cd /usr/lib/zabbix/alertscripts/
[root@Zabbix-server alertscripts]# python weixin.py 用戶名 標題 報警內容