您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

Docker下实战zabbix三部曲之三:自定义监控项

时间:2019-09-29 12:25:10  来源:  作者:

为什么要自定义监控项

通过上一章Docker下实战zabbix三部曲之二:监控其他机器的实战,我们知道了对机器的监控是通过在机器上安装zabbix agent来完成的,zabbix agent连上zabbix server后,将自己所在机器的信息定时给到zabbix server,这样就实现了机器的监控;

但是我们能监控到的只有cpu,磁盘这些基础信息,对于一些业务信息例如访问量,某个逻辑的执行成功失败次数等信息,我们也想进行监控,这就需要我们去制作自定义监控项了,本章我们一起来实战自定义监控项。

前文链接:

  1. Docker下实战zabbix三部曲之一:极速体验
  2. Docker下实战zabbix三部曲之二:监控其他机器

机器部署情况一览

总的来说,有四台机器,各自的功能如下:

a. 假设有个机器在运行web应用,容器是Tomcat,这个应用有个接口http://localhost:8080/zabbixcustomitemdemo/count,可以返回最近一分钟的某个业务量(例如网站访问次数);

b. 有一台机器安装了zabbix agent,作为自定义监控项的载体;

c. 有一台机器安装了zabbix server;

d. 有一台机器安装了MySQL,作为zabbix系统的数据库;

整体部署如下图所示:

Docker下实战zabbix三部曲之三:自定义监控项

 

运行web应用的server

这是个基于maven的JAVA web应用,里面有个spring mvc的controller,提供一个http服务,范围某个业务每分钟的业务量,代码如下图所示:

@Controller
public class CountController {
 @RequestMApping("/count")
 @ResponseBody
 public int count(String model, String type) {
 int base;
 int max;
 int min;
 if("a".equals(model)){
 base = 50000;
 }else{
 base =10000;
 }
 if("0".equals(type)){
 max = 9000;
 min = 1000;
 }else{
 max = 1000;
 min = 0;
 }
 return base + new Random().nextInt(max)%(max-min+1);
 }
}

从以上代码我们可以看出,http服务会返回随机数,此服务接受两个参数model和type,当model等于”a”时返回的随机数从50000开始,model不等于”a”时返回的随机数从10000开始,当type等于”0”时,在base的基础上增加的值是1000到9000之间,当type不等于”0”时,在base的基础上增加的值是0到1000之间;

整个工程的代码已经上传到git上,地址是git@github.com:zq2599/blog_demos.git,这个目录下由多个工程,本次实战的工程是zabbixcustomitemdemo,如下图:

Docker下实战zabbix三部曲之三:自定义监控项

 

docker-compose.yml文件

上面我们已经把四台机器的功能和关系梳理清楚了,现在就来制定docker-compose.yml文件吧:

version: '2'
services:
 zabbix-mysql-service: 
 image: daocloud.io/library/mysql:8
 container_name: zabbix-mysql-service
 environment:
 - MYSQL_ROOT_PASSword=888888
 restart: always
 zabbix-server-service:
 image: monitoringartist/zabbix-xxl:3.2.6
 links: 
 - zabbix-mysql-service:mysqlhost
 container_name: zabbix-server-service
 restart: always
 depends_on:
 - zabbix-mysql-service
 ports:
 - "8888:80"
 environment:
 - ZS_DBHost=mysqlhost
 - ZS_DBUser=root
 - ZS_DBPassword=888888
 zabbix-agent-a:
 image: zabbix/zabbix-agent:ubuntu-3.2.6
 links: 
 - zabbix-server-service:zabbixserverhost
 container_name: zabbix-agent-a
 restart: always
 depends_on:
 - zabbix-server-service
 environment:
 - ZBX_HOSTNAME=zabbix-agent-service-a
 - ZBX_SERVER_HOST=zabbixserverhost
 tomcat-server-service:
 image: bolingcavalry/bolingcavalrytomcat:0.0.1
 container_name: tomcat-server
 restart: always
 ports:
 - "8080:8080"

yml文件的内容如上所示,其中mysql、zabbix server,zabbix agent的配置和上一章Docker下实战zabbix三部曲之二:监控其他机器是一样的,新增的是一个tomcat的镜像,这个镜像是我在tomcat官方镜像的基础上做了点小改动,使得这个tomcat支持在线部署web应用(关于tomcat在线部署应用,请看文章http://blog.csdn.net/boling_cavalry/article/details/70184605)

准备好yml文件之后,打开终端,在yml文件所在目录下执行docker-compose up -d可以将yml文件中所有的容器都启动;

注意,如果您的电脑之前已经运行过上一章Docker下实战zabbix三部曲之二:监控其他机器中的docker-compose.yml文件,那么本次执行docker-compose up -d会提示启动失败,已有同样名称的容器存在,这时候可以去上一章的docker-compose.yml文件所在目录执行docker-compose down,也可以通过docker ps -a将所有容器列出,再通过docker stop命令依次停止所有容器,再执行docker-compose rm命令依次删除;

部署web应用

打开终端,进入web工程zabbixcustomitemdemo的目录下,执行命令mvn clean package -U -Dmaven.test.skip=true tomcat7:redeploy,即可将web工程部署到tomcat容器上,关于在线部署的细节请参照文章http://blog.csdn.net/boling_cavalry/article/details/70184605;

部署成功后,打开浏览器,访问http://localhost:8080/zabbixcustomitemdemo/count,web server会返回一个数字,如下图所示:

Docker下实战zabbix三部曲之三:自定义监控项

 

接下来我们要在zabbix agent上做一个shell脚本,此脚本的功能时发起http请求http://localhost:8080/zabbixcustomitemdemo/count?model=a&type=0,就能得到web服务响应的数字,如果此脚本每分钟被调用一次,就能得到完整的监控曲线图了;

a. 首先,执行docker exec -it zabbix-agent-a /bin/bash登录zabbix agent的容器;

b. 登录后,执行apt-get update更新apt;

c. 先后执行apt-get install wgetapt-get install vim,安装wget和vi工具;

d. 新建目录/usr/work/,在此目录下用vi创建一个shell文件biz_count.sh,内容如下:

#"!/bin/bash
wget -qO- http://tomcathost:8080/zabbixcustomitemdemo/count?model=$1&type=$2
echo ""

上面代码的功能是访问http服务获取一个数字,其中model和type用的是shell的入参;

注意两个细节:

第一个:最后一行代码echo “”,实践证明这一行是很有用的,有了这一行就会在输出http返回的数字后进行换行,有了换行数据才能成功上报到zabbix server;

第二个:wget命令后面的url参数中,”&”符号前面要加转义的斜杠””;

e. 执行chmod a+x biz_count.sh,给shell赋予可执行权限;

agent上添加监控项

继续在zabbix agent容器上,我们要添加一个自定义监控项,这样后面在zabbix server上就能使用该监控项了:

a. 在/etc/zabbix/zabbix_agentd.d目录下,新增一个biz.conf文件,内容如下:

UserParameter=get_total_num[*],/usr/work/biz_count.sh $1 $2

以上代码配置了一个自定义监控项,名称是gettotalnum,可以接受两个入参,该监控项会调用bizcount.sh这个脚本,并且把外部传来的两个入参直接传递给bizcount.sh;

b. 执行chmod a+r biz.conf使得该文件可读;

在zabbix agent上测试

继续在zabbix agent容器上,执行以下命令来测试刚刚新加的监控项:

/usr/sbin/zabbix_agentd -t get_total_num[a,0]

中括号中的a,0表示两个入参分别是”a”和”0”,我们执行四次,入参分别用[a,0]、[b,0]、[a,1]、[b,1],得到的结果如下图所示:

Docker下实战zabbix三部曲之三:自定义监控项

 

四个返回值分别是54741、17097、50564、10919,结合前面的java代码可以发现两个参数都生效了,数字的大小范围因入参而变化;

为了让监控项生效,需要重启zabbix agent,不过这里有个更快捷的方法可以试试:

a. 执行exit退出zabbix agent容器;

b. 执行docker restart zabbix-agent-a重启zambia agent容器;

到了这里,自定义监控项已经准备好了,接下来在zabbix server上把它配置成功,我们就能看到监控数据和曲线图了,不过在配置前,我们可以在zabbix server上测试一下能否成功调用zabbix agent上的监控项;

在zabbix server上测试agent机器的监控项

首先我们要搞清楚zabbix agent机器的ip,有两种方法:

第一种,执行docker exec -it zabbix-agent-a /bin/bash登录zabbix agent的容器,在容器中执行ip addr命令可以得到ip;

第二种,直接执行命令docker exec -it zabbix-agent-a ip addr得到ip;

不论哪种,都能得到zabbix-agent的ip是172.31.0.5;

现在我们登录zabbix server容器,执行命令docker exec -it zabbix-server-service /bin/bash即可登录,登录后执行以下命令:

zabbix_get -s 172.31.0.5 -k get_total_num[a,0]

如下图所示,测试成功,调用agent的监控项返回了符合预期的数据:

Docker下实战zabbix三部曲之三:自定义监控项

 

还记得我们刚才在zabbix agent上配置好之后,需要重启agent服务或者重启zabbix agent容器,如果您忘了这一步,现在zabbix server上测试会得到如下错误提示:

Docker下实战zabbix三部曲之三:自定义监控项

 

这时候去重启一下,再回来测试就可以成功了。

在管理页面上添加监控项

在浏览器上输入”http://localhost:8888/“ 登录管理页面,先添加agent机器,如下图:

Docker下实战zabbix三部曲之三:自定义监控项

 

添加之后,点击下图红框位置,进入监控项页面:

Docker下实战zabbix三部曲之三:自定义监控项

 

如下图,点击右上角的“Create item”即可开始添加监控项:

Docker下实战zabbix三部曲之三:自定义监控项

 

新增的监控项,我们只要填写Name,Key,Update interval(更新频率)这几个字段,其他的保持不变,每个要更新的字段的内容如下图:

Docker下实战zabbix三部曲之三:自定义监控项

 

填写并保存后,我们可以在Monitoring -> Latest data中看到最新的监控项数据,如下图:

Docker下实战zabbix三部曲之三:自定义监控项

 

接下来我们添加一个监控图形,操作如下图所示,可以进入图形管理页面:

Docker下实战zabbix三部曲之三:自定义监控项

 

如下图,点击右上角的“Create graph”创建一个图形:

Docker下实战zabbix三部曲之三:自定义监控项

 

新建图形的时候,名称随意,只要Items选中刚刚创建的监控项即可,如下图:

Docker下实战zabbix三部曲之三:自定义监控项

 

创建成功,现在要看看效果了,操作如下图所示:

Docker下实战zabbix三部曲之三:自定义监控项

 

点击”add”之后,在弹出的页面上选择刚刚我们新建的图形选项,操作完毕后,点击下图红框位置,就能看见曲线图了:

Docker下实战zabbix三部曲之三:自定义监控项

 

曲线图如下:

Docker下实战zabbix三部曲之三:自定义监控项

 

以上就是自定义监控项开发和设置的所有过程,基于监控项的操作,除了图形还能添加tirgger用来告警,在添加action用来确定告警的动作,例如邮件短信的,有兴趣的读者可以实际操作实战。

欢迎关注我的公众号:程序员欣宸



Tags:Docker 自定义监控项   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
为什么要自定义监控项通过上一章Docker下实战zabbix三部曲之二:监控其他机器的实战,我们知道了对机器的监控是通过在机器上安装zabbix agent来完成的,zabbix agent连上zabbix s...【详细内容】
2019-09-29  Tags: Docker 自定义监控项  点击:(101)  评论:(0)  加入收藏
▌简易百科推荐
一、前因闲来没事,想着升级下树莓派中的应用,没曾想,全是最新的,害我以为被黑客眷顾,帮我升级了。多方查证,才知道,是上次搭建的photoprism搞的鬼,不过也不全是它的锅,只是它的yml文...【详细内容】
2021-12-28  闲余悟道    Tags:Docker   点击:(2)  评论:(0)  加入收藏
一、为什么要搭建主从架构呢1.数据安全,可以进行数据的备份。2.读写分离,大部分的业务系统来说都是读数据多,写数据少,当访问压力过大时,可以把读请求给到从服务器。从而缓解数据...【详细内容】
2021-12-15  实战Java    Tags:Docker   点击:(12)  评论:(0)  加入收藏
在网页中渲染公式一直是泛学术工具绕不开的一个功能,最近更新产品功能,正巧遇到了这个需求,于是使用容器方式简单实现了一个相对靠谱的公式渲染服务。分享出来,希望能够帮到有类...【详细内容】
2021-12-01  编程菌zfn    Tags:Docker   点击:(11)  评论:(0)  加入收藏
1.1 docker命令直接部署1.1.1 拉取镜像docker pull wurstmeister/zookeeperdocker pull wurstmeister/kafka1.1.2 启动zookeeper容器docker run -d --name myzookeeper -p 2...【详细内容】
2021-11-15  无    Tags:docker   点击:(48)  评论:(0)  加入收藏
01 前言 顺着docker的发展,很多测试的同学也已经在测试工作上使用docker作为环境基础去进行一些自动化测试,这篇文章主要讲述我们在docker中使用浏览器进行自动化测试如果可以...【详细内容】
2021-10-29  小码哥聊软件测试    Tags:Docker   点击:(42)  评论:(0)  加入收藏
因为你懂得的原因,下载docker镜像速度非常喜感,故收集几个国内常用的docker镜像。Docker中国区官方镜像地址:https://registry.docker-cn.com网易163的镜像http://hub-mirror.c...【详细内容】
2021-10-28  抓蛙程序猿    Tags:docker   点击:(48)  评论:(0)  加入收藏
环境:Spring5.3.10通常,应用程序开发人员不需要对ApplicationContext实现类进行子类化。相反,SpringIOC容器可以通过插入特殊集成接口的实现来扩展。使用BeanPostProcessor自定...【详细内容】
2021-10-26  Java网络研发架构师    Tags:Spring   点击:(34)  评论:(0)  加入收藏
我们在很多场景下都需要做笔记,来对抗遗忘,一份好的笔记不仅能在需要的时候供我们查阅,也能帮助我们归纳整理知识提高做事效率。 目前市面上有很多云笔记软件,体验上各有不同,但...【详细内容】
2021-10-11  运维贼船    Tags:docker   点击:(62)  评论:(0)  加入收藏
1. Nacos官网Nacos Docker 快速开始2. Clone 项目git clone https://github.com/nacos-group/nacos-docker.git3. cd 到nacos-docker 路径下 直接启动即可cd nacos-dockerdo...【详细内容】
2021-09-16  程序狗爱化妆    Tags:Nacos   点击:(109)  评论:(0)  加入收藏
今天不做保姆级教程,分享奶爸常用、好用的Docker应用。有了这些Docker,Nas的可玩性会大幅提高,有时候奶爸也在想,刨去官方套件不考虑的话,Nas真的是差不多。如果小伙伴们有需要,后...【详细内容】
2021-09-03  晋升奶爸的垃圾佬    Tags:Docker   点击:(169)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条