zoukankan      html  css  js  c++  java
  • 使用Collectd + InfluxDB + Grafana进行JMX监控

    我们已经看到使用Collectd监控CPU /内存利用率(本文)。但它没有提供所有信息来确定性能问题的瓶颈。在本文中,我们将使用Collectd Java插件来使用其JMX技术来监视和管理Java虚拟机(JVM)。

    目标:

    使用Java的JMX技术监视和管理Java虚拟机(JVM)。

    建筑:

    我们的高级架构如下所示 - 我们将监控所有应用服务器,JMeter服务器和JMeter-master的JVM。

    collectd流

    JMX(Java托管扩展):

    JMX是在Java 5.0发行版中引入的,用于在运行时管理/监视资源。使用JMX,我们将能够监视内存使用情况,垃圾收集,加载的类,线程数等随着时间的推移。这是性能工程中更有用的信息。更多信息在这里

    1

    如上图所示,使用JMX连接器,JConsole / Collectd等客户端与MBean服务器通信,以获取我们感兴趣的应用程序的度量标准。

    JConsole的:

    JConsole是一个用于监视JVM的GUI工具。它附带Java JDK。让我们看看它如何帮助我们监控JMeter。[我假设你安装了JDK]

    • 启动JMeter
    • 打开一个简单的测试计划/创建一个。
    • 转到Java JDK Home / bin文件夹
    • 启动JConsole.exe

    JConsole的-CONNECT

    • 它将显示正在运行的Java应用程序列表。选择ApacheJMeter.jar并连接。如果出现此对话窗口,请单击“不安全连接”

    JConsole的不安全

    • 运行JMeter测试。

    JConsole的显示器

    • JConsole显示内存使用情况,线程数[ 不要与JMeter的线程数混淆 ],加载类等
    • 单个选项卡提供更多信息,如GC。

    监控远程过程:

    • 当我们在上面监视本地进程(ApacheJMeter.jar)时,JConsole也可用于监视远程进程(远程进程可能是您的tomcat服务器/ JMeter-server)
    • 应为远程进程设置某些属性,以便client / JConsole可以与JMX API通信以获取信息。在启动java进程时,传递以下属性。

    -Dcom.sun.management.jmxremote
    -Dcom.sun.management.jmxremote.port=6969
    -Dcom.sun.management.jmxremote.rmi.port=6969
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false

    • 如果您正在运行docker容器,请确保还使用了以下属性。

    -Djava.rmi.server.hostname=${HOST_IP}

    • 要收集jmeter-server jmx指标,我在下面设置环境变量并启动jmeter-server.sh

    export JVM_ARGS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.rmi.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

    • 对于Tomcat:

    CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.rmi.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

    • 只需将上述参数传递给java进程即可启用JMX监控。
    • 现在,JConsole可以使用以下服务URL连接到远程JMX。

    service:jmx:rmi:///jndi/rmi://hostname:6969/jmxrmi

    Collectd Java插件:

    JConsole是一个很好的工具。但它不保留历史数据。我们已经使用Collectd来监控我们的jmeter-servers和app服务器的CPU和内存利用率。我们可以使用Collectd的Java和JMX插件将JMX指标收集到InfluxDB中。

    请先阅读本文关于collectd的用法。

    我将在collectd配置文件中添加以下部分。

    重启collectd服务。等几分钟来收集一些指标。

    JMX-influxdb-1

    获得此数据后,最后一步将在Grafana中创建一个仪表板来创建图形。

    JMX-grafana

    摘要:

    使用Collectd插件,以及CPU和内存利用率,我们还可以将JMX指标收集到InfluxDB中。使用Grafana,我们可以可视化,性能测试结果(最小值,最大值,平均响应时间,吞吐量等),JMX度量(堆内存使用,加载的类计数,线程数,GC)和其他指标,如所有的CPU和内存利用率JMeter服务器,App服务器。

     

  • 相关阅读:
    Longest Palindromic Substring
    PayPal MLSE job description
    Continuous Median
    Remove Duplicates From Linked List
    Valid IP Address
    Longest substring without duplication
    Largest range
    Subarray sort
    Multi String Search
    Suffix Trie Construction
  • 原文地址:https://www.cnblogs.com/a00ium/p/10381299.html
Copyright © 2011-2022 走看看