前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zabbix监控虚拟机服务-告警与自动恢复

Zabbix监控虚拟机服务-告警与自动恢复

作者头像
肖哥哥
发布2021-01-29 10:11:55
1.4K0
发布2021-01-29 10:11:55
举报

今天稍微空闲,使用下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,所以步骤就会少很多,大致就下面几步

代码语言:javascript
复制
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命令即可

代码语言:javascript
复制
system.run[systemctl status docker |grep 'active (running)' |wc -l]

最底部有测试,配置完成前先测试下命令是否能被正确执行

补充说明:由于要执行远程命令,所以需要将远程命令开启,并记得重启agent,否则会提示不支持的项目

代码语言:javascript
复制
vi /etc/zabbix/zabbix_agentd.conf
增加:
AllowKey=system.run[*]
代码语言:javascript
复制
以前版本是设置 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用户权限

代码语言:javascript
复制
# 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服务,会发现警告出现后,服务马上就自动恢复了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档