Closed RichardLiu0926 closed 3 years ago
你好,你指的参数无效是什么意思?能否提供 MyPerf4J 采集的日志信息(修改 metrics.exporter = log.stdout 即可)?
metrics.method.class_level_mapping = Filter:[Filter];Handler:[Handler];Dao:[*Dao]; 就是 筛选 level 并不会出现Dao Filter Handler
metrics.method.class_level_mapping = Filter:[*Filter];Handler:[*Handler];Dao:[*Dao]
指的是,如果你的类名称是以 'Filter' 结尾,则 Level 归类为 Filter;如果你的类名称是以 'Handler' 结尾,则 Level 归类为 Handler;如果你的类名称是以 'Dao' 结尾,则 Level 归类为 Dao。
所以,你能否提供 MyPerf4J 采集的 Metrics 日志信息?
是的就是这个意思类名结尾并未归类Level, 目前使用的方式http.influxdb 并没有本地输出Metrics日志信息
这个是influxdb 查询出来的数据
你好,我跑了测试用例,没发现问题
问题描述
metrics.method.class_level_mapping 参数无效
运行环境
JVM启动参数 JAVA_HOME="/usr/local/jdk1.8.0_211" JAVA_OPTS="-Xms1024m -Xmx1024m -Djava.awt.headless=true -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -server -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+DisableExplicitGC -Xnoclassgc" JAVA_AGENT="-javaagent:/data/ishare/MyPerf4J-ASM-3.1.0-SNAPSHOT.jar -DMyPerf4JPropFile=$CONFIG_HOME/myperf4j.properties"
eval exec $JAVA_HOME/bin/java $JAVA_OPTS $JAVA_AGENT -jar -Dlogging.config=$CONFIG_HOME/logback.xml -Dlogging.path=$LOG_HOME -Dspring.config.location=$CONFIG_HOME/application.yml $APP_HOME/$jar_name >/dev/null 2>&1
配置文件
MyPerf4J 所有配置请参考:https://github.com/LinShunKang/MyPerf4J/wiki/%E9%85%8D%E7%BD%AE
配置监控应用的名称
app_name =
是否开启 debug 模式,可配置为 true/false
debug = true
###############################################################################
HTTP Server Configuration
###############################################################################
配置 HTTP Server 端口号
http.server.port = 18765
配置 HTTP Server 最小工作线程数
http.server.min_workers = 1
配置 HTTP Server 最大工作线程数
http.server.max_workers = 2
配置 HTTP Server 排队数, worker 线程数达到最大时,接受排队的请求个数
http.server.accept_count = 1024
###############################################################################
Metrics Configuration
###############################################################################
配置 MetricsExporter 类型
log.stdout: 以标准格式化结构输出到 stdout.log
log.standard: 以标准格式化结构输出到磁盘
log.influxdb: 以 InfluxDB LineProtocol 格式输出到磁盘
http.influxdb: 以 InfluxDB LineProtocol 格式发送至 InfluxDB server
metrics.exporter = http.influxdb
配置各项监控指标日志的文件路径
如果 metrics.exporter 配置为 log.influxdb,建议把所有的 metrics.log.* 路径配置成一样以方便 Telegraf 收集
metrics.log.method = /data/log/xxxx/metrics.log metrics.log.class_loading = /data/log/ixxx/metrics.log metrics.log.gc = /data/log/xxxe/metrics.log metrics.log.memory = /data/log/xxxx/metrics.log metrics.log.buff_pool = /data/log/ixxx/metrics.log metrics.log.thread = /data/log/ixxxx/metrics.log metrics.log.file_desc = /data/log/ixxxx/metrics.log metrics.log.compilation = /data/log/isxxx/metrics.log
配置日志文件滚动时间间隔,分别有 MINUTELY、HOURLY 和 DAILY 三个值
metrics.log.rolling.time_unit = DAILY
配置历史日志文件保留个数
metrics.log.reserve.count = 30
配置方法指标采集的时间片,单位为 ms,最小 1s,最大 600s
metrics.time_slice.method = 10000
配置 JVM 指标采集的时间片,单位为ms,最小1s,最大600s
metrics.time_slice.jvm = 10000
是否展示方法参数类型
metrics.method.show_params = true
配置 Java 类的层级映射关系
规则为:LevelA:[classNameExpA1,classNameExpA2];LevelB:[classNameExpB1,classNameExpB2];
metrics.method.class_level_mapping = Filter:[Filter];Handler:[Handler];Dao:[*Dao];
###############################################################################
InfluxDB Configuration
###############################################################################
influxdb.host = xxxx influxdb.port = xxx influxdb.database = MyPerf4J
influxdb.username = MyPerf4J influxdb.password = MyPerf4J
配置超时时间,单位:ms
influxdb.conn_timeout = 3000 influxdb.read_timeout = 5000
###############################################################################
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.xxx.seo.[controller,dao,feignController,manage,service];
配置不需要监控的package,可配置多个,用英文';'分隔
filter.packages.exclude =
配置不需要进行监控的方法名,每个方法名用英文 ';' 分隔
filter.methods.exclude = getId1 代表排除所有方法名为 getId1 的方法
filter.methods.exclude = DemoServiceImpl.getId1 代表排除类 DemoServiceImpl 中所有方法名为 getId1 的方法
filter.methods.exclude = DemoServiceImpl.getId1(long) 代表排除类 DemoServiceImpl 中方法签名为 getId1(long) 的方法
filter.methods.exclude = equals;toString;hashCode;wait
配置是否排除私有方法,true/false
filter.methods.exclude_private = true
配置需要排除的 ClassLoader,可配置多个ClassLoader,用英文';'分隔
filter.class_loaders.exclude =
###############################################################################
Recorder Configuration
###############################################################################
配置 Recorder 模式,可配置为 accurate/rough
recorder.mode = ACCURATE
配置 Recorders 转盘的数量
recorders.backup_count = 3
指定通用的方法执行时间阈值,单位为 ms
recorder.size.timing_arr = 3000
指定一个时间片内,超过方法执行时间阈值的次数,仅在 recorder.mode = accurate 时有效
recorder.size.timing_map = 128
异常堆栈
请把程序的错误栈信息完整的复制出来