- 需求:監控某臺web的80端口連接數,並出圖
- 兩步:1)zabbix監控中心創建監控項目;2)針對該監控項目以圖形展現
- 對於第一步,需要到客戶端定義腳本,並賦予755權限,因爲需要zabbix用戶可以執行它
[root@akuilinux02 ~]# vim /usr/local/sbin/estab.sh
#!/bin/bash
##獲取80端口併發連接數
netstat -ant |grep ':80 ' |grep -c ESTABLISHED
[root@akuilinux02 ~]# chmod 755 !$
chmod 755 /usr/local/sbin/estab.sh
- 客戶端上編輯配置文件,增加兩項
[root@akuilinux02 ~]# vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1 //表示使用自定義腳本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
//自定義監控項的key爲my.estab.count,後面的[*]裏面寫腳本的參數,如果沒有參數則可以省略,腳本爲/usr/local/sbin/estab.sh
- 重啓zabbix-agent服務 systemctl restart zabbix-agent
- 第二步,首先到服務端驗證
[root@akuilinux01 ~]# zabbix_get -s 192.168.21.129 -p 10050 -k 'my.estab.count'
0
- 然後在zabbix監控中心(瀏覽器)配置增加監控項目
- 給自定義的監控項創建圖形
- 給自定義的監控項目做個觸發器
配置郵件告警
- 使用163或者QQ郵箱發告警郵件
- 首先登錄你的163郵箱,設置開啓POP3、IMAP、SMTP服務,開啓授權碼
- 然後到監控中心設置郵件告警,“管理”,“報警媒介類型”,“創建媒體類型”
- 創建報警腳本mail.py
vim /usr/lib/zabbix/alertscripts/mail.py
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from subprocess import *
def sendqqmail(username,password,mailfrom,mailto,subject,content):
gserver = 'smtp.qq.com'
gport = 25
try:
msg = MIMEText(unicode(content).encode('utf-8'))
msg['from'] = mailfrom
msg['to'] = mailto
msg['Reply-To'] = mailfrom
msg['Subject'] = subject
smtp = smtplib.SMTP(gserver, gport)
smtp.set_debuglevel(0)
smtp.ehlo()
smtp.login(username,password)
smtp.sendmail(mailfrom, mailto, msg.as_string())
smtp.close()
except Exception,err:
print "Send mail failed. Error: %s" % err
def main():
to=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]
##定義QQ郵箱的賬號和密碼,你需要修改成你自己的賬號和密碼(請不要把真實的用戶名和密碼放到網上公開,否則你會死的很慘)
sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)
if __name__ == "__main__":
main()
#####腳本使用說明######
#1. 首先定義好腳本中的郵箱賬號和密碼
#2. 腳本執行命令爲:python mail.py 目標郵箱 "郵件主題" "郵件內容"
- 一定要修改權限
chmod 755 /usr/lib/zabbix/alertscripts/mail.py
- 創建一個接受告警郵件的用戶,“管理”,“用戶”,“創建用戶”,“報警媒介”,類型選擇“baojing”,注意用戶的權限,如果沒有需要到用戶組去設置權限
- 設置動作,“配置”,“動作”,“創建動作”,名稱寫“sendmail”(自定義),“新的觸發條件”,A維護狀態 非在 維護,B觸發器示警度>=未分類
- 設置操作,點擊操作 --> 把默認信息全部刪除掉 -->定義新的默認信息 -->點擊新的 --> 發送到用戶 --> 選擇Anna -->選擇 -->僅送到 -->選擇報警 -- >點擊新的 --> 條件 -->添加 --> 點完添加會看到:發送消息給用戶-->添加
HOST:{HOST.NAME} {HOST.IP} -->定義hostname
TIME:{EVENT.DATE} {EVENT.TIME} -->定義時間
LEVEL:{TRIGGER.SEVERITY} -->就是前面定義的是觸發示警度
NAME:{TIRGGER.NAME} --> 哪個觸發器發生了報警
messages:{ITEM.NAME}:{ITEM.VALUE} --> 當發生報警的時候,會有什麼狀態碼
ID:{EVENT.ID} --> 事件ID
- 設置恢復操作(當負載很高的時候要發告警郵件,但當負載變成ok的時候也要發),點擊恢復 -->把默認信息全部刪除 --> 定義默認信息 --> 點擊新的 -->發送到用戶 -->選擇Anna -->僅送到-->選擇報警 -->添加
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE} {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
測試告警
- 故意把監控項目更改成有問題的, 設置觸發器,讓它告警
- 配置-->主機--> root -02 選擇觸發器 --> 創建觸發器 --> 名稱(自定義)- 系統負載 --> 添加
-->最新的T值<N --> N 設置爲1 ; 當小於1的時候就告警,正常情況下負載是0 ,那麼就會馬上告警
- 把負載值更回正常的,也會收到ok的郵件,如果設置回正常,仍然收不到郵件,那麼檢查恢復操作.
不發郵件的問題處理
- 檢查發郵件的腳本
- 檢查Zabbix 監控中心 -- 用戶設置及檢查報警媒介,查看收件人郵箱地址是否有誤
- 檢查用戶權限是否是讀寫,若不是將無法收到告警郵件
- 檢查動作--操作是否有選擇發送到用戶