#前言:
粗一看挺複雜的,其實照着步驟作一下,很是簡單!linux
#意圖:
agentd端監控的服務down掉時,試圖將其重啓。vim
#環境:
一、VMware12 、 CentOS 7.1 、 zabbix 2.4.6
二、zabbix server ip :10.10.100.104
三、zabbix agentd ip:10.10.100.105
四、server端和agentd端分別關閉selinux和firewalld:bash
4.一、vim /etc/selinux/conf
selinux=disabled
4.二、service firewalld stop
chkconfig firewalld off
4.三、rebootapp
#流程:ide
一、操做在:agentd端函數
#自定義監控腳本測試
[root@localhost libexec]# cat httpd_service.sh #!/bin/bash proc=$(netstat -lnutp | grep httpd | grep -v grep | gawk '{print $7}' | gawk 'BEGIN {FS="/"}{print $1}' | wc -l) #獲取httpd proces信息 if [ "$proc" = "" ] then echo 0 #若是沒有httpd proces信息,echo 0 else echo $proc #若是有httpd proces信息,echo 統計的行數 fi
備註:若是你的腳本只返回一個固定值,那麼不會有圖形產生。3d
#zabbix_agentd.conf配置代理
vim /usr/local/zabbix/etc/zabbix_agentd.confrest
UnsafeUserParameters=1 #容許使用自定義item UserParameter=httpd_monitor,/usr/local/zabbix/libexec/httpd_service.sh #UserParameter=item名稱,腳本路徑 AllowRoot=1 #測試時使用root帳號的話,還要容許使用root Server=10.10.100.104 #server端ip EnableRemoteCommands=1 #容許執行遠程命令 LogFile=/tmp/zabbix_agentd.log #日誌路徑
警告:
要在「組態》動做」中使用遠程命令,「ServerActive項」 必定不能開啓,我就在這裏栽了跟頭。
二、操做在:server端
#添加自定義item、觸發器、圖形步驟:
一、添加主機
組態 》 主機 》 建立主機 》 填寫「主機名稱」、「可見名稱」,使用存在的羣組從右邊「其餘羣組」中選擇,不然在「新的羣組」中填寫,ip地址填寫 zabbix_agentd所在主機的ip地址。
二、添加應用集
組態 》 主機 》 在主機列表中,找到你所添加的「主機」,點擊「應用集」 》 建立應用集,填寫應用集「名稱」 》 添加
三、添加項目
組態 》 主機 》 在主機列表中,找到你所添加的「主機」,點擊「項目」 》 建立監控項,「名稱」自定義輸入,「鍵值」手動填寫(你在 zabbix_agentd.conf 》 UserParameter 中所定義item名稱)》 應用集,選擇第二步所建立的「應用集」 》 添加
四、添加觸發器
組態 》 主機 》 在主機列表中,找到你所添加的「主機」,點擊「觸發器」》
4.1 「名稱」自定義輸入,「表達式」點擊「添加」 》 「項目」點擊「選擇」 》 選擇第三步所建立的「項目」 》 「功能」,根據實際須要選擇表達式 ,我這裏選擇的是「最末(最近)T值是N」,「N」輸入0 》 插入
4.2 「嚴重性」選擇分類「災難」 》 添加
備註:
一、課添加多個觸發器,選擇不一樣的「嚴重性」,告訴你發生什麼級別的「problem」
二、表達式說明,{主機:項目.函數}=值(函數爲系統定義)
五、建立圖形
組態 》 主機 》 在主機列表中,找到你所添加的「主機」,點擊「圖形」》 建立圖形,「名稱」自定義輸入,「項目」 》 添加 》 選擇第三步所建立的
「項目」》 添加
至此,自定義item、觸發器、圖形添加完畢。
三、操做在:server端
#配置動做
一、組態 》 動做 》 建立動做 》
1.1 動做,填寫「名稱」便可
1.2 條件,計算方式,選擇「與」(看實際須要)》 新的觸發條件,主機 = xxx (選擇上面步驟所建立的主機) 》 添加
1.3 操做,「新的」 》 「階段」(從...到,執行多少次,步驟持續時間),操做類型選擇「遠端命令」
1.3.1 目標清單,「新的」目標選擇「主機」,(選擇上面步驟所建立的主機) 》 添加
1.4 類型,「自定義腳本」,執行在「zabbix代理」
1.5 命令,看須要,我這裏輸入「service httpd restart」
1.6 條件,看須要
1.6.1 通常爲爲:事件已知悉 = 非知悉 》 添加
添加
至此,「動做」添加完畢。
四、測試
一、在agentd端執行 service httpd stop
二、觀察zabbix server,提示problem,一會成功執行遠程命令恢復正常狀態。
實驗完畢。