iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
自我挑戰組

應用Zabbix 進行全方位監控系列 第 24

Zabbix 事件遠端命令操作-Remote commands

  • 分享至 

  • xImage
  •  

Zabbix 事件遠端命令操作-Remote commands

Remote commands
https://www.zabbix.com/documentation/6.0/en/manual/config/notifications/action/operation/remote_command
官網說明:
應用遠端命令(Remote commands),您可以定義在某種條件下在受監控主機上自動執行某個預定義命令。
遠端命令是智慧主動監控的強大機制。
在該功能最明顯的用途中,您可以嘗試:

  • 如果某些應用程式((web server, middleware, CRM)沒有回應,則自動重新啟動。
  • 如果遠端伺服器不回應請求,使用 IPMI命令reboot,重新啟動該伺服器。
  • 如果磁碟空間不足,自動釋放磁碟空間(刪除舊文件,清理 /tmp)
  • 根據 CPU 負載將虛擬機器從一個實體設備遷移到另一個實體設備
  • 當CPU(磁碟、記憶體等)資源不足時為雲端環境新增節點

所以發生事件時Zabbix Server除了發送訊通知,也可以使用遠端執行預先定義的指令執行操作。

環璄設定

遠端主機

Agent Remote commands設定
在zabbix_agent2.conf設定檔加入AllowKey=system.run[*]
在zabbix_prxoy.conf設定檔加入EnableRemoteCommands=1

# vi /etc/zabbix/zabbix_agent2.conf
---
AllowKey=system.run[*] 
Plugins.SystemRun.LogRemoteCommands=1
---

https://ithelp.ithome.com.tw/upload/images/20231009/20163206ydPS4GHrdd.png

Plugins.SystemRun.LogRemoteCommands=1,將遠端執行指令紀錄在zabbix_agent2.log

帳號存取權限
讓zabbix帳號可以使用sudo來存取特權命令。若要設定存取權限,可以不輸入密碼以root執行。
如果無法執行visudo,請先安裝sudo套件。

# visudo 
---
# 1.zabbix 不需輸入密碼執行所有commands。
zabbix ALL=NOPASSWD: ALL
# 2.zabbix 不需輸入密碼執行重啟apache2
zabbix ALL=NOPASSWD: /etc/init.d/apache2 restart
---

https://ithelp.ithome.com.tw/upload/images/20231009/20163206yQpDqJnUFi.png
如果沒有固定的執行的指令,使用第1個設定方式。如果知道固定執行的指令,請使用第2個設定方式。在資安方面會有較大保障。

Zabbix WEB設定

Scripts設定
Scripts可以使用webhook、script、SSH、Telnet、IPMI,預先定義執行項目。

在Administration > Scripts,右上方Create script新增
https://ithelp.ithome.com.tw/upload/images/20231009/20163206WNHys7DmFc.png

新增使用Script-agent df,透過Zabbix agent執行commands,檢查硬碟空間。
https://ithelp.ithome.com.tw/upload/images/20231009/20163206J9k46b6Te8.png
在commands寫入df -h > /tmp/dh-agent.txt,讓zabbix 使用df -h檢查硬碟空間。
在commands寫入sudo df -h > /tmp/dh-agent2.txt,讓bzabbix 使用sudo df -h檢查硬碟空間。

新增使用Script-ssh df,使用密碼認證,設定帳號及密碼,透過SSH執行commands,檢查硬碟空間。
https://ithelp.ithome.com.tw/upload/images/20231009/20163206FqZrl2hiK5.png
在commands寫入sudo df -h > /tmp/dh-ssh.txt,讓bee01使用sudo df -h檢查硬碟空間。

新增使用Script-Restart Apache2 init,透過Zabbix agent執行commands,重啟apache2 。
https://ithelp.ithome.com.tw/upload/images/20231009/20163206LhxyeqiTGy.png
在commands寫入sudo /etc/init.d/apache2 restart,讓zabbix使用sudo重啟apache2。

Trigger actions設定
在Configuration> Actions> Trigger actions,右上方Create action新增。
Actions
Name:Trigger severity Actions Escalations remotecommand
Type of calculation:A or B or C ,只有ABC有一個發生。
Conditions
A 觸發嚴重性大於或等於災難
B 觸發嚴重性大於或等於高
C 觸發嚴重性大於或等於警告
https://ithelp.ithome.com.tw/upload/images/20231009/20163206VOyDzRc1eI.png

Operations
Steps:1 Send message to user groups: it via Line Notify
https://ithelp.ithome.com.tw/upload/images/20231009/20163206UJD5zQEdK0.png
步驟1 當事件發生時,使用Line notify自定訊息通知it群組。

Steps:1 Run script "agent df" on hosts: d11-agent2
https://ithelp.ithome.com.tw/upload/images/20231009/201632064bSYyEJyHT.png
https://ithelp.ithome.com.tw/upload/images/20231009/20163206NrPbynUFNH.png
步驟1 當事件發生時,在遠端主機d11執行Script-agent df。

Steps:2 Run script "ssh df" on hosts: d11-agent2
https://ithelp.ithome.com.tw/upload/images/20231009/20163206Mo9IsWEa29.png
步驟2 當事件持續發生,在遠端主機d11執行Script-ssh df。

Steps:3 Run script "Restart Apache2 init" on hosts: dnode01
https://ithelp.ithome.com.tw/upload/images/20231009/20163206DnLPwV3ZGs.png
步驟3 當事件持續發生,在遠端主機dnode01執行Script-Restart Apache2 init。

Default operation step duration:1m
步驟時間為預設的1m (1分鐘)
https://ithelp.ithome.com.tw/upload/images/20231009/20163206hqOR8G9h02.png

試結果

遠端主機d11
zabbix_agent2.log收到執行指令
https://ithelp.ithome.com.tw/upload/images/20231009/20163206pb2ECERYwf.png
/tmp查看生成的檔案,agent df的2個指令都有成功生成檔案,ssh df沒有成功權限可能要再調整。
https://ithelp.ithome.com.tw/upload/images/20231009/20163206cocM0XuhjI.png

遠端主機dnode01
zabbix_agent2.log收到執行指令
https://ithelp.ithome.com.tw/upload/images/20231009/20163206V0qBbe1Vhq.png
成功重啟apache。
https://ithelp.ithome.com.tw/upload/images/20231009/201632065kcs5B4Va3.png

簡單的測試驗證
內容為學習過程如有問題,請多多指教,謝謝。
文章也同步於個人網站


上一篇
Zabbix 事件通知升級-Actions Escalations
下一篇
Zabbix新增Web monitoring 監控Templates
系列文
應用Zabbix 進行全方位監控30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言