zabbix通过自定义脚本监控docker服务、docker nginx容器,图文详细

搭建zabbix参考:docker用docker-compose快速搭建zabbix最新版


环境介绍:

服务端ubuntu:192.168.152.132
客户端centos:192.168.152.150

1:在客户端安装agent

ubuntu和centos都支持在线安装,目前,Ubuntu在线安装版本为4.7,Centos为5.0
对于agent,版本影响不大,功能都相同,低于server服务器版本的都可以。

#Ubuntu安装
apt -y install zabbix-agent
#centos安装
yum -y install zabbix50-agent.x86_64 

2:agent配置文件

agent配置文件,文件名为zabbix_agentd.conf

vim /etc/zabbix_agentd.conf

必备三个,用于与服务器端的连接,这个应该都知道的

Server=192.168.152.132   #如果设置纯被动模式,应该注释掉这行

ServerActive=192.168.152.132   #主动模式的serverip地址

Hostname=192.168.152.150	#客户端的hostname,不配置则使用主机名

以下为自定义脚本需要更改的参数:
去掉#UnsafeUserParameters的注释,并将0改为1,意思为允许自定义参数
去掉#UserParameter的注释,并在后面接上 名称(键值),命令。

UnsafeUserParameters=1
#名称为docker_nginx,服务器监控项的键值。后面为运行脚本命令。
UserParameter=docker_nginx, /bin/bash /script/docker_nginx.sh

3:脚本编写

mkdir /script
vim docker_nginx.sh

这里简单脚本为监控docker服务和docker的nginx。

#!/bin/bash
#set -x  调试脚本可用
docker_service=$(systemctl status docker.service |awk '{if (NR==3){print$2}}')
if [[ ${docker_service} == 'inactive' ]];then
	echo "2" #docker服务停止状态,返回2
else
	docker_nginx=$(docker ps|awk '{if (NR>1){print $2}}'|grep 'nginx')
	if  test -n "${docker_nginx}" ;then
		echo "0" #代表docker nginx 正常,返回0
	else
		echo "1" #没有docker nginx容器,返回1
	fi
fi

脚本完成。

4:服务端web配置

打开浏览器zabbix。

4.1:添加创建主机

在这里插入图片描述
在这里插入图片描述
添加完主机名称,IP后,保存即可。

4.2:添加创建监控项

在添加主机完成后,在主机里,直接点击监控项。
在这里插入图片描述
进去后,直接点击创建监控项。
在这里插入图片描述

扫描二维码关注公众号,回复: 13296945 查看本文章

配置监控项。
在这里插入图片描述
监控项配置完成,然后可已点击测试,是否正常得到脚本的返回值
.在这里插入图片描述
这里docker nginx没有启动,所以返回值为1,可以自己启动docker nginx测试,返回值为0,可以正确得到脚本的返回值,则正常,有返回任何提示都不行。

测试的时候,监控doceker会得到返回值提示:Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:,原因是zabbix这个用户没有docker.sock的权限。

方法一: 解决临时方法:此方法只是临时,如过docker.sock重启还会一样。将/var/run/docker.sock改为777权限。

chmod 777 /var/run/docker.sock

方法二: 永久方法:将zabbix用户加入docker用户组。

usermod -a -G docker zabbix

方法三: (已测试不合适)在脚本命令前方加sudo,返回值会得到类似sudo能力越大,责任越大的提示。

4.3:添加创建触发器

在页面点击触发器,然后创建触发器
在这里插入图片描述
添加名称,严重性,在表达式里选择添加
在这里插入图片描述
添加中,可以看到自己添加的监控项,选择自定义的监控项
在这里插入图片描述
然后默认添加数值,监控脚本docker service状态返回的为2,所以填写2.
在这里插入图片描述
添加完成确认即可。

同理在创建一个触发器监控docker nginx容器。
在这里插入图片描述
这时,自定义脚本监控已完成。

5:监控测试

现在服务都正常,容易都正常,停止docker nginx容器。

#停止自己容器的nginx名称
docker stop mynginx

回到web监控页面查看,已经报警生效。
在这里插入图片描述
关闭docker服务测试

systemctl stop docker.service

返回监控页面查看,也已经生效。
在这里插入图片描述
最后分别启动docker服务,和docker nginx容器。

systemctl start docker.service
docker restart mynginx

再次查看监控页面,报警消失,恢复正常,监控脚本测试完成。

猜你喜欢

转载自blog.csdn.net/weixin_52270081/article/details/121307419
今日推荐