JMXProxyBeat

来源:互联网 发布:金山软件股票多少钱 编辑:程序博客网 时间:2024/06/05 13:22

项目中监控框架中用到JMXProxyBeat,在此学习已做记录。
官网文档位置https://github.com/radoondas/jmxproxybeat。
JMXProxyBeat
是一个简单的beat,检索tomcat jmx中的指标值的工具。检索出的数据提供给LogStash或者Elasticsearch呈现。jmx指标是通过在tomcat中配置“JMX Proxy Servlet“, 并可通过http请求获取。”JMX Proxy Servelt“是一个轻量级的代理,可以获取,设置tomcat的内部配置信息(多了解JMX,可搜百度百科)。
Jmxproxybeat用go语言编写的,系统层面上是很轻量的。
tomcat配置
首先,tomcat必须启动远程JMX,配置比较简单
1. 在bin目录的catalina.sh ,找到#—–Execute The Requested Command– 位置,添加
CATALINA_OPTS=”CATALINA_OPTS -Djava.rmi.server.hostname=192.168.117.120(或可配置环境变量$HOSTS_IP) -Dcom.sun.management.jmxremote -Dcom.sum.management.jmxremote.port=8888 -Dcom.sum.management.jmxremote.ssl=false -Dcom.sum.management.jmxremote.authenticate=false”
这里写图片描述
当authenticate=false,是不需要鉴权的,
当authenticate=true,需要编辑jmxremote.access 和jmxremote.password

1. cd /usr/java/jdk1.6.0_18/jre/lib/management  2. mv jmxremote.password.template jmxremote.password   3. chmod 600 jmxremote.access jmxremote.password  4. vi jmxremote.password   

jmxremote.access 一般保持内容不变即可。
对于jmxremote.password,将
#monitorRole pass(密码自填)
#controlRole pass(密码自填)
#号注释去掉。其中monitorRole为只拥有只读权限的角色,controlRole有更高的权限。
最后,将端口,加入防火墙信任列表
vi /etc/sysconfig/iptables
编辑iptables,加入新一行内容:-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 12345 -j ACCEPT
重启tomcat, netstat -an | grep 8888 ,可查看jmx端口是否启动。
也可使用window客户机上的jconsole连接服务器进行监控。
参考官网说明:http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html

tomcat开启jmx监听服务后, 在为jmxproxybeat添加最小配置,conf/tomcat-users.xml,配置完需要重启。

<role rolename="manager-jmx"/>      <user username="tomcat" password="s3cret" roles="manager-jmx"/>

jmx中Mbean的请求模板为
http://127.0.0.1:8080/manager/jmxproxy/?get=BEANNAME&att=MYATTRIBUTE&key=MYKEY
例如对HeapMemoryUsage 的请求
http://127.0.0.1:8080/manager/jmxproxy/?get=java.lang:type=Memory&att=HeapMemoryUsage&key=init
具体了解详情,可看https://tomcat.apache.org/tomcat-8.0-doc/manager-howto.html#Using_the_JMX_Proxy_Servlet。这里只是测试是否连通。

开始使用jmxproxybeat
首先需要安装golang1.6, Glide》=0.10.0.
下载相关jmxproxybeat,通过git仓库,运行一下命令

mkdir -p ${GOPATH}/github.com/radoondascd ${GOPATH}/github.com/radoondasgit clone https://github.com/radoondas/jmxproxybeat

保证文件夹在${GOPATH}/github.com/radoondas下,
进入目录下,进行构建,会报错,缺少2个包的依赖,通过go get 加包名的方式,下载依赖,下载完成后,运行

go install

会产出bin目录, 进入目录,找到jmxproxybeat命令文件,在下载的原文件中的jmxproxybeat.template.json, jmxproxybeat.yml 复制到此目录下。
jmxproxybeat.template.json 文件是数据模板格式
jmxproxybeat.yml 文件是配置文件,具体设计到input,output方式设置

可进行debug模式,会把数据打印到工作台

./jmxproxybeat -c jmxproxybeat.yml -e -d "*"

最后,通过命令

./jmxproxybeat

数据可发送之Logstash or Elasticsearch.实现对Docker容器中tomcat的监听;Jboss、weblogic 容器开启jmx服务,也可通过此方法,后期后做这些工作。

0 0