Zabbix監控虛擬機服務-告警與自動恢復


今天稍微空閑,使用下zabbix的5.0版本,目前生產環境是4.x版本

今天就只實現一個目的:監控任意一個服務(示例中監控的是docker.service),如果服務掛了,自動給恢復,先看一個動圖

 

搭建步驟:

192.168.1.3是zabbixServer(還安裝了Apache、mysql、也一並安裝了agent)

安裝步驟請參考官網:https://www.zabbix.com/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=apache

其中有一步是安裝mysql,參考我的筆記,單節點即可:https://note.youdao.com/ynoteshare1/index.html?id=c7c40773df025a55610053d8d8c83b97&type=note

 

192.168.1.4是agent

由於只需要安裝agent,所以步驟就會少很多,大致就下面幾步

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum install zabbix-agent

#修改agent配置 /etc/zabbix/zabbix_agentd.conf
vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.3         #修改為zabbixServer地址
ServerActive=192.168.1.3   #修改為zabbixServer地址
Hostname=ZabbixAgent4      #這個名稱會在創建host的時候被用到,各個節點要做區分
Timeout=10 (默認為3)

systemctl restart zabbix-agent
systemctl enable zabbix-agent

通過上述步驟,zabbix agent 、server都啟動好了

下一步通過界面去添加host

 

 

 注意:主機名稱一定要和zabbix_agentd.conf中配置的完全一樣,太雞肋

 

然后就發現,為什么新加入的agent狀態是未知的呢

 

 

 

 

 

經過測試,給主機增加對應的template

 

 然后稍等會兒,就發現主機都可用了

 

 


服務的監控與恢復

首先我在192.168.1.4上安裝了docker服務,下面我們就通過zabbix來監控docker服務的狀態,若異常產生告警並自動恢復

1.創建監控項:就用自帶的system.run執行一個shell命令即可

system.run[systemctl status docker |grep 'active (running)' |wc -l]

 

 

最底部有測試,配置完成前先測試下命令是否能被正確執行

 

 

補充說明:由於要執行遠程命令,所以需要將遠程命令開啟,並記得重啟agent,否則會提示不支持的項目

vi /etc/zabbix/zabbix_agentd.conf
增加:
AllowKey=system.run[*]
以前版本是設置 EnableRemoteCommands  但5.0改了
### Option: EnableRemoteCommands - Deprecated, use AllowKey=system.run[*] or DenyKey=system.run[*] instead
#	Internal alias for AllowKey/DenyKey parameters depending on value:
#	0 - DenyKey=system.run[*]
#	1 - AllowKey=system.run[*]
#
# Mandatory: no

只有監控項還不能監控,需要將監控項應用到觸發器才行。 觸發器提供了表達式構造器,可以直接使用監控項生成對應的表達式

 

 創建好后如下

 

 保存后,去將192.168.1.4上的docker服務停了就會在首頁看見告警了

 

 但是這個告警會一直存在,因為服務沒有自動恢復

 

下一步就是配置自動恢復,自動恢復在動作中配置即可

 

 

 

 

 

 

 這里修正下,今天再測試另外環境時發現自動恢復時出現錯誤:Cannot obtain authentication methods: Would block requesting userauth list

糾結了下后,把上面命令加一個sudo就可以了 sudo /usr/bin/systemctl restart docker

或者添加配置zabbix用戶權限

# visudo
可以在 sudoers文件中使用的行:
# allows 'zabbix' user to run all commands without password.
zabbix ALL=NOPASSWD: ALL
# allows 'zabbix' user to restart apache without password.
zabbix ALL=NOPASSWD: /etc/init.d/apache restart

否則可能會收到一封郵件

[root@localhost ~]# cat /var/spool/mail/root
From root@localhost.localdomain Mon Jan 25 15:04:01 2021
Return-Path: <root@localhost.localdomain>
X-Original-To: root
Delivered-To: root@localhost.localdomain
Received: by localhost.localdomain (Postfix, from userid 0)
id C1CD73020E23; Mon, 25 Jan 2021 15:04:00 +0800 (CST)
To: root@localhost.localdomain
From: zabbix@localhost.localdomain
Auto-Submitted: auto-generated
Subject: *** SECURITY information for localhost.localdomain ***
Message-Id: <20210125070400.C1CD73020E23@localhost.localdomain>
Date: Mon, 25 Jan 2021 15:04:00 +0800 (CST)

localhost.localdomain : Jan 25 15:04:00 : zabbix : 用戶不在 sudoers 中 ; TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/bin/systemctl restart docker


[root@localhost ~]#
[root@localhost ~]#

 

  這樣,再去停掉docker服務,會發現警告出現后,服務馬上就自動恢復了


免責聲明!

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



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