用shell脚本实现zabbix监控docker

之前有补充过一个用python脚本来实现监控docker,奈何python不是太熟练,而且因为环境特殊用python脚本不能实现我所想要的效果,所以又写了个shell脚本。相比python脚本,shell更简单,更灵活,更容易理解
看这里用python脚本实现zabbix监控docker
废话不多说直接上脚本

#!/bin/bash
#author: li
#获取容器的名称
containers=(`sudo docker ps|tail -n +2 |awk '{print $NF}' |sed -r "s#r-(.*)-[1-9]-.*#\1#"`)
let num=(${#containers[@]}-1)
#自动发现函数
discover () {
for i in  `seq 0 $num` ; do
   cname[i]="{\"{#CONTAINERNAME}\":\"${containers[$i]}\"}"
done
echo "{\"data\":[${cname[@]}]}" |tr ' ' ','
}
#资源使用查询函数
stata () {
ccode=`sudo docker ps |grep $1 |head -n 1 |awk '{print $1}'`
if  [ $2 == 'ping' ] ; then
   statuscode=`sudo docker inspect --format="{{.State.Running}}" ${ccode}`
   if [[ ${statuscode} == 'true' ]] ;then
      echo 1
   else 
      echo 0
   fi
elif [[ $2 == 'MemUsage' ]] ; then
   value1=`sudo docker stats --no-stream --format "{{.MemUsage}}" ${ccode} |sed  -r "s#(.*)([A-Z])iB.*iB#\1 \2#" |awk '{if ($2=="M") print $1; else if ($2=="G") print $1*1024 ; else if ($2=="K") print $1/1024 }'` 
   echo ${value1}   
else
   value2=`sudo docker stats --no-stream --format "{{.$2}}" ${ccode}`
   echo ${value2} |tr -d '%'  
fi
}
#当有位置变量传入执行查询函数,没有执行发现函数
if [ $# = 0 ];then
   discover
else
   stata $1 $2
fi

因为如何使用已经在上篇文章介绍过了这里就不写啦,可点击传送门

提示

因为这个脚本是针对特定环境开发的,如果拿去用还要根据实际情况做些修改,如有问题可以留言、私信

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Docker部署Zabbix时,可以通过编写Dockerfile来定义镜像的构建过程。Dockerfile是一个文本文件,包含了一系列的指令,可以通过这些指令来搭建和配置所需的环境。 首先,我们需要选择适合的基础镜像,例如CentOS或Ubuntu等。在Dockerfile中,可以通过指令`FROM`来指定基础镜像的名称,例如`FROM centos:latest`。 接下来,我们需要在镜像中安装Zabbix所需的依赖软件和库。可以使用`RUN`指令来运行Shell命令,执行安装操作,例如`RUN yum install -y zabbix-server`。 然后,我们可以通过`COPY`指令将Zabbix的配置文件、脚本文件等复制到镜像中的特定位置。例如`COPY zabbix.conf /etc/zabbix/zabbix.conf`。 如果需要暴露Zabbix的端口给外部访问,可以使用`EXPOSE`指令来声明需要暴露的端口号,例如`EXPOSE 80`。 最后,我们可以使用`CMD`指令来定义容器启动时需要运行的命令,例如`CMD ["zabbix-server", "-f"]`,这样在容器启动时会自动启动Zabbix Server。 编写完Dockerfile后,我们可以使用`docker build`命令来构建镜像,例如`docker build -t my-zabbix .`,其中`-t`参数用于指定镜像的名称和标签。 构建完成后,我们可以使用`docker run`命令来创建和运行容器,例如`docker run -it -p 8080:80 my-zabbix`,其中`-p`参数用于映射容器内部的端口到主机上。 通过以上步骤,就可以通过Dockerfile来实现Zabbix的部署。这样的部署方式具有可重复性和可扩展性,方便管理和维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值