66.添加自定義監控項目 配置郵件告警與測試及處理問題

19.12 添加自定義監控項目python

19.13/19.14 配置郵件告警linux

19.15 測試告警 (包括主動與被動、總結)git

19.16 不發郵件的問題處理web

 

 

 

 

 

19.12 添加自定義監控項目:shell

 

 

 

不少的監控項目是在模板裏配置體現的。可是有時候會有一些個性化的需求。好比咱們就像知道某一個業務的數據,想天天的會員的活躍度,那這些數據其實是能夠經過數據庫裏的表的數字體現出來的。可是咱們zabbix模板是不可能提供這麼詳細的監控項目的。這時候就要寫腳本吧這個數字展示出來。而後經過一個監控項目再去造成圖表。這就是zabbix可讓咱們自定義的去監控一個項目:數據庫

 

~1.需求:監控某臺web的80端口鏈接數,並出圖vim

~2.兩步:1)zabbix監控中心建立監控項目;2)針對該監控項目以圖形展示瀏覽器

~3.對於第一步,須要到客戶端定義腳本bash

vim /usr/local/sbin/estab.sh //內容以下(路徑的話無所謂,名字也自定義)服務器

#!/bin/bash

##如下獲取80端口併發鏈接數的命令

netstat -ant |grep ':80 ' |grep -c ESTABLISHED #80端口下ESTABLISHED狀態的鏈接數有多少個(正常一臺服務器數量不會超過100)

~4.chmod 755 /usr/local/sbin/estab.sh

#目的是給zabbix執行,因此要設置權限

~5.客戶端上編輯配置文件 vim /etc/zabbix/zabbix_agentd.conf//增長

UnsafeUserParameters=1 //表示使用自定義腳本

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh

#my.estab.count這個名字是在web界面下,鍵值那一欄裏填的要保持一致

#[*]表示參數爲空。若是有參數就寫進去,以逗號分隔

//自定義監控項的key爲my.estab.count,後面的[*]裏面寫腳本的參數,若是沒有參數則能夠省略,腳本爲/usr/local/sbin/estab.sh

~6.重啓zabbix-agent服務 systemctl restart zabbix-agent

~7.首先到服務端驗證,執行命令

zabbix_get -s 192.168.208.128 -p 10050 -k 'my.estab.count'

#zabbix_get爲命令行工具。收跟客戶端的數字是同樣的,爲0

~8.而後在zabbix監控中心(瀏覽器)配置增長監控項目

鍵值寫my.estab.count #就是咱們在~05.步驟,配置客戶端文件所設置額名字,要與他保持一致

~9.添加該項目後,到「監測中」 「最新數據」查看剛添加的項目是否有數據出現

~10.有了數據就能夠添加圖形了

「配置」「主機」 「圖形」 「建立圖形」

 

 

 

實例:

[root@axinlinux-02 ~]# vi /usr/local/sbin/estab.sh

#!/bin/bash

##如下獲取80端口併發鏈接數的命令

netstat -ant |grep ':80 ' |grep -c ESTABLISHED

[root@axinlinux-02 ~]# netstat -ant |grep ':80 ' |grep -c ESTABLISHED

0 #先在客戶端上這個命令,先出這個數字。在跟後面的服務端操做的數字是否一致

[root@axinlinux-02 ~]# chmod 755 /usr/local/sbin/estab.sh

[root@axinlinux-02 ~]# vi /etc/zabbix/zabbix_agentd.conf

### Option: UnsafeUserParameters

# Allow all characters to be passed in arguments to user-defined parameters.

# The following characters are not allowed:

# \ ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @

# Additionally, newline characters are not allowed.

# 0 - do not allow

# 1 - allow

#

# Mandatory: no

# Range: 0-1

# Default:

# UnsafeUserParameters=0 #搜索UnsafeUserParameters。在這一行下面定義

UnsafeUserParameters=1

### Option: UserParameter

# User-defined parameter to monitor. There can be several user-defined parameters.

# Format: UserParameter=<key>,<shell command>

# See 'zabbix_agentd' directory for examples.

#

# Mandatory: no

# Default:

# UserParameter= #搜索 UserParameter。在這一行下面定義

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh

[root@axinlinux-02 ~]# systemctl restart zabbix-agent

[root@axinlinux-01 ~]# zabbix_get -s 192.168.208.130 -p 10050 -k 'my.estab.count'

0 #這個數字對應客戶端的一開始測試的數字

而後下面咱們再在監控中心,增長這個監控項目

 

添加完監控項,咱們還要給他作圖形,由於這是咱們的需求

 

以上完成需求。若是咱們的網站訪問量很大,每隔30秒就會出一次數據

那麼咱們還能夠添加觸發器:

 

以上,其中表達式添加如何選以下圖:

以上,知足咱們設置的條件就會報警(咱們設置的警告級別)。至於怎麼報警後面咱們在講

總結:首先咱們要經過腳本得到出這個數字,由於咱們成圖的這個要求都是這個數字。寫完腳本再給權限,而後zabbix1 get這個工具能在服務端得到這個數字。而後再監控中心得到這個監控項,而後去建立圖形。有須要報警的話再建立觸發器

 

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

19.13/19.14 配置郵件告警:

 

 

 

 

~1.使用163或者QQ郵箱發告警郵件

~2.首先登陸你的163郵箱,設置開啓POP三、IMAP、SMTP服務

~3.開啓並記錄受權碼

~4.而後到監控中心設置郵件告警

「管理」,「報警媒介類型」,「建立媒體類型」

{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

#並在腳本參數裏添加這三個參數

{ALERT.SENDTO}表示發給誰,就是你接受郵件的郵箱地址

{ALERT.SUBJECT}是主題

{ALERT.MESSAGE}是郵件內容

以上這三個分佈在咱們的pytion腳本的三個參數裏,等會會在命令行下測試

 

~5.建立報警腳本mail.py(配置文件裏定義的AlertScriptsPAth定義的,就是咱們的mail.py文件必需要放在他定義的這個路徑下)

vim /usr/lib/zabbix/alertscripts/mail.py//內容參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

~6.chmod 755 /usr/lib/zabbix/alertscripts/mail.py #!!很是重要

~7.python mail.py wangxinlinux@163.com "這是一封測試的郵件" "linux21:41"

#測試能不能發郵件,並回到郵箱裏檢查

~8.建立一個接受告警郵件的用戶,「管理」,「用戶」,「建立用戶」,「報警媒介」,類型選擇「baojing」,注意用戶的權限,若是沒有須要到用戶組去設置權限

~9.設置動做(意思就是觸發了規則,要作什麼,郵件或是短信等等),「配置」,「動做」,「建立動做」,名稱寫「sendmail」(自定義),「操做」頁面,內容以下

HOST:{HOST.NAME} {HOST.IP} #定義的hostname

TIME:{EVENT.DATE} {EVENT.TIME} #發生的日期和時間

LEVEL:{TRIGGER.SEVERITY} #示警度。剛剛定義的未分類

NAME:{TRIGGER.NAME} #咱們以前定義的KEY,是哪一個觸發器觸發了告警

messages:{ITEM.NAME}:{ITEM.VALUE} #告警的時候會出現什麼樣的狀態碼

ID:{EVENT.ID} #這個事件的ID

「新的觸發條件」,A維護狀態 非在 維護,B觸發器示警度>=未分類

「操做」,選擇發送的用戶爲剛建立的用戶,僅送到選擇「baojing」

切換到「恢復操做」,把信息改爲以下

HOST:{HOST.NAME} {HOST.IP}

TIME:{EVENT.DATE} {EVENT.TIME}

LEVEL:{TRIGGER.SEVERITY}

NAME:{TRIGGER.NAME}

messages:{ITEM.NAME}:{ITEM.VALUE}

ID:{EVENT.ID}

點擊「新的」,「操做」,選擇發送的用戶爲剛建立的用戶,僅送到選擇「baojing」

~10.測試告警

 

 

 

 

 

實例:

開啓服務後,咱們在去監控中心設置郵件告警

 

 

而後回到linux01機器上來:

[root@axinlinux-01 ~]# vi /usr/lib/zabbix/alertscripts/mail.py #建立這個python腳本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' #由於用的163,因此定義爲163

gport = 25 #25端口,不加密的那個

 

try:

# msg = MIMEText(unicode(content).encode('utf-8')) //若是發送的郵件有亂碼,能夠嘗試把這行改爲以下:

msg = MIMEText(content,'plan','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('wangxin@163.com','***********','wangxin@163.com',to,subject,content)

郵箱 郵箱密碼 郵箱

if __name__ == "__main__":

main()

#####腳本使用說明######

#1. 首先定義好腳本中的郵箱帳號和密碼

#2. 腳本執行命令爲:python mail.py 目標郵箱 "郵件主題" "郵件內容"

[root@axinlinux-01 ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py #必定要記得改權限,否則那不可以報警

[root@axinlinux-01 alertscripts]# python mail.py wangxinlinux@163.com "這是一封測試的郵件" "linux21:41" #咱們測試一下能不能發郵件。並回到163郵箱裏檢查是否收到這封郵件

而後接下來,咱們就要建立一個接受郵件的用戶了(點擊建立用戶):

以上用戶設置完

咱們還要設置他的報警媒介:

以上,報警媒介設置完

咱們還要設置他的用戶組權限。要去用戶組裏去設置:

 

以上咱們,設置了全部組的權限。(選擇完成過別忘記點添加)

以上,別忘了,咱們再去檢查一下全部組的權限是否是讀寫。很重要!!

而後去設置動做:

 

 

 

以上設置動做、操做、恢復動做

以上所有配置郵箱告警就已完成

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

 

19.15 測試告警:

 

 

~~擴展補充

更改監控項的主動與被動:

點擊模板,axin那一行裏點監控項,選擇一項。以下圖:

 

 

 

~~總結:

告警發郵件

1.163郵箱開啓服務,並記錄受權碼。受權碼要寫到到腳本里面的

2.監控中心設置郵件告警。首先作一個告警媒介。實驗中名字就叫 baojing,注意名字與linux上的腳本名字(mail.py)一致,三個參數寫對而且順序不能改

3.在linux上配置mail.py腳本。路徑要搞對/usr/lib/zabbix/alertscripts/這個路徑下建立mail.py(固然名字自定義)

4.千萬記得配置完的mail.py這個腳本權限改成755

5.配置用戶。要在用戶組權限裏把這個用戶的權限改成讀寫,由於咱們要把這個用戶加入到組裏面(組的權限也要是讀寫)。這個用戶要加入到組裏面(咱們實驗中加入到了admin*組裏面去了)。而且報警媒介再次檢查權限與郵箱地址,而後測試,在linux上命令行給本身發一封測試郵件

6.動做。建立的時候,名稱自定義,條件保持默認。操做項裏,格式複製筆記裏面的,還要加 新的(就是定義給誰發郵件)、僅送到選擇咱們設置的 baojing 這個告警媒介。恢復操做項,格式同樣複製筆記裏的,還要加 新的 (給誰發郵件)、僅送到選擇咱們設置的 baojing

7.測試。咱們人爲的搞個觸發器出來

好比系統負載當他小於1的時候就告警(正常是0,沒有負載)。故意的搞錯讓他告警發郵件。關注儀表盤的最近20個問題這一欄

 

 

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

19.16 不發郵件的問題處理:

 

~~出現問題幾個排查項:

1.保證腳本能發郵件、而且有權限

2.檢查報警媒介有沒有配置對

3.查看用戶。報警媒介、權限

4.動做。條件保持默認便可。操做項(給誰發)、恢復操做項(給誰發)

 

以上若都沒問題,只能重作一遍,有多是zabbix的bug

相關文章
相關標籤/搜索