You need to enable JavaScript to run this app.
文档中心
应用性能监控全链路版

应用性能监控全链路版

复制全文
下载 pdf
接入指南
APMPlus 自研监控系统说明
复制全文
下载 pdf
APMPlus 自研监控系统说明
APMPlus自研监控系统是应用性能监控全链路版自主研发的数据采集工具,负责采集应用与基础设施的监控数据,然后相关数据上报到APMPlus服务端用于可视化查询分析。
系统框架结构
Image
由上图可以看出,应用性能监控整体采用了三层架构。
  • 应用探针:集成Trace、Log、Metrics SDK通过IPC(Inter Process Communication,即进程间通讯)和本机Agent进行通信。
  • Agent:负责采集宿主机数据和宿主机上容器数据,并且接收应用发送的监控数据,缓存后经过压缩和加密转发到数据中心,同时负责将数据中心的动态配置定时同步给应用。
  • 数据中心:负责接收数据,清洗存储最终展示给用户,并提供分析和报警功能。
Java应用功能
Java应用接入服务端采用无侵入式的插桩方案,以下介绍Java应用接入服务端后支持的功能。
Trace
Java应用接入服务端后,JavaAgent可以自动收集Trace信息、自动生成Metric指标。
目前已经支持的框架请参见支持的框架列表,接入后会自动生成Metrics如下所示:
Metrics
说明
Tags
apminsight.service.trace.called.throughput
被调用次数
service:被调用服务名
resource:被调用接口名
status:返回码
instance_id:进程ID
apminsight.service.trace.called.latency.us.
被调用耗时
service:被调用服务名
resource:被调用接口名
status:返回码
instance_id:进程ID
apminsight.service.trace.call.throughput
调用其他服务次数
service:服务名
resource:接口名
status:返回码
instance_id:进程ID
call_service:调用服务名
call_resource:调用接口名
db.slow_query:是否是慢SQL
apminsight.service.trace.call.latency.us.
调用其他服务耗时
service:被调用服务名
resource:被调用接口名
status:返回码
instance_id:进程ID
call_service:调用服务名
call_resource:调用接口名
db.slow_query:是否是慢SQL
apminsight.service.performance.cpu.core
服务CPU使用
service:服务名
apminsight.service.performance.cpu_limit.core
服务CPU限制
service:服务名
apminsight.service.performance.rss.mb
服务占用内存
service:服务名
apminsight.service.performance.memory_limit.mb
服务内存限制
service:服务名
Log
Java应用接入服务端后可以实现调用链检索、日志检索功能,目前针对如下框架做了集成:
  • Logback
  • log4j2
Metrics
Java应用接入服务端后支持Metrics打点功能,详情请参见apminsight-server-sdk-java
JVM监控
Java应用接入服务端后支持JVM相关监控,主要包括以下指标:
类型
Metrics
说明
单位
堆内存
jvm.init_heap
JVM初始堆内存
Byte
jvm.used_heap
JVM已使用堆内存
Byte
jvm.max_heap
JVM最大堆内存
Byte
jvm.committed_heap
JVM已提交堆内存
Byte
非堆内存
jvm.init_noheap
JVM初始非堆内存
Byte
jvm.used_noheap
JVM已使用非堆内存
Byte
jvm.max_noheap
JVM最大非堆内存
Byte
jvm.committed_noheap
JVM已提交非堆内存
Byte
内存池-NewGen
vm.init_newgen
JVM内存池-初始NewGen
Byte
jvm.max_newgen
JVM内存池-最大NewGen
Byte
jvm.used_newgen
JVM内存池-已使用NewGen
Byte
jvm.committed_newgen
JVM内存池-已提交NewGen
Byte
内存池-OldGen
jvm.init_oldgen
JVM内存池-初始OldGen
Byte
jvm.max_oldgen
JVM内存池-最大OldGen
Byte
jvm.used_oldgen
JVM内存池-已使用OldGen
Byte
jvm.committed_oldgen
JVM内存池-已提交OldGen
Byte
内存池-CodeCache
jvm.init_code_cache
JVM内存池-初始CodeCache
Byte
jvm.max_code_cache
JVM内存池-最大CodeCache
Byte
jvm.used_code_cache
JVM内存池-已使用CodeCache
Byte
jvm.committed_code_cache
JVM内存池-已提交CodeCache
Byte
内存池-Survivor
jvm.init_survivor
JVM内存池-初始Survivor
Byte
jvm.max_survivor
JVM内存池-最大Survivor
Byte
jvm.used_survivor
JVM内存池-已使用Survivor
Byte
jvm.committed_survivor
JVM内存池-已提交Survivor
Byte
内存池-MetaSpace
jvm.init_meta_space
JVM内存池-初始MetaSpace
Byte
jvm.max_meta_space
JVM内存池-最大MetaSpace
Byte
jvm.used_meta_space
JVM内存池-已使用MetaSpace
Byte
vm.committed_meta_space
JVM内存池-已提交MetaSpace
Byte
内存池-PermGen
jvm.init_perm_gen
JVM内存池-初始PermGen
Byte
jvm.max_perm_gen
JVM内存池-最大PermGen
Byte
jvm.used_perm_gen
JVM内存池-已使用PermGen
Byte
jvm.committed_perm_gen
JVM内存池-已提交PermGen
Byte
类加载
jvm.loaded_class_count
JVM当前加载类数量
count
jvm.total_unloaded_class_count
JVM总计已卸载类数量
count
vm.total_loaded_class_count
JVM总计加载类数量
count
程数
jvm.live_count
JVM存活线程数
count
jvm.daemon_count
JVM守护线程数
count
jvm.peak_count
JVM峰值线程数
count
jvm.runnable_state_thread_count
JVM可运行线程数
count
jvm.blocked_state_thread_count
JVM阻塞线程数
count
vm.waiting_state_thread_count
JVM等待线程数
count
vm.timed_waiting_state_thread_count
JVM定时等待线程数
count
GC-次数
jvm.gc_count_old
JVM GC次数-OldGen
count
jvm.gc_count_new
JVM GC次数-NewGen
count
GC-时间
jvm.gc_time_old
JVM GC时间-OldGen
ms
jvm.gc_time_new
JVM GC时间-NewGen
ms
自定义插桩
Java应用接入服务端后支持自定义代码监控的插桩。在平台上配置全局维度、服务维度的类名和方法名,即可完成对相关方法的插桩,插桩结果会随Trace链路一起上报并查询。
支持的框架列表
框架/组件
Maven
版本
tomcat
org.apache.tomcat.embed:tomcat-embed-core
7.x~8.x
mysql
mysql:mysql-connector-java
5.x~8.x
oracle
com.oracle:ojdbc14
10.x及以上版本
redis
redis.clients:jedis
2.x及以上版本
io.lettuce:lettuce-core
5.x及以上版本
Memcached
net.spy:spymemcached
2.x及以上版本
com.googlecode.xmemcached:xmemcached
2.x及以上版本
MongoDB
org.mongodb:mongo-java-driver
2.x~3.x
org.mongodb:mongodb-driver-sync
4.x及以上版本
Kafka
org.apache.kafka:kafka-clients
0.11.0.0及以上版本
RocketMQ
com.alibaba.rocketmq:rocketmq-client
3.x及以上版本
org.apache.rocketmq:rocketmq-client
4.x及以上版本
RabbitMQ
com.rabbitmq:amqp-client
5.x及以上版本
logback
ch.qos.logback:logback-classic
1.x及以上版本
log4j
org.apache.logging.log4j:log4j-core
2.x及以上版本
HttpClient
com.squareup.okhttp:okhttp
2.x及以上版本
com.squareup.okhttp3:okhttp
3.x~4.x
commons-httpclient:commons-httpclient
3.x及以上版本
org.apache.httpcomponents:httpclient
4.x及以上版本
org.apache.httpcomponents.client5:httpclient5
5.x及以上版本
org.apache.httpcomponents:httpasyncclient
4.x及以上版本
org.asynchttpclient:async-http-client
2.x及以上版本
io.github.openfeign:feign-core
9.x
org.springframework.cloud:spring-cloud-starter-feign
1.x~2.x
Rest tempalte
org.springframework:spring-web
4.x及以上版本
Spring
org.springframework:spring-webmvc
3.x~5.x
org.springframework:spring-context
3.x~5.x
Go应用功能
Go应用接入服务端采用侵入式插桩方案,以下介绍Go应用接入服务端后支持的功能。
Trace
Go应用接入服务端无法采用无侵入式的插桩方案,只能通过框架集成实现,目前针对如下框架做了集成:
  • gin-gonic/gin
  • gorm.io/gorm.v1
  • net/http
具体接入方式请参见trace功能说明。 接入后会自动生成如下Metrics:
Metrics
说明
Tags
apminsight.service.trace.called.throughput
被调用次数
service:被调用服务名
resource:被调用接口名
status:返回码
instance_id:进程ID
apminsight.service.trace.called.latency.us.
被调用耗时
service:被调用服务名
resource:被调用接口名
status:返回码
instance_id:进程ID
apminsight.service.trace.call.throughput
调用其他服务次数
service:服务名
resource:接口名
status:返回码
instance_id:进程
IDcall_service:调用服务名
call_resource:调用接口名
db.slow_query:是否是慢
SQL
apminsight.service.trace.call.latency.us.
调用其他服务耗时
service:被调用服务名
resource:被调用接口名
status:返回码
instance_id:进程
IDall_service:调用服务名
call_resource:调用接口名
db.slow_query:是否是慢SQL
apminsight.service.performance.cpu.core
服务CPU使用
service:服务名
apminsight.service.performance.cpu_limit.core
服务CPU限制
service:服务名
apminsight.service.performance.rss.mb
服务占用内存
service:服务名
apminsight.service.performance.memory_limit.mb
服务内存限制
service:服务名
Log
Go应用接入服务端,且与Trace和Log框架适配后,可以实现调用链检索、日志检索功能,目前针对如下框架做了集成:
  • sirupsen/logrus
具体接入方式请参见log功能说明。 接入后会自动生成如下Metrics:
Metrics
说明
Tags
apminsight.service.log.throughput
服务日志条目
service:服务名
log_level:日志级别
Metrics
Go SDK提供接口如下:
// 用于度量QPS等场景
func EmitCounter(name string, value float64, tags map[string]string) error {
}
// 用于度量耗时等需要分析均值、分位值的场景
func EmitTimer(name string, value float64, tags map[string]string) error {
}
// 用于度量绝对值场景
func EmitGauge(name string, value float64, tags map[string]string) error {
}
具体接入方式请参见metrics功能说明
支持的框架列表
框架
版本
gin-gonic/gin
1.x
gorm.io/gorm.v1
1.x
net/http
-
sirupsen/logrus
1.x
最近更新时间:2026.02.10 19:56:22
这个页面对您有帮助吗?
有用
有用
无用
无用