zabbix--遠程執行命令


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

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

使用遠程命令,您可以定義在某些情況下,監視的主機上會自動執行某個預定義的命令。

在功能最明顯的用途中,您可以嘗試:

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

遠程命令限制為255個字符。可以通過將多個命令放置在新行上來執行多個命令。遠程命令可能包含宏。

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

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

實戰

描述:該實戰是完全創建一個新的模板,用於專們管理日常的一些服務等,在新建的模板上面創建對應服務的監控項、觸發器、動作等。

具體步驟:

zabbix-agent端

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM