博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker环境下的中间件监控,没错就两步
阅读量:6905 次
发布时间:2019-06-27

本文共 3509 字,大约阅读时间需要 11 分钟。

本文来自KVM群直播的实录分享。在很多企业环境中,都采用 tomcat 作为web 服务。对 tomcat 的监控,较为常用的方式是使用 JMX。那么,到全 Docker 的环境下,如何搭建并实现以上的监控系统,今天就由 工程师来分享一下。

JMX(Java Management Extensions,即Java管理扩展)是Java平台上为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用,本文通过一个示例演示如何通过JMX对tomcat进行监控。以下示例使用到了tomcat, jmxtrans, supervisord, influxdb, granfana 等组件

部署图

从下图可以看出监控主要流程如下:

  1. jmxtrans通过jmx获取TOMCAT运行时信息并存入influxDB

  2. grafana从influxDB获取数据并显示

    图片描述

构建tomcat + jmxtrans 镜像

开启TOMCAT监控

修改catalina.sh文件,在Execute The Requested Command 这一行之前加上参数

`
CATALINA_OPTS="$CATALINA_OPTS-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8081 -Djava.rmi.server.hostname=192.168.99.205-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false”`

说明: 如果加在后面,可能会导致无法开启jmx接口

参数说明

Djava.rmi.server.hostname=192.168.99.205 :tomcat部署所在的主机IP,基于实际情况进行修改。### 通过jconsole验证,是否开启java jmx 打开jconsole输入tomcat地址即可访问jmx

图片描述
如果看到以下页面,则说明jmx已经开启,可以获取监控信息。
图片描述
Tomcat的信息主要在这里

图片描述

jmxtrans配置文件

ok,现在tomcat中JMX接口已经打开,但是如何获取需要我们关注的信息呢?这个时候就需要jmxtrans来帮忙了

从上边的图,我们可以看到,Tomcat中内置了许多监控项,我们可以通过jmxtrans的配置文件来取得需要的监控监控项

{ "servers" : [ {   "port" : "8081",   "host" : "127.0.0.1",   "queries" : [      {       "obj" : "java.lang:type=Memory",       "attr" : [ "HeapMemoryUsage","NonHeapMemoryUsage" ],       "resultAlias":"jvmMemory",       "outputWriters" : [ {         "@class" : "com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",         "url" : "http://192.168.99.205:8086/",         "username" : "root",         "password" : "root",         "database" : "shurenyun"        }]     }     {       "obj" : "Catalina:type=GlobalRequestProcessor,name=\"http-apr-8080\"",       "attr" : [ "bytesSent" ],       "resultAlias":"tomcatByteSent",       "outputWriters" : [ {         "@class" :"com.googlecode.jmxtrans.model.output.InfluxDbWriterFactory",         "url" : "http://192.168.99.205:8086/",         "username" : "root",         "password" : "root",         "database" : "shurenyun"        }]      }}

说明:

port: 之前配置的jmx端口(8081)

obj: 需要监控的对象,这个值可以从jconsole中获取

图片描述

attr: 监控的对象属性,可以从这个地方获取

图片描述

resulteAlias:为该属性定义的别名,在influxDB中会用到

url: influxDB的地址
username & password: influxDB的账号密码
database: 数据库名字,jmxtrans会自己创建

安装supervisord

Supervisor ( 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是Python 进程) 安装supervisord也非常简单

图片描述

不过由于大家都知道的原因,建议在通过apt-get安装的时候先换成国内的源,例如

`deb jessie main non-free contrib

deb jessie-updatesmain non-free contrib
deb jessie-backportsmain non-free contrib
deb-src jessie mainnon-free contrib
deb-src main non-free contrib
deb-src main non-free contrib
deb main non-free contrib
deb-src main non-free contrib`

通过Dockerfile 完成以上工作

使用Dockerfile一键完成以上工作。

图片描述

Dockerfile以及其他依赖文件可以在码云中获得。

附码云地址:

influxdb

部署

这里为了方便演示,我们直接使用host模式启动一个influxdb

docker run -d --net=hostinfluxdb:latest

查看数据

按照下图提示:

  1. 选择Database:shurenyun

  2. 输入SHOW MEASUREMENTS 查看当前DB信息

    可以看到DB里边已经有数据了

图片描述

influxdb

部署&配置grafana

部署grafana

照例使用容器部署

docker run -i -p 3000:3000grafana/grafana

登录 grafana, 账号密码:admin/admin

图片描述

配置

配置数据源

图片描述

图片描述

配置监控页面

按照下面提示配置grafana dashbord即可看到实时监控数据

图片描述

OK, 到此我们就完成了一个完整的tomcat监控流程, 如果有报警的需求,可以考虑对接zabbix,不过这里暂时不涉及这一话题,如果有兴趣的话数人云会在后续的分享中加入zabbix的内容,同时以上部署方式在数人云(shurenyun.com)上可以同样操作,欢迎试用,谢谢大家。

Q&A

Q1:这个方案是不是是不是也可以监控gc之类的

A1:可以监控gc

Q2:jmx监控性能影响有考虑过吗?

A2:监控肯定会对系统性能有所影响,所以要合理取舍,选择必要的监控项去监控

Q3:我在使用grafana的时候发现在将多个(20个点)监控项数据复合展示的时候,grafana会crash,这个东西有什么优化部署的经验嘛?

A3:我们测试的时候没遇到这个问题,估计是数据源或者配置问题,几十个监控项出问题不应该是性能,这个需要具体分析下crash的原因,如果确定是grafana的问题,建议还是直接去社区交流

Q4:应用执行的sql有办法监控吗?

A4: 这个方案是基于jmx,只针对java,不支持sql

Q5:请问,能否监控到每个java线程的状态,有没有出现假死

A5:不能监控到每个java线程的状态,因为它自身的特性所决定的

转载地址:http://ddmdl.baihongyu.com/

你可能感兴趣的文章
RHEL6基础三十六之服务器维护基础命令⑥sed
查看>>
浅谈AD RID池系列(三):Server 2008 R2补丁for RID
查看>>
针对桌面云终端做专用的高性价比CPU,吉湾微电子获首轮融资
查看>>
poj2481 树状数组
查看>>
Contrinex为高温应用推出新的RFID标签
查看>>
Q3中国光网络系统支出放缓
查看>>
MapXtreme 2005 学习心得 第八节Session问题澄清-两种配置方式致开发方式不同(九)...
查看>>
Windows 10即将针对共享功能进行大量修复和改进
查看>>
数据驱动业务决策的5个步骤
查看>>
上网个人信息如何不“裸奔” 10条信息安全建议
查看>>
JIRA的常用选项
查看>>
专访Facebook HipHop作者、阿里研究员赵海平:生物与计算机交织的独特人生
查看>>
监控视频须严加规范
查看>>
实例化需求的优点
查看>>
通过vmstat的简单分析数据库操作
查看>>
OpenStack详细解读:定义,好处与使用实例
查看>>
俄美共同研制出新型钙钛矿太阳能电池
查看>>
黑莓Android安全补丁推送保持零延迟
查看>>
SQL Server中数据库文件的存放方式
查看>>
西部光伏电站不景气 屋顶光伏春天将至
查看>>