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

Posted the丶only

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:添加创建监控项

在添加主机完成后,在主机里,直接点击监控项。

进去后,直接点击创建监控项。

配置监控项。

监控项配置完成,然后可已点击测试,是否正常得到脚本的返回值
.
这里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,,前提是zabbix还需要添加sudo权限,此方法更适合Ubuntu,centos会返回三点提示,类似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

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

以上是关于zabbix通过自定义脚本监控docker服务docker nginx容器,图文详细的主要内容,如果未能解决你的问题,请参考以下文章

使用 Docker 安装 Zabbix,并配置自定义监控项

使用 Docker 安装 Zabbix,并配置自定义监控项

zabbix上监控docker

zabbix自定义监控

zabbix自定义监控

zabbix自定义监控脚本配置