19.12-19.16
需求:監控某臺web的80端口連接數,並出圖
兩步:1)zabbix監控中心創建監控項目;2)針對該監控項目以圖形展現
1 需要到客戶端定義腳本
[root@centos7-02 sbin]#vim /usr/local/sbin/estab.sh
內容如下 #!/bin/bash ##獲取80端口並發連接數 netstat -ant |grep ':80 ' |grep -c ESTABLISHED
參數解釋:
這條命令可以獲取80端口並發連接數。
2 保存後,需要修改該腳本的權限
[root@centos7-02 sbin]# chmod 755 !$
chmod 755 /usr/local/sbin/estab.sh
因為這腳本是針對zabbix而寫,所以要保證zabbix擁有讀寫權限運作。
3 客戶端上編輯配置文件
#vim /etc/zabbix/zabbix_agentd.conf
搜索UnsafeUserParameters並且增加如下參數
UnsafeUserParameters=1
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh
參數解釋:
UnsafeUserParameters的值如果等於0 表示不能使用自定義腳本
UserParameter定義自定義腳本的路徑,以及這腳本在zabbix上以什麽名稱展現。
my.estab.count[*]對應監控項的“鍵值”參數
後面的[*]裏面寫腳本的參數,如果沒有參數則可以省略,腳本為/usr/local/sbin/estab.sh
4 重啟zabbix-agent服務
#systemctl restart zabbix-agent
5 到服務端驗證
[root@centos7-01 fonts]# zabbix_get -s 192.168.189.129 -p 10050 -k 'my.estab.count'
0
由於129客戶端服務器上並沒有任何80端口的訪問,所以結果為0
6 然後在zabbix監控中心(瀏覽器)配置增加監控項目
主機aming-02——》點中監控項——》右上角創建監控項——》填寫監控項目信息(監控項目名稱和鍵值)
7 創建圖形
配置——》主機——》圖形——》創建圖形——》監控項選擇剛剛建立的80監控項——》添加
預覽圖形
8 為此監控項創建觸發器,當連接數達到200時,告警。
操作:
創建觸發器——》填寫觸發器名稱,告警級別——》添加——》選擇監控項——》功能最新T值>N——》N填寫200——》插入
總結添加監控項的,制作成圖的思路:
想辦法通過腳本,或者其他手段獲取數據量(因為監控成圖都需要數據數量來衡量監控的嚴重性)
獲得數據後,在監控中心進行添加監控項目,然後再利用監控項目成圖,至於觸發器看實際情況創建。
19.13 配置告警郵件告警(上)
1 登錄163郵箱,設置開啟POP3、IMAP、SMTP服務
2 開啟並記錄客戶端授權密碼
密碼盡可能復雜點,因為以後發郵件就是這個密碼。
3 添加報警腳本
zabbix監控中心——》管理——》報警媒介類型——》創建報警媒介——》填寫媒介信息(腳本)——》添加3個腳本參數——》添加
參數解釋:
{ALERT.SENDTO} ,收件人
{ALERT.SUBJECT},主題
{ALERT.MESSAGE},郵件內容
4 在服務端定義mail.py的python腳本 (此步驟是配置的核心操作)
4.1 在/etc/zabbix/zabbix_server.conf搜索AlertScriptsPath獲取mail.py的腳本路徑放置的目錄
#/etc/zabbix/zabbix_server.conf
搜索
AlertScriptsPath
找到
AlertScriptsPath=/usr/lib/zabbix/alertscripts
4.2 創建mail.py
[root@centos7-01 fonts]# cd /usr/lib/zabbix/alertscripts
[root@centos7-01 alertscripts]# vim 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.163.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]','此處定義郵箱客戶端授權密碼','[email protected]',to,subject,content) if __name__ == "__main__": main()
參數解釋:
以上參數根據#註釋解釋。
4.3 記住,給予755權限,否則影響進行後續。
[root@centos7-01 ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py
4.4 執行python腳本發郵件測試
參數格式就是剛剛建立的mail.py的三個參數:收件人,主題,內容,後兩者以""引用參數,空格分割
[root@centos7-01 alertscripts]# python mail.py [email protected] "warnning test" "ok"
4.5 檢查收件
收件成功
時間也吻合
[root@centos7-01 alertscripts]# date
2018年 05月 28日 星期一 18:03:43 CST
19.12-19.16