zabbix--遠程執行命令

zabbix 遠程執行命令 重啓應用 服務器

使用遠程執行命令能夠在某些時候幫我作一些事情,達到輕量級的自動化,好比當 nginx、mysql、php、redis、tomcat、等等應用掛掉時幫咱們自動重啓並告警。再好比當磁盤空間滿了,自動幫咱們清理垃圾日誌文件等。看下官網的描述:php

使用遠程命令,您能夠定義在某些狀況下,監視的主機上會自動執行某個預約義的命令。mysql

在功能最明顯的用途中,您能夠嘗試:nginx

  • 若是沒有響應,則自動從新啓動某些應用程序(Web服務器,中間件,CRM)
  • 若是不響應請求,請使用IPMI「reboot」命令從新啓動一些遠程服務器
  • 若是磁盤空間不足,可自動釋放磁盤空間(刪除較舊的文件,清理/tmp)
  • 根據CPU負載,將VM從一個物理機移植到另外一個物理機
  • 在CPU(磁盤,內存,任何資源)不足的狀況下,將新節點添加到雲環境中

遠程命令限制爲255個字符。能夠經過將多個命令放置在新行上來執行多個命令。遠程命令可能包含宏。redis

  • 若是沒有響應,則自動從新啓動某些應用程序(Web服務器,中間件,CRM)
  • 若是不響應請求,請使用IPMI「reboot」命令從新啓動一些遠程服務器
  • 若是磁盤空間不足,可自動釋放磁盤空間(刪除較舊的文件,清理/ tmp)
  • 根據CPU負載,將VM從一個物理盒移植到另外一個物理盒
  • 在CPU(磁盤,內存,任何資源)不足的狀況下,將新節點添加到雲環境中

參考官檔:https://www.zabbix.com/documentation/4.0/zh/manual/config/notifications/action/operation/remote_commandsql

實戰

描述:該實戰是徹底建立一個新的模板,用於專們管理平常的一些服務等,在新建的模板上面建立對應服務的監控項、觸發器、動做等。vim

具體步驟:tomcat

zabbix-agent端bash

1)根據官網提示 首先打開zabbix-agent上的 EnableRemoteCommands 參數服務器

# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1

2)建立一個腳本存放路徑併發

# mkdir /etc/zabbix/script

3)建立一個新的腳本

# vim /etc/zabbix/script/service_status.sh
#!/bin/bash 
#Desc:zabbix 遠程執行命令、重啓應用 nginx、mysql、php、等
#Date:2019-5-8
#by:Lee-YJ

case $1 in
    Nginx)
        result=`pidof nginx  |wc -l`
        echo $result
        ;;
    Php)
        result=`pidof php-fpm  |wc -l`
        echo $result
        ;;
    Mysql)
        result=`pidof mysqld  |wc -l`
        echo $result
        ;;
    *)
        echo "Usage:$0(Nginx|Php|Mysql)"
        ;;
esac
"pidof nginx  |wc -l" 這條命令用於判斷nginx進程是否存在,若是存在則返回1,不存在返回0
腳本補充說明

4)賦予腳本執行權限

# chmod +x /etc/zabbix/script/service_status.sh

5)建立一個新的專門用於服務監控的子配置文件

# cd /etc/zabbix/zabbix_agentd.d
# vim userparameter_service.conf
# 獲取服務運行狀態
UserParameter=service.status[*],/etc/zabbix/script/service_status.sh $1

6)重啓 zabbix-agent

# service zabbix-agent restart

7)在 zabbix-server 端用命令進行測試

# zabbix_get -s 47.104.xx.xx -k "service.status[Nginx]"
1
# zabbix_get -s 47.104.xx.xx -k "service.status[Mysql]"
1
# zabbix_get -s 47.104.xx.xx -k "service.status[Php]"
1
當返回1時表示客戶端服務正常,當返回0時表示客戶端服務不正常(根據上面腳本內容所得)
測試結果補充說明

zabbix-server Web端

1)建立一個模板 Check Service (自定義名字)

建立完成後裏面什麼東西都沒有(應用集、監控項、觸發器、圖形等)

2)建立一個應用集 service (自定義名字)

3)建立監控項(鍵值說明,這裏咱們得根據配置文件裏面定義的來進行配置;service.status[Nginx])

4)建立觸發器(最新的t值說明:根據前面的命令結果判斷,pidof vsftpd  |wc -l ,若是nginx處於運行狀態該值爲1,反正爲0則爲掛了,因此這裏觸發器判斷是否爲0)

5)給監控的主機連接上 Check Service 模板

6)測試;在配監控的主機上停掉nginx,後觀察儀表盤

 

從上面能夠看到當nginx掛掉後會第一時間發送郵件告知相關人員;可是咱們更多的是但願可以幫咱們自動重啓nginx;那麼接下來配置自動重啓

7)配置動做(遠程執行命令、恢復操做等)

進入:配置 -> 動做 -> 建立動做

配置操做:配置操做時執行重啓命令,(注意:由於zabbix 進程是使用zabbix用戶來維護的,因此它沒有權限去執行重啓nginx命令,這裏須要先在 zabbix-agent 上受權)

# chmod 640 /etc/sudoers
# vim /etc/sudoers    //編輯sudo文件,添加以下兩行
# Allow 'zabbix' user to restart nginx without password
zabbix  ALL=NOPASSWD: /etc/init.d/nginx restart

添加恢復操做:

到這裏就配置完成了,當我在 zabbix-agent 上面停掉 nginx,便會自動幫咱們重啓併發送郵件

至此,zabbix遠程執行命令就配置完成了。

 

附zabbix-agent端上的配置腳本(只針對當前配置裏面的nginx、mysql、php)

#!/bin/bash 
#Desc:用於配置zabbix遠程執行命令,zabbix-agent端上面的操做(包括nginx、mysql、php)
#Date:2019-5-8
#by:Lee-YJ

mkdir /etc/zabbix/script -p

cat >>/etc/zabbix/script/service_status.sh<<EOF
#!/bin/bash 
#Desc:zabbix 遠程執行命令、重啓應用 nginx、mysql、php、等
#Date:2019-5-8
#by:Lee-YJ

case \$1 in
    Nginx)
        result=\`pidof nginx  |wc -l\`
        echo \$result
        ;;
    Php)
        result=\`pidof php-fpm  |wc -l\`
        echo \$result
        ;;
    Mysql)
        result=\`pidof mysqld  |wc -l\`
        echo \$result
        ;;
    *)
        echo "Usage:\$0(Nginx|Php|Mysql)"
        ;;
esac
EOF

chmod +x /etc/zabbix/script/service_status.sh

sed -i 's/# EnableRemoteCommands=0/EnableRemoteCommands=1/' /etc/zabbix/zabbix_agentd.conf

cat >/etc/zabbix/zabbix_agentd.d/userparameter_service.conf<<EOF
# 獲取服務運行狀態
UserParameter=service.status[*],/etc/zabbix/script/service_status.sh \$1
EOF

service zabbix-agent restart

chmod 640 /etc/sudoers
echo "zabbix  ALL=NOPASSWD: /etc/init.d/nginx restart" >> /etc/sudoers
echo "zabbix  ALL=NOPASSWD: /etc/init.d/mysqld restart" >> /etc/sudoers
echo "zabbix  ALL=NOPASSWD: /etc/init.d/php-fpm restart" >> /etc/sudoers
zabbix-agent_config.sh
相關文章
相關標籤/搜索