zabbix低级自动发现(DDL)

一、简介

1、什么叫低级自动发现DDL?

我们都知道zabbix可以通过写脚本来监控一切自己想要监控的东西,但当你想要监控项是灵活的会自增自减时,就可以使用低级自动发现解决这个问题。

例如:可以自动发现你有几块网卡相对应的网卡名称,此文档是已监控docker容器为例子,可以监控自增的docker容器。

官方解释

2、实现原理及其流程

  • 实现原理:

  • 首先需要一个脚本来获取需监控的变量

  • 写一个脚本来获取变量名称

  • 创建一个 自动发现规则 来获取变量名称(操作跟新增脚本监控项一致)。

  • 再监控项内使用这种格式 {#DOCKERNAME} 的变量名称。

二、获取变量名称

1、设置获取变量名脚本

以获取docker容器名称为例子,参考一下shell脚本:

#!/bin/bash

name=($(sudo docker ps -a|grep -v "CONTAINER ID"|awk '{print $NF}'))
printf '{'
printf '"data":['
for key in ${!name[@]}
do
if [[ "${#name[@]}" -gt 1 && "${key}" -ne "$((${#name[@]}-1))" ]];then
printf '{'
printf "\"{#DOCKERNAME}\":\"${name[${key}]}\"},"
else [[ "${key}" -eq "((${#name[@]}-1))" ]]
printf '{'
printf "\"{#DOCKERNAME}\":\"${name[${key}]}\"}"
fi
done
printf ']'
printf '}\n'

docker 容器的状态:
在这里插入图片描述
运行脚本获得的参数:

[root@zabbix-server1 ~]# ./docker_discovery2.sh 
{"data":[{"{#DOCKERNAME}":"pedantic_faraday"},{"{#DOCKERNAME}":"objective_payne"},{"{#DOCKERNAME}":"crazy_clarke"},{"{#DOCKERNAME}":"sharp_snyder"}]}

注释:此脚本使用awk剪切docker容器的名称,再以字典的形式输出,必须要以这种格式 {“data”:[{"{#DOCKERNAME}":“变量”}]}

2、添加监控key

添加监控值:


[root@zabbix-server1 ~]# vi /etc/zabbix/zabbix_agentd.d/docker.conf 
UserParameter=docker.discovery,sh /etc/zabbix/scripts/discover.sh

测试取值
注意:确保zabbix可以运行此脚本,可以使用 su -s 来测试,运行docker命令想要加入docker组,这里我加入了sudo 权限给zabbix。

[root@zabbix-server1 ~]# vi /etc/sudoers
## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
zabbix  ALL=NOPASSWD: ALL

[root@zabbix-server1 ~]# su -s '/bin/bash' -c "/etc/zabbix/scripts/discover.sh" zabbix

此命令是使用zabbix用户来运行次脚本的意思。

使用zabbix_get 测试是否取值成功

[root@zabbix-server1 ~]# zabbix_get -s 192.168.2.66 -k docker.discovery
{"data":[{"{#DOCKERNAME}":"priceless_snyder"},{"{#DOCKERNAME}":"heuristic_jones"},{"{#DOCKERNAME}":"pedantic_faraday"},{"{#DOCKERNAME}":"objective_payne"},{"{#DOCKERNAME}":"crazy_clarke"},{"{#DOCKERNAME}":"sharp_snyder"}]}

3、添加自动发现规则

在这里插入图片描述

为什么添加自动发现规则?
因为这个自动发现规则会生成变量,可以在后面使用到。

三、添加监控项

1、添加监控项

到这一步才是真正的添加你想要的监控项
获取docker的状态:

[root@zabbix-server1 zabbix_agentd.d]# vi /etc/zabbix/zabbix_agentd.d/docker.conf 

UserParameter=docker-status[*],sudo docker inspect $1|grep Status|cut -d'"' -f 4

#测试一下获取数据
[root@zabbix-server1 zabbix_agentd.d]# zabbix_get -s 192.168.2.1 -k docker-status["docker_name"]

2、设置监控项原型

在这里插入图片描述
在这里插入图片描述

测试:

成功后的截图:
在这里插入图片描述
在启动一个docker:
在这里插入图片描述
监控自动添加:
在这里插入图片描述

至此教学全部完毕,操作还是比较简单的,可以通过这种方法实现监控项的自动发现

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值