Jmxtrans agent

原创
2016/05/03 20:37
阅读数 229

        上一篇讲解了jmxtrans的简单用法,这一批讲解怎么配合jmxtrans agent的使用。jmxtrans agent是啥?一看名字就知道这是jmxtrans的java agent,而且该agent使用时不需要任何依赖。

        关于jmxtrans agent的详细介绍请看:here

        下载最新版的jmxtrans agent:jmxtrans-agent-1.2.3,其实就是一个单独的jar包。


下面讲解怎么使tomcat在启动时使用jmxtrans agent:

修改tomcat的启动脚本,添加如下参数:

export JAVA_OPTS="$JAVA_OPTS -javaagent:/opt/programs/jmxtrans_254/jmxtrans-254/bin/jmxtrans-agent-1.2.3.jar=jmxtrans-agent.xml"
        主要就是配置引用jmxtrans-agent-1.2.3.jar的路径,以及编排jmxtrans-agent.xml配置文件。jmxtrans-agent.xml的路径可以是相对于classpath的路径,也可以是http/https的路径,或者一个绝对路径。使用attribute和attributes去收集单个或者多个属性值,多个属性值以逗号分割。这些属性值是在query块里面配置。若不指定任何属性,则收集这个objeName下的所有的属性。使用resultAlias去制定metric的名称,在resultAlias中使用关键字#attribute#"时, 将指定metric的名字为attribute或attributes中使用的值。下面是官方提供的收集单个属性和多个属性的样例文件:

#单个属性
<query objectName="java.lang:type=Threading" attribute="ThreadCount"
   resultAlias="jvm.thread.count"/>

#多个属性
<query objectName="java.lang:type=Threading" attributes="ThreadCount,TotalStartedThreadCount"
  resultAlias="jvm.threads.#attribute#"/>

#所有属性
<query objectName="java.lang:type=Threading" resultAlias="jvm.threads.#attribute#"/>
        也可指定key关键字,指定收集属性中的那个值,也可以忽略key收集所有值 

#收集指定key的值
<query objectName="java.lang:type=Memory" attribute="HeapMemoryUsage" key="used"
    resultAlias="jvm.heapMemoryUsage.used"/>

#收集所有key的值
<query objectName="java.lang:type=Memory" attribute="HeapMemoryUsage" resultAlias="jvm.heapMemoryUsage.#key#"/>
        也可以通过position关键字,收集多值属性的某一个值

<query objectName="MyApp:type=MyMBean" attribute="MyMultiValuedAttribute" position="2"
    resultAlias="myMBean.myMultiValuedAttributeValue"/>
        而且该配置文件支持动态加载,可以设置属性收集时间间隔,也可以针对某一个属性设置收集时间间隔 

#设置动态加载配置文件时间间隔
<reloadConfigurationCheckIntervalInSeconds>60</reloadConfigurationCheckIntervalInSeconds>

#设置全局属性收集时间间隔
<collectIntervalInSeconds>20</collectIntervalInSeconds>

#设置单个属性的收集时间间隔
<query objectName="java.lang:type=Threading" attributes="ThreadCount,TotalStartedThreadCount"
   resultAlias="jvm.threads.#attribute#" collectIntervalInSeconds="5"/>

        jmxtrans agent的输出也包括多种后端服务,主要有:GraphitePlainTextTcpOutputWriter、GraphiteUdpOutputWriter、FileOverwriterOutputWriter、SummarizingFileOverwriterOutputWriter、ConsoleOutputWriter、SummarizingConsoleOutputWriter、SummarizingConsoleOutputWriter、RollingFileOutputWriter、StatsDOutputWriter。为了演示方便,我们使用FileOverwriterOutputWriter

下面看看jmxtrans-agent.xml文件的内容:

<jmxtrans-agent>
    <queries>
        <!-- OS -->
        <query objectName="java.lang:type=OperatingSystem" attribute="SystemLoadAverage" resultAlias="os.systemLoadAverage"/>

        <!-- JVM -->
        <query objectName="java.lang:type=Memory" attribute="HeapMemoryUsage" key="used"
               resultAlias="jvm.heapMemoryUsage.used"/>
        <query objectName="java.lang:type=Memory" attribute="HeapMemoryUsage" key="committed"
               resultAlias="jvm.heapMemoryUsage.committed"/>
        <query objectName="java.lang:type=Memory" attribute="NonHeapMemoryUsage" key="used"
               resultAlias="jvm.nonHeapMemoryUsage.used"/>
        <query objectName="java.lang:type=Memory" attribute="NonHeapMemoryUsage" key="committed"
               resultAlias="jvm.nonHeapMemoryUsage.committed"/>
        <query objectName="java.lang:type=ClassLoading" attribute="LoadedClassCount" resultAlias="jvm.loadedClasses"/>

        <query objectName="java.lang:type=Threading" attribute="ThreadCount" resultAlias="jvm.thread"/>

        <!-- TOMCAT -->
        <query objectName="Catalina:type=GlobalRequestProcessor,name=*" attribute="requestCount"
               resultAlias="tomcat.requestCount"/>
        <query objectName="Catalina:type=GlobalRequestProcessor,name=*" attribute="errorCount"
               resultAlias="tomcat.errorCount"/>
        <query objectName="Catalina:type=GlobalRequestProcessor,name=*" attribute="processingTime"
               resultAlias="tomcat.processingTime"/>
        <query objectName="Catalina:type=GlobalRequestProcessor,name=*" attribute="bytesSent"
               resultAlias="tomcat.bytesSent"/>
        <query objectName="Catalina:type=GlobalRequestProcessor,name=*" attribute="bytesReceived"
               resultAlias="tomcat.bytesReceived"/>
    </queries>
    <outputWriter class="org.jmxtrans.agent.RollingFileOutputWriter">
        <fileName>rolling.log</fileName>
        <maxFileSize>1024</maxFileSize>
        <maxBackupIndex>10</maxBackupIndex>
    </outputWriter>
    <collectIntervalInSeconds>20</collectIntervalInSeconds>
</jmxtrans-agent>

    jmxtrans-agent.xml按照export的设置,是应该放到classpath目录下面的,产生的rolling.log文件也在classpath下面。下面看看tomcat的启动过程和产生的rolling.log文件内容:

    启动日志:

    产生的数据文件:



    下一篇讲解jmxtrans agent和statsd、graphite的结合。


展开阅读全文
打赏
1
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
1
分享
在线直播报名
返回顶部
顶部