1. 程式人生 > >19.12-19.16

19.12-19.16

zabbix 添加監控項目 告警設置

19.12 添加自定義監控項目

需求:監控某臺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