柴少鹏的官方网站 技术在分享中进步,水平在学习中升华

open-falcon之JMX监控(五)

一、JMX监控

1.1 jmxmon简介

      jmxmon是一个基于open-falcon的jmx监控插件,通过这个插件,结合open-falcon agent,可以采集任何开启了JMX服务端口的java进程的服务状态,并将采集信息自动上报给open-falcon服务端。

主要功能:

     通过jmx采集java进程的jvm信息,包括gc耗时、gc次数、gc吞吐、老年代使用率、新生代晋升大小、活跃线程数等信息。对应用程序代码无侵入,几乎不占用系统资源。

环境需求:

Linux

JDK>=1.6

Open-Falcon>=0.0.5

目标java进程开启jmx端口

采集指标:


CountersTypeNotes
parnew.gc.avg.timeGAUGE一分钟内,每次YoungGC(parnew)的平均耗时
concurrentmarksweep.gc.avg.timeGAUGE一分钟内,每次CMSGC的平均耗时
parnew.gc.countGAUGE一分钟内,YoungGC(parnew)的总次数
concurrentmarksweep.gc.countGAUGE一分钟内,CMSGC的总次数
gc.throughputGAUGEGC的总吞吐率(应用运行时间/进程总运行时间)
new.gen.promotionGAUGE一分钟内,新生代的内存晋升总大小
new.gen.avg.promotionGAUGE一分钟内,平均每次YoungGC的新生代内存晋升大小
old.gen.mem.usedGAUGE老年代的内存使用量
old.gen.mem.ratioGAUGE老年代的内存使用率
thread.active.countGAUGE当前活跃线程数
thread.peak.countGAUGE峰值线程数

建议设置监控告警项:

博文来自:www.51niux.com

不同应用根据其特点,可以灵活调整触发条件及触发阈值

告警项触发条件备注
gc.throughputall(#3)<98gc吞吐率低于98%,影响性能
old.gen.mem.ratioall(#3)>90老年代内存使用率高于90%,需要调优
thread.active.countall(#3)>500线程数过多,影响性能

1.2 jmxmon部署(以Hadoop集群为例)

#哪个客户端需要采集这个都要安装哈

#wget https://github.com/toomanyopenfiles/jmxmon/releases/download/v0.0.2/jmxmon-v0.0.2.tar.gz

#tar zxf jmxmon-v0.0.2.tar.gz 

#cp -rf jmxmon-v0.0.2 /home/work/open-falcon/

#cd /home/work/open-falcon/jmxmon-v0.0.2/

#cp conf.example.properties conf.properties 

# vim conf.properties

# 工作目录用来存放jmxmon的临时缓存文件,注意不要修改此目录下的文件
workDir=./

# 需要监听的本地jmx端口,支持监听多个端口,多端口用逗号分隔
jmx.ports=10012,10001    #这里的端口根据自己的实际端口改

# 本地agent的上报url,如果使用open-falcon的默认配置,则这里不需要改变
agent.posturl=http://localhost:1988/v1/push

# 可选项:上报给open-falcon的endpoint,默认值为本机hostname。不建议修改
#hostname=slave02.hadoop

# 可选项:上报给open-falcon的上报间隔,默认值60,单位秒。不建议修改
#step=

#./control start  #启动服务

#./control tail   #现在查看肯定是要报错的,报错如下,为啥因为你程序的jmx端口还没启动呢,所以采集不到数据会有报错

2018-11-25 19:21:32,346 [main] INFO  [com.stephan.tof.jmxmon.Config] - /home/work/open-falcon/jmxmon-v0.0.2/./jmxmon.jvm.context.json is not exist
2018-11-25 19:21:32,346 [main] INFO  [com.stephan.tof.jmxmon.Config] - init config ok
2018-11-25 19:22:06,116 [pool-1-thread-1] ERROR [com.stephan.tof.jmxmon.JMXMonitor] - error during JRMP connection establishment; nested exception is: 
	java.io.EOFException
java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is: 
	java.io.EOFException

# jps

47229 JMXMonitor   #每个启动的节点都会有这个进程

# ps -ef|grep jmxmon

root     47229     1  2 22:49 pts/1    00:00:02 java -cp ./jmxmon-0.0.2-jar-with-dependencies.jar com.stephan.tof.jmxmon.JMXMonitor conf.properties

1.3 hadoop集群设置一下jmx端口

# vim /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh   #再文件最末尾天下下面的配置

# Extra Java runtime options.  Empty by default.
export HADOOP_OPTS="-Djava.rmi.server.hostname=127.0.0.1 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.access.file=$HADOOP_CONF_DIR\jmxremote.access \
-Dcom.sun.management.jmxremote.password.file=$HADOOP_CONF_DIR\jmxremote.password"
 
# Command specific options appended to HADOOP_OPTS when specified
export HADOOP_NAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_NAMENODE_OPTS -Dcom.sun.management.jmxremote.port=10010"
export HADOOP_SECONDARYNAMENODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_SECONDARYNAMENODE_OPTS -Dcom.sun.management.jmxremote.port=10011"
export HADOOP_DATANODE_OPTS="-Dcom.sun.management.jmxremote $HADOOP_DATANODE_OPTS -Dcom.sun.management.jmxremote.port=10012"

# vim /home/hadoop/hadoop/etc/hadoop/hadoop-env.sh  #在文件最末尾添加下面的配置

YARN_OPTS="$YARN_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
YARN_OPTS="$YARN_OPTS -Dcom.sun.management.jmxremote.port=10001"
YARN_OPTS="$YARN_OPTS -Dcom.sun.management.jmxremote.ssl=false"

#然后重启hadoop集群。

博文来自:www.51niux.com

namenode节点查看:

# netstat  -lntup|grep 100

tcp        0      0 0.0.0.0:10010           0.0.0.0:*               LISTEN      20630/java          
tcp6       0      0 :::10001                :::*                    LISTEN      20938/java

datanode节点查看:

# netstat  -lntup|grep 100

tcp        0      0 0.0.0.0:10012           0.0.0.0:*               LISTEN      24598/java          
tcp6       0      0 :::10001                :::*                    LISTEN      23904/java

SecondaryNameNode节点查看:

# netstat  -lntup|grep 100

tcp        0      0 0.0.0.0:10012           0.0.0.0:*               LISTEN      41822/java          
tcp        0      0 0.0.0.0:10011           0.0.0.0:*               LISTEN      41893/java          
tcp6       0      0 :::10001                :::*                    LISTEN      41973/java

1.4 日志查看

# tail -f var/app.log 

image.png

#上图是每分钟发送一次的消息信息。

1.5 dashboard查看

image.png

image.png

#点开某一个metric可以查看多个机器在一起的指标。

二、Screen设置

#前面看到metric都得是一一点开才能查看图形,如何将多个metric的图放到一个屏幕里,把一些重要机器或者集群里面的数据图放到一个屏幕里面全局一览,非常好的一个功能。

#好久以上面的hadoop的JMX监控为例,我们把采集到的数据做一些Screen。

博文来自:www.51niux.com

2.1 Screen的创建

添加一个新的screen:

image.png

image.png

image.png

image.png

screen/screen下的界面功能:

image.png

+graph操作:


image.png

image.png

克隆graph:

#如果想克隆哪个graph,就要点击某个图的编辑

image.png

2.2 最后查看一下

image.png

#我只截图了一部分,这样不同的metric就能在一个屏幕显示了,很直观的查看。

作者:忙碌的柴少 分类:open-falcon 浏览:2992 评论:0
留言列表
发表评论
来宾的头像