MyPerf4J3.0+influxdb1.7+grafana实现系统监控
Healthy Mind Lv3

MyPerf4J3.0+influxdb1.7+grafana实现系统监控

使用MyPerf4J3.0 实现代码无侵入监控,实现原理是使用asm修改字节码的方式来做

数据库 influxdb1.7 go语言实现的 时序数据库 这里用来保存系统日志和指标

数据可视化面板grafana nodejs

准备程序包

  • 下载 MyPerf4J-ASM.zip

  • 下载influxdb-1.7.11.x86_64.rpm rpm包 influxdb目前最新版本是2.0.6 在使用方式上好像有区别(这个数据库还不是很了解),最好是1.7般的 MyPerf4J3.0 配置里使用的连接是1.7的

  • 下载grafana 程序

修改MyPerf4j.properties

  • 解压 MyPerf4J-ASM.zip 修改MyPerf4j.properties配置 参考

  • MyPerf4j的使用方式

    1
    java -javaagent:/path/to/MyPerf4J-ASM.jar -DMyPerf4JPropFile=/path/to/MyPerf4J.properties -jar yourApp.jar
  • 这里我使用的 是MyPerf4j直接写入influxdb数据库,我的配置如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    # MyPerf4J 所有配置请参考:https://github.com/LinShunKang/MyPerf4J/wiki/%E9%85%8D%E7%BD%AE

    # 配置监控应用的名称
    app_name = kb-data-rest

    debug = true

    ###############################################################################
    # Metrics Configuration #
    ###############################################################################

    # 配置 MetricsExporter 类型
    # log.stdout: 以标准格式化结构输出到 stdout.log
    # http.influxdb: 以 InfluxDB LineProtocol 格式发送至 InfluxDB server,需要另行增加 influxdb 的配置
    metrics.exporter = http.influxdb

    # 配置各项监控指标日志的文件路径
    # 如果 metrics.exporter 配置为 log.influxdb,建议把所有的 metrics.log.* 路径配置成一样以方便 Telegraf 收集
    metrics.log.method = /var/log/MyPerf4J/metrics.log
    metrics.log.class_loading = /var/log/MyPerf4J/metrics.log
    metrics.log.gc = /var/log/MyPerf4J/metrics.log
    metrics.log.memory = /var/log/MyPerf4J/metrics.log
    metrics.log.buff_pool = /var/log/MyPerf4J/metrics.log
    metrics.log.thread = /var/log/MyPerf4J/metrics.log
    metrics.log.file_desc = /var/log/MyPerf4J/metrics.log
    metrics.log.compilation = /var/log/MyPerf4J/metrics.log


    ###############################################################################
    # Filter Configuration #
    ###############################################################################

    # 配置需要监控的package,可配置多个,用英文';'分隔
    # com.demo.p1 代表包含以 com.demo.p1 为前缀的所有包和类
    # [] 表示集合的概念:例如,com.demo.[p1,p2,p3] 代表包含以 com.demo.p1、com.demo.p2 和 com.demo.p3 为前缀的所
    有包和类,等价于 com.demo.p1;com.demo.p2;com.demo.p3
    # * 表示通配符:可以指代零个或多个字符,例如,com.*.demo.*
    filter.packages.include = com.trs.kb.*;

    # 配置不需要监控的package,可配置多个,用英文';'分隔
    filter.packages.exclude = cn.perf4j.demo.dao.DemoDAOImpl


    influxdb.host=ky48
    influxdb.port=8086
    influxdb.database=influxdb
    influxdb.username=influx
    influxdb.password=influxdb
    influxdb.conn_timeout=3000
    influxdb.read_timeout=5000

安装influxdb数据库

1
rpm -i influxdb-1.7.11.x86_64.rpm
  • 检查安装是否成功 运行命令:
1
influx

​ 会出现以下结果:

1
2
3
Connected to http://localhost:8086 version 1.7.11
InfluxDB shell version: 1.7.11
>
  • 输入auth 创建用户和密码

grafana 安装

配置grafana 连接influxdb

  • 选择influxdb数据源

  • 配置influxdb的地址和用户密码 并保存

创建监控面板

​ 这里创建 jvm启动线程的面板

​ 选择指标

​ 选择线程状态

保存应用,这样就可以了按照自己的需求去定义 自己的监控面板。

自己用于测试的例子

到此引用监控流程配置完成!