• collectd+infludb+grafana实现tomcat JVM监控


    前提条件:已安装好java环境,tomcat,influxdb和collectd。本文暂不提供以上内容的安装步骤

    系统环境:centos7

    原理:开启tomcat的jmx端口,使用collectd的collectd-fast-jmx插件收集jmx信息,collectd把数据存储到infludb,再由grafana展示infludb的数据

    1,开启tomcat的jmx配置

    cd /usr/local/tomcat/bin/

    cp catalina.sh catalina.sh.bak

    vim catalina.sh

    增加:CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=utf-8 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=127.0.0.1"

    重启tomcat

    /etc/init.d/tomcat restart

    netstat -nltp

    看到9999端口开启就表示jmx开启成功了

    2,下载collectd-fast-jmx插件

    http://www.mvnjar.com/com.e-gineering/collectd-fast-jmx/1.0.0/detail.html下载插件拷贝到机器上并重命名为collectd-fast-jmx.jar

    cd /tmp

    wget http://maven.aliyun.com/nexus/content/groups/public/com/e-gineering/collectd-fast-jmx/1.0.0/collectd-fast-jmx-1.0.0.jar

    cd /opt/collectd/share/collectd/java/

    mv /tmp/collectd-fast-jmx-1.0.0.jar collectd-fast-jmx.jar

    3,编辑collectd配置文件并启动collectd

    collectd插件的安装比较简单,下载jar包,在配置文件中添加相关配置就可以了。collectd有丰富的插件可以使用,免去了自己写监控脚本的繁琐。

    cd /opt/collectd/etc

     cp collectd.conf collectd.conf.bak

    vim collectd.conf

    增加如下内容:

    LoadPlugin java
    <Plugin "java">
    
      LoadPlugin "com.e_gineering.collectd.FastJMX"
    
       <Plugin "FastJMX">
        MaxThreads 256
        CollectInternal true
    
        <MBean "classes">
          ObjectName "java.lang:type=ClassLoading"
    
          <Value "LoadedClassCount">
            Type "gauge"
            InstancePrefix "loaded_classes"
            PluginName "JVM"
          </Value>
        </MBean>
    
        # Time spent by the JVM compiling or optimizing.
        <MBean "compilation">
          ObjectName "java.lang:type=Compilation"
    
          <Value "TotalCompilationTime">
            Type "total_time_in_ms"
            InstancePrefix "compilation_time"
            PluginName "JVM"
          </Value>
        </MBean>
    
        # Garbage collector information
        <MBean "garbage_collector">
          ObjectName "java.lang:type=GarbageCollector,*"
          InstancePrefix "gc-"
          InstanceFrom "name"
    
          <Value "CollectionTime">
            Type "total_time_in_ms"
            InstancePrefix "collection_time"
            PluginName "JVM"
          </Value>
        </MBean>
    
      <MBean "memory_pool">
        ObjectName "java.lang:type=MemoryPool,*"
        InstancePrefix "memory_pool-"
        InstanceFrom "name"
        <Value>
          Type "memory"
          Table true
          Attribute "Usage"
        </Value>
      </MBean>
       <MBean "memory-heap">
        ObjectName "java.lang:type=Memory"
        InstancePrefix "memory-heap"
        <Value>
          Type "memory"
          Table true
          Attribute "HeapMemoryUsage"
        </Value>
      </MBean>
      <MBean "memory-nonheap">
        ObjectName "java.lang:type=Memory"
        InstancePrefix "memory-nonheap"
        <Value>
          Type "memory"
          Table true
          Attribute "NonHeapMemoryUsage"
        </Value>
      </MBean>
       <MBean "thread">
        ObjectName "java.lang:type=Threading"
        InstancePrefix "threading"
        <Value>
          Type "gauge"
          Table false
          Attribute "ThreadCount"
          InstancePrefix "count"
        </Value>
      </MBean>
      <MBean "thread-daemon">
        ObjectName "java.lang:type=Threading"
        InstancePrefix "threading"
        <Value>
          Type "gauge"
          Table false
          Attribute "DaemonThreadCount"
          InstancePrefix "count-daemon"
        </Value>
      </MBean>
        ### MBeans by Catalina / Tomcat ###
        # The global request processor (summary for each request processor)
        <MBean "catalina/global_request_processor">
          ObjectName "Catalina:type=GlobalRequestProcessor,*"
          InstancePrefix "catalina_request_processor-"
          InstanceFrom "name"
    
          <Value>
            Type "io_octets"
            InstancePrefix "global"
            #InstanceFrom ""
            Table false
            Attribute "bytesReceived"
            Attribute "bytesSent"
          </Value>
    
          <Value>
            Type "total_requests"
            InstancePrefix "global"
            #InstanceFrom ""
            Table false
            Attribute "requestCount"
          </Value>
    
          <Value>
            Type "total_time_in_ms"
            InstancePrefix "global-processing"
            #InstanceFrom ""
            Table false
            Attribute "processingTime"
          </Value>
        </MBean>
    
        <MBean "catalina/threadpool">
          ObjectName "Catalina:type=ThreadPool,*"
          InstancePrefix "catalina_threadpool-"
          InstanceFrom "name"
    
          <Value>
            Type "gauge"
            Table false
            Attribute "maxThreads"
            InstancePrefix "threadpool-maxThreads"
          </Value>
          <Value>
            Type "gauge"
            Table false
            Attribute "connectionCount"
            InstancePrefix "threadpool-connectionCount"
          </Value>
        </MBean>
    
        <MBean "tomcat_manager">
             ObjectName "Catalina:type=Manager,context=*,host=*"
             InstanceFrom "context"
             <Value>
                Type "gauge"
                InstancePrefix "manager-active_sessions"
                Table false
                Attribute "activeSessions"
            </Value>
        </MBean>
    
        <MBean "jvm_runtime">
          ObjectName "java.lang:type=Runtime"
          <Value>
            Type "counter"
            InstancePrefix "runtime-uptime"
            Table false
            Attribute "Uptime"
          </Value>
        </MBean>
    
         <MBean "jvm_system">
           ObjectName "java.lang:type=OperatingSystem"
           <Value>
             Type "gauge"
             InstancePrefix "os-open_fd_count"
             Table false
             Attribute "OpenFileDescriptorCount"
           </Value>
           <Value>
             Type "counter"
             InstancePrefix "os-process_cpu_time"
             Table false
             Attribute "ProcessCpuTime"
           </Value>
         </MBean>
        <Connection>
          ServiceURL "service:jmx:rmi:///jndi/rmi://testserver:9999/jmxrmi"
          Host "testserver"
          IncludePortInHostname true
          Collect "classes"
          Collect "thread"
          Collect "thread-daemon"
          Collect "compilation"
          Collect "garbage_collector"
          Collect "memory_pool"
          Collect "memory-heap"
          Collect "memory-nonheap"
          Collect "catalina/global_request_processor"
          Collect "catalina/threadpool"
          Collect "jvm_system"
          Collect "jvm_runtime"
          Collect "tomcat_manager"
        </Connection>
      </Plugin>
    </Plugin>
    

      

    校验配置文件  /opt/collectd/sbin/collectd -t编辑完成后保存退出

    没问题的话就重启collectd

    ps -ef |grep collectd

    kill -9 6669(这里是进程号)

    /opt/collectd/sbin/collectd

    4,配置grafana,使用的是网上的模板

    grafana面板下载地址:

    https://grafana.com/dashboards/1503

    可以看出面板的编号是1503

    接下来配置下grafana就可以了

    (1)在主页选择”dashboards"->"improt"进行模板导入

     

    (2)输入模板编号1503,再点击load

     

    (3)输入面板名字,选择数据源,点击import

     

    (4)然后就可以在grafana上看到tomcat的JVM监控了,大功告成!

     

  • 相关阅读:
    table
    html <input>
    html基本结构
    Spark join连接
    combineByKey
    scala mkstring
    countByValue
    spark aggregate
    scala flatmap、reduceByKey、groupByKey
    生态圈安装
  • 原文地址:https://www.cnblogs.com/echo-valley/p/9293116.html
Copyright © 2020-2023  润新知