1. 程式人生 > >Ubuntu16.04和Centos7 Yum部署zabbix3.4 結合釘釘智能報警

Ubuntu16.04和Centos7 Yum部署zabbix3.4 結合釘釘智能報警

zcat agentd 新的 eve 默認端口 多臺 ubunt 裝包 對象

Ubuntu16.04和Centos7.4兩種操作系統部署zabbix3.4及zabbix功能介紹和各種小問題解決辦法,分享最新,最潮流,最幹的幹活,解決最實在的問題,此博客也是本人在對zabbix懵懂時期各種摸索排坑到正式上線,最後到生產中檢測200多臺生產機,至今為止為出現任何誤報警,不報警等情況


首先我們了解下zabbix監控的基礎概念,以及工作原理和框架:
什麽是zabbix:
Zabbix能監視各種網絡參數,保證服務器系統的安全運營;並提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。是一個基於WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案
agent端:主機通過安裝agent方式采集數據。

server端:通過收集agent發送的數據,寫入數據庫(MySQL,ORACLE等),再通過php+apache在web前端展示.
zabbix = cacti + nagios

優點和缺點:
優點:基於兩款工具優點於一身並更強大,實現企業級分布式監控。
缺點:zabbix一個服務端只能有一個lamp支撐,所以DB的吞吐有限和單臺server端服務器的處理能力有限,所以監控的主機有限,但是正常zabbix能滿足我們的需求

監控功能:
主機的性能監控、網絡設備性能監控、數據庫性能監控、多種告警方式、詳細的報表圖表繪制
監控主機zabbix有專用的agent,可以監控Linux,Windows,FreeBSD等 。

監控網絡設備zabbix通過SNMP,ssh(不多用)
可監控對象

設備:服務器,路由器,交換機
軟件:OS,網絡,應用程序
主機性能指標監控
故障監控: down機,服務不可用,主機不可達

工作原理:
一個監控系統運行的大概的流程是這樣的:
zabbix agent需要安裝到被監控的主機上,它負責定期收集各項數據,並發送到zabbix server端,zabbix server將數據存儲到數據庫中,zabbix web根據數據在前端進行展現和繪圖。這裏agent收集數據分為主動和被動兩種模式:
主動:agent請求server獲取主動的監控項列表,並主動將監控項內需要檢測的數據提交給server/proxy

被動:server向agent請求獲取監控項的數據,agent返回數據。

zabbix重要組件:
1、Zabbix Server:負責接收agent發送的報告信息的核心組件,所有配置,統計數據及操作數據均由其組織進行;
2、Database Storage:專用於存儲所有配置信息,以及由zabbix收集的數據;
3、Web interface:zabbix的GUI接口,通常與Server運行在同一臺主機上;
4、Proxy:可選組件,常用於分布監控環境中,代理Server收集部分被監控端的監控數據並統一發往Server端;
5、Agent:部署在被監控主機上,負責收集本地數據並發往Server端或Proxy端;
註:zabbix node也是 zabbix server的一種 。

zabbix監控環境中基本概念:
1、主機(host):要監控的網絡設備,可由IP或DNS名稱指定;
2、主機組(host group):主機的邏輯容器,可以包含主機和模板,但同一個組織內的主機和模板不能互相鏈接;主機組通常在給用戶或用戶組指派監控權限時使用;
3、監控項(item):一個特定監控指標的相關的數據;這些數據來自於被監控對象;item是zabbix進行數據收集的核心,相對某個監控對象,每個item都由"key"標識;
4、觸發器(trigger):一個表達式,用於評估某監控對象的特定item內接收到的數據是否在合理範圍內,也就是閾值;接收的數據量大於閾值時,觸發器狀態將從"OK"轉變為"Problem",當數據再次恢復到合理範圍,又轉變為"OK";
5、事件(event):觸發一個值得關註的事情,比如觸發器狀態轉變,新的agent或重新上線的agent的自動註冊等;
6、動作(action):指對於特定事件事先定義的處理方法,如發送通知,何時執行操作;
7、報警升級(escalation):發送警報或者執行遠程命令的自定義方案,如每隔5分鐘發送一次警報,共發送5次等;
8、媒介(media):發送通知的手段或者通道,如Email、Jabber或者SMS等;
9、通知(notification):通過選定的媒介向用戶發送的有關某事件的信息;
10、遠程命令(remote command):預定義的命令,可在被監控主機處於某特定條件下時自動執行;
11、模板(template):用於快速定義被監控主機的預設條目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接鏈接至某個主機;
12、應用(application):一組item的集合;
13、web場景(web scennario):用於檢測web站點可用性的一個活多個HTTP請求;
14、前端(frontend):Zabbix的web接口;

zabbix框架:
在實際監控架構中,zabbix根據網絡環境、監控規模等 分了三種架構: server-client 、master-node-client、server-proxy-client三種 。
1、server-client架構
也是zabbix的最簡單的架構,監控機和被監控機之間不經過任何代理 ,直接由zabbix server和zabbix agentd之間進行數據交互。適用於網絡比較簡單,設備比較少的監控環境 。
2、server-proxy-client架構
其中proxy是server、client之間溝通的一個橋梁,proxy本身沒有前端,而且其本身並不存放數據,只是將agentd發來的數據暫時存放,而後再提交給server 。該架構經常是和master-node-client架構做比較的架構 ,一般適用於跨機房、跨網絡的中型網絡架構的監控。
3、master-node-client架構
該架構是zabbix最復雜的監控架構,適用於跨網絡、跨機房、設備較多的大型環境 。每個node同時也是一個server端,node下面可以接proxy,也可以直接接client 。node有自已的配置文件和數據庫,其要做的是將配置信息和監控數據向master同步,master的故障或損壞對node其下架構的完整性。

如:
技術分享圖片


廢話不多說進入真題,參考文獻如下:
https://www.baidu.com/link?url=iGDyXTko4oHDeqUNDp-4vCFrIjPZ0vlz1m8JLQ1Fp7ny8mHFUytJNDL_8wmjTNhx&wd=&eqid=ec6b1e6e0000d1bc000000025b55a309


實驗所需安裝包(Centos和Ubuntu都有):
鏈接:https://pan.baidu.com/s/1Du_45JKXyhBp8r5rSw7WFA 密碼:afy0

為了方便我們把防火墻和selinux關閉了(下面命令是Centos7,Ubuntu網上自己找下,在此不多做解釋,節省時間)

systemctl stop firewalld                #關閉防火墻
systemctl disable firewalld           #開機自動關閉防火墻
setenforce 0                                 #零時關閉selinux
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config     #永久關閉
  1. 安裝zabbix調用mysql及php的驅動
    Ubuntu:
    #下載安裝deb包,若下載過慢,可在我提供的百度雲中下載
    wget https://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+bionic_all.deb
    #安裝deb包
    dpkg -i zabbix-release_3.4-1+bionic_all.deb
    #更新源
    apt update

Centos:

#下載並安裝rpm包
rpm -i https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

註:如果網速太慢使用百度雲中下載的安裝的話直接安裝即可:
Ubuntu:dpkg -i zabbix-release_3.4-1+bionic_all.deb Centos:rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm

Ubuntu:

apt -y install zabbix-server-mysql zabbix-frontend-php zabbix-agent

Centos:

yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent 

註:很多首次安裝zabbix的人可能會認為上面的操作是安裝mysql,這個安裝了mysql調用mysql的驅動

zabbix依賴lamp平臺,所以我們需要安裝Apache,PHP,MySQL(若有mysql可以直接使用,不必為zabbix安裝一個mysql)

  1. 安裝zabbix依賴程序:
    Ubuntu:
    apt-get install php7.0 php7.0-gd libapache2-mod-php7.0 php7.0-mysql php7.0-bcmath php7.0-mbstring php7.0-xml apache2            #若沒有mysql可以自己安裝一次,本片博客直接使用阿裏雲的RDS

Centos:

yum install php-common php-gd php-mbstring php-xml php-bcmath php-mysql php-cli php-devel php-pear httpd

創建數據庫和用戶並導入源數據

Ubuntu:

mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@‘%‘ identified by ‘zabbix‘;
mysql> quit;

導入數據:

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

Centos:

#創建庫和用戶和Ubuntu是一樣的
#導入數據
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix 

修改zabbix主配文件(Centos和Ubuntu相同)

DBHost=IP                       #mysql數據庫的地址
DBName=zabbix              #數據庫的庫名
DBUser=zabbix                #zabbix調取數據庫的用戶名
DBPort=3306                   #數據庫的端口

註:這些是基本必須要修改的東西,還可以修改定義zabbix的log,pid,如:

LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/logs/zabbix_server.pid
#如果自定義的話,必須要創建這個目錄,否則啟動可能失敗,並且給這個目錄與zabbix可執行權限

這個地方一定要註意,修改php的時區,如果不修改話,後面一定會出錯:

vim /etc/apache2/conf-enabled/zabbix.conf
# php_value date.timezone Europe/Riga  (修改前)
php_value date.timezone Asia/Shanghai   (修改後)

此時zabbix我們安裝的就差不多了,接下我們開始啟動

註:在啟動zabbix最好先看下Apache的端口是否被占用,一般被占用的可能性非常大,修改Ubuntu的Apache2默認端口:

vim /etc/apache2/ports.conf
修改Listen 
如:Listen 8082

Centos:

vim /etc/httpd/conf/httpd.conf
#修改42行 Listen 8082

啟動zabbix,先啟動Apache:
Ubuntu:

systemctl start apache2
#Ubuntu啟動Apache的方式和Centos有所不同

Centos:

systemctl start httpd

啟動zabbix-server(centos和Ubuntu相同)

systemctl start zabbix-server
#啟動的時候我們一定要加-server,因為zabbix分server端和agent端

啟動zabbix-server後查看端口狀態:

netstat -anpt | grep 10051
#server端默認端口是10051,agent端默認是10050

註:若啟動沒有報錯,但是systemctl status zabbix-server 和netstat -anpt | grep 10051都沒有正常顯示,我們不妨看看錯誤日誌(/var/log/zabbix),正常情況啟動失敗的問題大多出在調取數據庫的數據出問題,那麽我們首先可以telnet下數據庫的端口是否有問題,若 沒問題可以在看下zabbix主配文件中寫的數據庫IP,Port,User,Password是否有問題,若沒問題,在看看端口是否被占用,一般只會出現這幾個問題,若這幾個都沒問題,依舊出錯,那你就看下面我的聯系咱兩一起探討研究下吧

啟動沒有問題後直接訪問:
http://[zabbix-server IP]:[apache port]/zabbix
接下來,web頁面的操作不管什麽操作系統都是一樣的,原因就不說了

直接點擊下一步即可(Net step)
技術分享圖片

這個地方一定要註意,右邊的框裏面必須全都是OK,否則進行不下去:(ok的話直接下一步即可)
註:一遍這個地方不ok,那麽你可以看下你的php時區有沒有寫對,或者有沒有生效,或者修改了,忘了重啟(重啟Apache即可,但也可把zabbix-server重啟下)
技術分享圖片

接下來我們開始設置數據庫了:
技術分享圖片

Database type                                         #選擇數據庫類型,我們一般使用mysql即可
Database host                                         #數據庫的IP地址
Database port                                         #數據庫的端口(mysql默認3306,根據實際情況設置)
Database name                                      #數據庫的庫名(一遍的話是zabbix)
User             #zabbix調取數據庫數據的用戶(如果上面zabbix的庫沒有給zabbix賦權的話,這裏給root用戶即可)
Passsword                                              #上面User用戶的密碼

這兒就是個名字,隨便設置都行,默認也可以:
技術分享圖片

建議按照實際情況填寫:
Host                                                     #zabbix-server IP
Port                                                      #zabbix-server端口(10051)
Name                                                   #zabbix名字(填寫zabbix-server)

這兒顯示的是你進入web頁面填寫的信息,確認無誤下一步即可:
技術分享圖片

此時會通知我們Successfully,表示成功了,下一步就可以了:
技術分享圖片

苦盡甘來,我們設置都結束了,可以登錄zabbix:
默認用戶:Admin
默認密碼:zabbix
技術分享圖片

至此我們的搭建已經全線完成了,如果有問題聯系QQ:1715721936


下面我們介紹zabbix Web裏面的設置,以及zabbix的使用方法,以及監控方式,以及修改默認模板,添加監控報警等等,詳情請跟著我的步伐往下走

不多逼逼,直接進入正題:

剛進入zabbix web頁面的時候顯示的全是英文,對於英國歷史好的人來說沒問題,但對我這種英語垃圾的連幼兒園小孩都不如的人,還是設置中文的比較好:

在主頁點開這個小人頭:
技術分享圖片

進入後:
技術分享圖片

zabbix3.4版本默認就是支持中文的,所以網上有寫教程讓你設置下面這些東西,都是3.4版本之前的教程,3.4至3.4以上都是默認即可:
技術分享圖片

一般Centos系統的話裏面都多個國家的字符集,但是Ubuntu裏面默認就沒有中文字符集,裏面chinese(zh_CN)顯示是灰色的,無法選中,旁邊一直顯示: You are not able to choose some of the languages, because locales for them are not installed on the web server. 這個就是你操作系統沒有中文字符集,你的給操作系統裝中文字符集,裝完後得等特別長時間,後者重啟zabbix-server這兒就顯示跟我的一樣可以選擇國語了,如果這些你都整了,但是依舊選擇不了中文,那麽告訴你,肯定是你創建庫的時候沒有Utf-8

選擇中文後更新,接下來就是我們熟悉的畫面了:
技術分享圖片

說到這,很多人就有點納悶,為什麽我的zabbix是白色的那麽醜,李優秀你的zabbix怎麽是黑的這麽炫,類似這些小問題我會一一教大家如何設置操作的,zabbix一定要註意細節,特別時候面采集數據,以及監控的時候,一定要特別註意,否則就檢測不到數據:


修改zabbix主題顏色:
還是點擊那個小人,在小人裏面點擊主題,選擇Dark,然後更新即可,這時候你就可以和我一樣優秀了
技術分享圖片


這時候我們的zabbix基本操作就基本圓滿了,下面我們開始介紹zabbix的使用方法:
首先我們添加agent(客戶端),這樣我們就可以通過agent端來采集數據,然後在傳輸到server進行監控報警了

安裝agent:
agent安裝我們直接使用yum或者apt即可,但是一定要保證zabbix-server 端和agent端的版本是一樣的,如果不一樣的話監控是會出問題的,agent采集數據是不分操作系統的,只要你把信息填好了,不管agent在windows上還是Centos,還是Ubuntu上都沒問題的,下面演示安裝agent

註:在下載deb或者rpm包的時候一定要註意,這些包是根據你的操作系統版本下的,本博客提供的包和下載鏈接,centos系統全是7版本的,Ubuntu的全是16.04版本的
Ubuntu:

wget https://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb
dpkg -i zabbix-release_3.4-1+xenial_all.deb
apt update 
apt -y install zabbix-agent

Centos:

rpm -i https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
yum -y install zabbix-agent

配置zabbix-agent:(配置Ubuntu和Centos都是一樣的)

vim /etc/zabbix/zabbix_agentd.conf
修改內容如下:
Server=[server端IP]                                  #server端主動取數據的配置
ListenPort=10050                                     #agent端進程端口
ServerActive=[server端的IP]                    #agent端主動推數據的配置
Hostname=zabbix-server                         #主機名,理論上要是server端能解析的才行,但是隨便寫也行,後期添加監控主機的的時候需要這個名字,最好是寫本機IP
Timeout=15                                              #超時時間
UnsafeUserParameters=1                       #開啟key驗證,為了後面添加自定義腳本監控
Include=/etc/zabbix/zabbix_agentd.d/*.conf     #添加自定義腳本監控這是zabbix加載/etc/zabbix/zabbix_agent/目錄下所有以.conf結尾的配置文件
#Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/  #開啟上面那個配置,下面的就要註釋掉,否則會沖突,zabbix-agent啟動失敗

配置完成啟動zabbix-agent即可:

systemctl start zabbix-agent
systemctl enable zabbix-agent         #加入開機自啟動
netstat -anpt | grep 10050                #查看端口監聽

顯示如下即可:
技術分享圖片

zabbix-agent 配置好了,就不用管他了,直接到server-web端設置即可:
先點配置再點主機,再點創建主機:

技術分享圖片

首先編寫主機名,主機名即是zabbix-agent裏面的Hostname,這兩個必須一致否則,檢測不到主機,然後編寫可見主機名,這個是在後面查找數據的時候要用到的主機名,接著是選擇這個檢測服務器在那個組裏面,可以在下面新建群組,也可以向我這樣選擇已有得我,最後是agent端的IP和port,最後點擊模板,我們先 調用自帶的模板:

技術分享圖片
先點擊選擇,在裏面找到自己所需要的模板,一般Linux服務器就選擇Template OS Linux即可,然後添加,最後更新:
技術分享圖片
添加完後,在配置 主機裏面我們可以看到已經有我們添加的主機了,如果看到未啟用,我們需要手動點擊下,讓他啟用,然後等個三五分鐘,有的時間可能更長,等ZBX亮了,就說明監控上了
註:zabbix監控linux主機的cpu,內存,磁盤是自動發現的,這些我們不用人工去幹預

技術分享圖片

這時候我們點擊檢測中,然後點擊最新數據,在主機中填寫上面填寫的可見主機名,然後應用就可以看到我們監控的數據了:
技術分享圖片
最後我們點擊旁邊的圖形就能看到我們當前監控數據情況了:
技術分享圖片
在圖形裏面我們可以看歷史數據(在上面縮放裏面調整,歷史數據保留的時間在配置中可以設置,在此不做演示)


註:使用中文後我們的最新數據中的最下角的中文肯定會亂碼的,即使3.4版本支持中文也會,這是zabbix裏面的字體有關系,下面是解決辦法

修改最新數據圖形中的亂碼:
從windows上拷貝字符集到服務器上:
打開windows控制面板>字體>選擇一種字體復制到桌面,然後使用rz導入到服務器中
技術分享圖片
字體一般選擇簡體就行,更具個人愛好,你選擇哪種字體後期顯示就是什麽字體,把字體拷到服務器後:
Ubuntu和Centos系統的操作一樣:

把字體包simkai.ttf 移動到/usr/share/zabbix/fonts目錄下
若,simkai不是一.ttf後綴的需要改成.ttf後綴,並把原有的字體mv到別的地方
/usr/share/zabbix/include/defines.inc.php
sed –i s/DejaVuSans.ttf/simkai/g defines.inc.php

重啟zabbix-server即可生效


下面我們說下已定義腳本監控:
我們上面在zabbix-agent裏面配置了

Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1

在此處就可以用到了,現在/etc/zabbix/zabbix_agent.d目錄下創建以.conf後綴的配置文件都會被zabbix-agent讀取,如:
技術分享圖片
它自帶的userparameter_mysql.conf這個文件我們不用管它,直接編輯自己的配置文件即可

文件的內容有嚴格要求,如:
技術分享圖片

UserParameter=                             #是固定格式
java_8888                                       #是自己定義的key,待會兒添加監控的時候回用到
/usr/local/src/lijun/8888.sh              #是自己定義的腳本,也可以是命令

下面是我自己用shell寫的一個簡單的腳本,獲取http返回狀態碼來檢測當前程序的狀態:

#!/bin/bash
ID=`curl -I http://[主機IP]:[程序port] -s | grep HTTP | awk ‘{print $2}‘`
if [ "$ID" = "200" ];then
        echo "1"
elif [ "$ID" = "302" ];then
    echo "1"
else
        echo "0"
fi

配置完這些我們重啟zabbix-agent,這個地方一定要重啟,後期zabbix-server端采集不到agent上面的數據的時候你首先得想到時候agent是否重啟,後面會說到agent采集不到數據的各種原因

下面是在zabbix-server web頁面中添加主機的自定義監控:
在配置主機中點擊進入你要添加腳本監控的那臺主機中
技術分享圖片

然後選擇添加監控項:
技術分享圖片

進入後右上角有個創建監控項,對,沒錯!就是點擊他:

技術分享圖片

名稱:被監控的程序名稱
鍵值:是在/etc/zabbix/zabbix_agent.d/java-8888.conf中設置的,如:
技術分享圖片
應用采集可以新添加一個,這樣我們可以把一類監控程序全放到一個采集裏面,方便產看,直接在上面填寫即可,還可以在線面選擇,然後點擊添加即可

接下來我們看下我們添加的監控項:(剛添加完需要稍等會兒才會有數據)
技術分享圖片

在這裏面查找我們剛剛添加的,監控,如下:
技術分享圖片
JAVA_CURL是我們剛剛新建的應用采集,點擊右側的圖形,即可看到我們采集的數據:
技術分享圖片
此時我們腳本自定義監控就設置完成了


有的時候我們zabbix模板裏面定義的監控指標和閾值不滿意,接下來我帶大家一起來設置下:
修改zabbix自定義模板:
選擇配,置模板:
技術分享圖片
在下面查找我們的模板,我們剛剛調用的那個模板第二頁:
技術分享圖片
點擊到模板裏面,如:
技術分享圖片
找到需要修改的模板,然後點擊進入,即可修改
註:修改模板的話,直接應用到全局 ,只要是主機調用這個模板,在這修改後,調用的主機都會被影響


最後給大家講下觸發器和zabbix結合釘釘做智能報警:

先說下修改模板自帶的觸發器
更上面的步驟一樣選擇的是觸發器而不是監控項
技術分享圖片

最後點擊進入就可以修改了,如:
技術分享圖片
只有在這裏面才能修改,在其他地方你只能看到觸發器的配置,但是卻無權修改

註:到這大家可定還會發現個問題,模板裏面的東西都能修改,但是為什麽磁盤和網絡的閾值卻沒法修改,下面會跟大家說下:
更上面的操作一樣,但這地方我們需要選擇自動發現規則,在這裏面即可調整,隨心所欲的閾值了
技術分享圖片
如下:
技術分享圖片
需要再次點擊到觸發器中才能修改,如:
技術分享圖片

創建自定義觸發器:
首先選擇配置,主機,在選擇哪個主機,再點觸發器,然後選擇 創建觸發器:
技術分享圖片
名稱:觸發器名
嚴重性:選擇觸發後報出的當前主機程序的情況
表達式:選擇添加,如:
技術分享圖片
在監控項裏面選擇我們想對應的監控項
功能:條件表達式中判斷語句,如:
技術分享圖片
註:一般我框的這幾個是最好用的,最新的T值 < N :意思為當采集到的最新一個值,小於N的時候,就觸發 觸發器,N這個值在下面的N選項中設置
技術分享圖片

間隔秒:間隔多少秒觸發一次,一般默認即可
然後選擇添加即可,完成的觸發器如下:
技術分享圖片


下面是釘釘報警環節:
首先我給大家理下報警的思路:首先我們需要采集數據然後然後創建觸發器,在觸發器中添加報警閾值,當采集的數據觸發了觸發器,那麽就會觸發報警媒介類型,最後觸發腳本,在使用釘釘機器人進行報警

釘釘提供了豐富的API接口,我們直接使用就行:
首先在釘釘中創建群聊,在群聊中添加機器人(這個就不做演示)
我們需要用到機器人的webhook,往下面python腳本中添加:
技術分享圖片

我們需要把在zabbix-server端創建觸發腳本,腳本內容如下:

cd /usr/lib/zabbix/alertscripts
vim dingdingrobot.py
內容如:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Author: [email protected]
# My blog: http://blog.51cto.com/13859393
import requests
import json
import sys
import os

headers = {‘Content-Type‘: ‘application/json;charset=utf-8‘}
api_url = "https://oapi.dingtalk.com/robot/send?access_token=[webhook裏面的https://**************************************]"

def msg(text):
    json_text= {
     "msgtype": "text",
        "at": {
            "atMobiles": [
                "187**********"
            ],
            "isAtAll": False
        },
        "text": {
            "content": text
        }
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content

if __name__ == ‘__main__‘:
    text = sys.argv[1]
    msg(text)

對腳本進行賦權:

chmod a+u dingdingrobot.py

接下來我們手動調試下看看python腳本好不好用:

python dingdingrobot.py 123

在看看釘釘群聊中是否有消息:
技術分享圖片
這說明我們的腳本調用zabbix可愛的小機器人是沒問題的,這時候是不是激動的大喊nice,nice

接下來我們在zabbix這設置讓他自動報警:

點擊管理,報警媒介類型,創建媒介類型:
技術分享圖片

創建的內容如下:
技術分享圖片

接下來我們設置使用那個用戶來進行執行報警,一般使用Admin用戶:
選擇管理,用戶
技術分享圖片
點擊進入Admin用戶,進行設置:
在媒介中選擇添加
類型選擇:選擇我們剛剛在報警媒介中設置的釘釘報警
收件人:可以隨便設置
當前時間可以保持默認:即為7 * 24 小時不間斷
如果存在嚴重性則使用:根據自己情況定
技術分享圖片

下面是創建動作:
配置,動作,創建動作:
技術分享圖片

首先創建動作:
技術分享圖片

在創建操作:
技術分享圖片

創建恢復操作:
技術分享圖片

確認操作:
技術分享圖片
點擊更新即可

三個操作內容分別如下 :

服務器:{HOST.NAME}發生: {TRIGGER.NAME}故障!
{
告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
}

服務器:{HOST.NAME}: {TRIGGER.NAME}已恢復!
{
告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
恢復時間:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持續時間:{EVENT.AGE}
事件ID:{EVENT.ID}
}

服務器:{HOST.NAME}: 報警確認
{
確認人:{USER.FULLNAME} 
時間:{ACK.DATE} {ACK.TIME} 
確認信息如下:
"{ACK.MESSAGE}"
問題服務器IP:{HOSTNAME1}
問題ID:{EVENT.ID}
當前的問題是: {TRIGGER.NAME}
}

註:這裏面的內容可任意修改


最後來個演示釘釘報警演示:

創建觸發器:
技術分享圖片

然後在服務器上把監控的這個程序停掉,看看是否有報警:
開始報警:
技術分享圖片
報警恢復:
技術分享圖片

至此zabbix的基本使用已經沒有問題了

本博客有很多細節並沒有寫好,後面還會持續跟進細節內容講解


在看本博客進行試驗過程中如果遇到問題請聯系QQ:1715721936,歡迎大家一起探討,一起研究學習

Ubuntu16.04和Centos7 Yum部署zabbix3.4 結合釘釘智能報警