2023年10月9日 星期一

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

官網說明:
應用遠端命令(Remote commands),您可以定義在某種條件下在受監控主機上自動執行某個預定義命令。
遠端命令是智慧主動監控的強大機制。
在該功能最明顯的用途中,您可以嘗試:
  • 如果某些應用程式((web server, middleware, CRM)沒有回應,則自動重新啟動。
  • 如果遠端伺服器不回應請求,使用 IPMI命令rebo​​ot,重新啟動該伺服器。
  • 如果磁碟空間不足,自動釋放磁碟空間(刪除舊文件,清理 /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
---
01-zabbix agent2 edit
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
---
02-visudo
如果沒有固定的執行的指令,使用第1個設定方式。如果知道固定執行的指令,請使用第2個設定方式。在資安方面會有較大保障。

Zabbix WEB設定

Scripts設定

Scripts可以使用webhook、script、SSH、Telnet、IPMI,預先定義執行項目。
在Administration > Scripts,右上方Create script新增
03-create scripts

新增使用Script-agent df,透過Zabbix agent執行commands,檢查硬碟空間。
04-scripts-agent2 df
在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,檢查硬碟空間。
05-scripts-ssh df
在commands寫入sudo df -h > /tmp/dh-ssh.txt,讓bee01使用sudo df -h檢查硬碟空間。

新增使用Script-Restart Apache2 init,透過Zabbix agent執行commands,重啟apache2 。
06-scripts-server restart
在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 觸發嚴重性大於或等於警告
07-remotecommand action test

Operations

Steps:1 Send message to user groups: it via Line Notify
08-setp1 line notify
步驟1 當事件發生時,使用Line notify自定訊息通知it群組。

Steps:1 Run script "agent df" on hosts: d11-agent2
09-set1 remote command
10-set1 remote command agent2 df
步驟1 當事件發生時,在遠端主機d11執行Script-agent df。

Steps:2 Run script "ssh df" on hosts: d11-agent2
11-set1 remote command ssh df
步驟2 當事件持續發生,在遠端主機d11執行Script-ssh df。

Steps:3 Run script "Restart Apache2 init" on hosts: dnode01
12-set1 remote command restart
步驟3 當事件持續發生,在遠端主機dnode01執行Script-Restart Apache2 init。

Default operation step duration:1m
步驟時間為預設的1m (1分鐘)
13-set1 remote command action

測試結果

遠端主機d11
zabbix_agent2.log收到執行指令
18-d11 zabbix ls
/tmp查看生成的檔案,agent df的2個指令都有成功生成檔案,ssh df沒有成功權限可能要再調整。
17-d11 tmp ls

遠端主機dnode01
zabbix_agent2.log收到執行指令
16-dnode01 zabbix restart
成功重啟apache。
15-dnode01 restat apache2

簡單的測試驗證






沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。