服务监控整合了Trace、Metrics、日志、基础监控等和服务有关联的信息,提供了服务列表、全局服务拓扑、服务总览、进程分析等便捷的监控能力。
服务指标和链路追踪功能需要应用接入Trace能力。具体请参见应用接入。
全局拓扑可以帮助您快速梳理整体服务架构、上下游调用关系,并且可以实时看到各个服务间调用的成功率,快速发现问题服务。
服务拓扑页面说明:
服务详情页面涉及的指标说明:
指标名 | 指标 | 说明 | 单位 |
---|---|---|---|
调用下游请求数 | apminsight.service.trace.call.throughput | 服务对下游服务的调用次数。 | - |
调用下游平均延时 | apminsight.service.trace.call.latency.us.avg | 服务调用下游服务延时的平均值。 | μs |
QPS | apminsight.service.trace.called.throughput | 服务的每秒被调用次数。 | /s |
平均延时 | apminsight.service.trace.called.latency.us.avg | 服务被调用的延时平均值。 | μs |
错误日志数 | apminsight.service.log.throughput | 服务产生的错误日志数。错误日志指日志级别为"错误"的日志,错误日志对应的Level关键字可在参数配置 > 错误日志配置中修改。 | - |
CPU使用量 | apminsight.service.performance.cpu.core | 服务使用的CPU核心数。 | - |
调用下游错误数 | apminsight.service.trace.call.throughput | 服务调用下游服务的错误次数。 | - |
错误数 | apminsight.service.trace.called.throughput | 服务被调用时的错误次数。 | - |
调用下游延时pct99 | apminsight.service.trace.call.latency.us.pct99 | 服务调用下游服务延时的PCT99。 | μs |
延时pct50 | apminsight.service.trace.called.latency.us.pct50 | 服务被调用的延时PCT50。 | μs |
延时pct90 | apminsight.service.trace.called.latency.us.pct90 | 服务被调用的延时PCT90。 | μs |
延时pct99 | apminsight.service.trace.called.latency.us.pct99 | 服务被调用的延时PCT99。 | μs |
每秒错误日志数 | apminsight.service.log.throughput | 服务产生的每秒错误日志数。错误日志指日志级别为"错误"的日志,错误日志对应的Level关键字可在参数配置 > 错误日志配置中修改。 | /s |
CPU总量 | apminsight.service.performance.cpu_limit.core | 服务的CPU核心数限额。 | - |
内存使用量 | apminsight.service.performance.rss.mb | 服务的内存使用量。 | MiB |
每秒错误数 | apminsight.service.trace.call.throughput | 服务被调用时的每秒错误次数。 | /s |
服务CPU使用比例 | apminsight.service.performance.cpu.ratio | 服务CPU使用比例。计算方式为服务使用的CPU核数/CPU总核数。 | % |
调用下游延时pct50 | apminsight.service.trace.call.latency.us.pct50 | 服务调用下游服务延时的PCT50。 | μs |
调用下游延时pct90 | apminsight.service.trace.call.latency.us.pct90 | 服务调用下游服务延时的PCT90。 | μs |
请求数 | apminsight.service.trace.called.throughput | 服务的被调用次数。 | - |
内存总量 | apminsight.service.performance.memory_limit.mb | 服务的内存限额。 | MiB |
调用下游每秒错误数 | apminsight.service.trace.call.throughput | 服务调用下游服务的每秒错误次数。 | /s |
服务内存使用比例 | apminsight.service.performance.memory.rss_ratio | 服务内存使用比例。计算方式为服务使用的内存大小/内存总大小。 | % |
调用下游QPS | apminsight.service.trace.call.throughput | 服务对下游服务的每秒调用次数。 | /s |
调用下游错误率 | apminsight.service.trace.call.error_ratio | 服务调用下游服务的错误率。计算方式为服务被调用时的错误次数/服务被调用次数。 | % |
错误率 | apminsight.service.trace.called.error_ratio | 服务被调用时的错误率。计算方式为服务调用下游服务的错误次数/服务对下游服务的调用次数。 | % |
通过服务总览可以快速获取当前服务最关键的监控指标,帮助您确定是否存在调用过多、失败率过高、延迟过高等问题。
除了服务指标外,还包括服务整体性能指标:
通过服务拓扑可以看到服务所有调用全链路的调用情况,包括下游和上游拓扑两种视角,并且提供了对于接口、返回码、耗时的过滤功能。
单击服务会弹出服务的调用QPS、错误率、延迟等核心指标,单击详情进入服务详情页面查看服务具体情况。
进程分析统计归属于服务的应用进程信息并进行监控,在进程列表中可以查看当前运行中的进程,并提供了进程所在主机、容器、进程接口调用错误率、进程接口调用平均QPS、进程接口调用延迟PCT90、进程CPU使用率、进程内存使用率等核心指标。
通过接口监控,可以看到服务所有接口列表,并支持在所选时间段内根据QPS、总体错误率、时延PCT90进行排序,并且可以看到所选接口核心指标趋势图。
单击接口列表中的接口,可以快速下钻到接口调用详情检索页面,同时可以针对耗时进行排序过滤快速定位慢查询,针对状态码进行过滤快速定位错误查询。
单击TraceID可以查看Trace详情,并高亮显示所选Span信息。
通过上下游监控,可以看到服务所有上下游调用服务和接口列表,并展示所选时间段内平均QPS、总体错误率、时延PCT90,并且可以看到所选调用核心指标趋势图。
单击调用接口和调用服务,可以快速下钻到接口调用详情检索页面。
日志分析为服务日志提供了聚类和列表两种分析方式查找相应的日志。通过日志过滤和搜索日志功能,可以更好的查询日志。
针对Java应用服务提供了服务视角的运行时核心指标监控,包括指标:已使用堆内存、已使用非堆内存、已使用堆内存-Top10进程、已使用非堆内存-Top10进程、NewGen Size、NewGen Size Top10进程、OldGen Size、OldGenSize-Top10进程、GC次数、GC时间、类加载数量、线程数量、线程数量Top10进程。
Java线程池的指标说明:
指标名 | 指标 | 说明 | 单位 |
---|---|---|---|
Java线程池-空闲线程数量 | apminsight.service.pool.idle.count | 空闲线程数量。由PoolSize-ActiveCount获得。 | - |
Java线程池-最大线程数 | apminsight.service.pool.max.size | 线程池允许的最大线程数。 | - |
Java线程池-等待任务数 | apminsight.service.pool.queue.size | 线程池中的等待任务队列长度。 | - |
Java线程池-活跃线程数 | apminsight.service.pool.active.count | 正在执行任务的线程数量。 | - |
Java线程池-线程核心数 | apminsight.service.pool.core.size | 线程核心数。 | - |
Java线程池-执行任务数 | apminsight.service.pool.task.count | 线程池运行的任务数数量总和。 | - |
Java线程池-当前大小 | apminsight.service.pool.size | 当前线程池中的线程数。 | - |
JVM的指标说明:
指标名 | 指标 | 说明 | 单位 |
---|---|---|---|
JVM最大非堆内存 | apminsight.service.performance.jvm.max_noheap | JVM最大非堆内存。 | Byte |
JVM内存池-已使用OldGen | apminsight.service.performance.jvm.used_oldgen | JVM内存池-已使用OldGen。 | Byte |
JVM内存池-最大MetaSpace | apminsight.service.performance.jvm.max_meta_space | JVM内存池-最大MetaSpace。 | Byte |
JVM内存池-初始PermGen | apminsight.service.performance.jvm.init_perm_gen | JVM内存池-初始PermGen。 | Byte |
JVM内存池-已提交PermGen | apminsight.service.performance.jvm.committed_perm_gen | JVM内存池-已提交PermGen。 | Byte |
JVM峰值线程数 | apminsight.service.performance.jvm.peak_count | JVM峰值线程数。 | - |
JVM总计加载类数量 | apminsight.service.performance.jvm.total_loaded_class_count | JVM总计加载类数量。 | - |
JVM已提交堆内存 | apminsight.service.performance.jvm.committed_heap | JVM已提交堆内存。 | Byte |
JVM内存池-已使用CodeCache | apminsight.service.performance.jvm.used_code_cache | JVM内存池-已使用CodeCache。 | Byte |
JVM内存池-已提交MetaSpace | apminsight.service.performance.jvm.committed_meta_space | JVM内存池-已提交MetaSpace。 | Byte |
JVM守护线程数 | apminsight.service.performance.jvm.daemon_count | JVM守护线程数。 | - |
JVM当前加载类数量 | apminsight.service.performance.jvm.loaded_class_count | JVM当前加载类数量。 | - |
JVM GC次数-OldGen | apminsight.service.performance.jvm.gc_count_old | JVM GC次数-OldGen。 | - |
JVM已使用堆内存 | apminsight.service.performance.jvm.used_heap | JVM已使用堆内存。 | Byte |
JVM内存池-最大NewGen | apminsight.service.performance.jvm.max_newgen | JVM内存池-最大NewGen。 | Byte |
JVM可运行线程数 | apminsight.service.performance.jvm.runnable_state_thread_count | JVM可运行线程数。 | - |
JVM内存池-初始MetaSpace | apminsight.service.performance.jvm.init_meta_space | JVM内存池-初始MetaSpace。 | Byte |
JVM GC时间-NewGen | apminsight.service.performance.jvm.gc_time_new | JVM GC时间-NewGen。 | ms |
JVM初始非堆内存 | apminsight.service.performance.jvm.init_noheap | JVM初始非堆内存。 | Byte |
JVM已提交非堆内存 | apminsight.service.performance.jvm.committed_noheap | JVM已提交非堆内存。 | Byte |
JVM内存池-最大CodeCache | apminsight.service.performance.jvm.max_code_cache | JVM内存池-最大CodeCache。 | Byte |
JVM内存池-初始NewGen | apminsight.service.performance.jvm.init_newgen | JVM内存池-初始NewGen。 | Byte |
JVM内存池-已使用NewGen | apminsight.service.performance.jvm.used_newgen | JVM内存池-已使用NewGen。 | Byte |
JVM内存池-已提交NewGen | apminsight.service.performance.jvm.committed_newgen | JVM内存池-已提交NewGen。 | Byte |
JVM存活线程数 | apminsight.service.performance.jvm.live_count | JVM存活线程数。 | - |
JVM阻塞线程数 | apminsight.service.performance.jvm.blocked_state_thread_count | JVM阻塞线程数。 | - |
JVM总计已卸载类数量 | apminsight.service.performance.jvm.total_unloaded_class_count | JVM总计已卸载类数量。 | - |
JVM初始堆内存 | apminsight.service.performance.jvm.init_heap | JVM初始堆内存。 | Byte |
JVM内存池-初始CodeCache | apminsight.service.performance.jvm.init_code_cache | JVM内存池-初始CodeCache。 | Byte |
JVM内存池-最大OldGen | apminsight.service.performance.jvm.max_oldgen | JVM内存池-最大OldGen。 | Byte |
JVM内存池-已提交Survivor | apminsight.service.performance.jvm.committed_survivor | JVM内存池-已提交Survivor。 | Byte |
JVM等待线程数 | apminsight.service.performance.jvm.waiting_state_thread_count | JVM等待线程数。 | - |
JVM已使用非堆内存 | apminsight.service.performance.jvm.used_noheap | JVM已使用非堆内存。 | Byte |
JVM内存池-已提交OldGen | apminsight.service.performance.jvm.committed_oldgen | JVM内存池-已提交OldGen。 | Byte |
JVM内存池-已使用Survivor | apminsight.service.performance.jvm.used_survivor | JVM内存池-已使用Survivor。 | Byte |
JVM内存池-已使用MetaSpace | apminsight.service.performance.jvm.used_meta_space | JVM内存池-已使用MetaSpace。 | Byte |
JVM内存池-已使用PermGen | apminsight.service.performance.jvm.used_perm_gen | JVM内存池-已使用PermGen。 | Byte |
JVM内存池-初始OldGen | apminsight.service.performance.jvm.init_oldgen | JVM内存池-初始OldGen。 | Byte |
JVM内存池-初始Survivor | apminsight.service.performance.jvm.init_survivor | JVM内存池-初始Survivor。 | Byte |
JVM内存池-最大Survivor | apminsight.service.performance.jvm.max_survivor | JVM内存池-最大Survivor。 | Byte |
JVM内存池-最大PermGen | apminsight.service.performance.jvm.max_perm_gen | JVM内存池-最大PermGen。 | Byte |
JVM GC时间-OldGen | apminsight.service.performance.jvm.gc_time_old | JVM GC时间-OldGen。 | ms |
JVM GC次数-NewGen | apminsight.service.performance.jvm.gc_count_new | JVM GC次数-NewGen。 | - |
JVM最大堆内存 | apminsight.service.performance.jvm.max_heap | JVM最大堆内存。 | Byte |
JVM内存池-最大CodeCache | apminsight.service.performance.jvm.committed_code_cache | JVM内存池-最大CodeCache。 | Byte |
JVM定时等待线程数 | apminsight.service.performance.jvm.timed_waiting_state_thread_count | JVM定时等待线程数。 | - |
针对Go应用服务提供了指标:goRoutine数量、goRoutine数量-Top10进程、GC次数、GC次数-Top10进程、GC总耗时、GC总耗时-Top10进程、单次GC耗时-MAX/AVG/MIN、单次耗时-PCT、cgo调用次数、cgo调用次数-Top10进程、HeapAlloc、HeapAlloc-Top10进程、HeapSys、HeapSys-Top10进程、HeapIdle、HeapIdle-Top10进程、HeapInuse、HeapInuse-Top10进程、HeapReleased、HeapReleased-Top10进程、HeapObject、HeapObject-Top10进程。
goruntime的指标说明:
指标名 | 指标 | 说明 | 单位 |
---|---|---|---|
goroutine数量 | apminsight.runtime.go.routine.num | goroutine的数量。 | - |
cgo调用次数 | apminsight.runtime.go.cgo.call_count | 调用cgo的次数。 | - |
GC次数 | apminsight.runtime.go.gc.count | GC次数。 | - |
两次采样之间的GC耗时 | apminsight.runtime.go.gc.cost_total.us | 两次采样之间一次或多次GC占用的时间之和,采样间隔30s。 | μs |
单次GC耗时 | apminsight.runtime.go.gc.cost_distribute.us | 单次GC的耗时。 | μs |
HeapAlloc | apminsight.runtime.go.mem_stats.heap_alloc | 分配在Heap上的对象占用的内存大小。 | Byte |
HeapSys | apminsight.runtime.go.mem_stats.heap_sys | Heap的虚拟内存空间大小。 | Byte |
HeapIdle | apminsight.runtime.go.mem_stats.heap_idle | 空闲的heap spans的内存大小。空闲span是指span中不包含对象。 | Byte |
HeapInuse | apminsight.runtime.go.mem_stats.heap_inuse | 使用中的heap spans的内存大小。使用中的span是指span其中至少包含有一个对象。 | Byte |
HeapReleased | apminsight.runtime.go.mem_stats.heap_released | 归还给操作系统的物理内存大小。 | Byte |
HeapObjets | apminsight.runtime.go.mem_stats.heap_objects | Heap中的对象个数。 | - |
runtime指针查找数 | apminsight.runtime.go.mem_stats.lookups.count | runtime指针查找数。 | - |
StackInuse | apminsight.runtime.go.mem_stats.stack_inuse | 使用中的stack spans的内存大小。使用中的span是指span其中至少包含有一个对象。 | Byte |
StackSys | apminsight.runtime.go.mem_stats.stack_sys | stack从OS获得的内存大小。 | Byte |
MSpanInuse | apminsight.runtime.go.mem_stats.m_span_inuse | 使用中的MSpans的内存大小。MSpan存放runtime与内存管理相关的对象。 | Byte |
MSpanSys | apminsight.runtime.go.mem_stats.m_span_sys | MSpans从OS获得的内存大小。MSpan存放runtime与内存管理相关的对象。 | Byte |
MCacheInuse | apminsight.runtime.go.mem_stats.m_cache_inuse | 使用中的MCache的内存大小。MCache存放runtime与内存管理相关的对象。 | Byte |
MCacheSys | apminsight.runtime.go.mem_stats.m_cache_sys | MCache从OS获得的内存大小。MCache存放runtime与内存管理相关的对象。 | Byte |
BuckHashSys | apminsight.runtime.go.mem_stats.buck_hash_sys | BucketHash占用的内存大小。BucketHash存放profiling相关的数据结构。 | Byte |
GcSys | apminsight.runtime.go.mem_stats.gc_sys | GC相关的元数据占用的内存大小。 | Byte |
OtherSys | apminsight.runtime.go.mem_stats.other_sys | 其他runtime内部数据结构占用的内存大小。 | Byte |
GC后期望的堆大小 | apminsight.runtime.go.mem_stats.next_gc | GC后期望的heap大小。 | Byte |
强制GC数量 | apminsight.runtime.go.mem_stats.forced_gc.num | 应用程序调用GC方法发起的GC次数。 | - |
GC占用的CPU比例 | apminsight.runtime.go.mem_stats.gc_cpu_fraction | 从程序启动至今,GC使用的CPU时间占比。 | % |
存活的对象数 | apminsight.runtime.go.mem_stats.live_objects | heap中存活的对象数。 | - |
HeapRetained | apminsight.runtime.go.mem_stats.heap_retained | 可以归还给OS但是runtime保留的内存大小,再次分配内存时可以避免从OS申请。计算方式为HeapIdle-HeapReleased。 | Byte |
HeapFragment | apminsight.runtime.go.mem_stats.heap_fragment | 内存碎片大小,计算方式为HeapInuse-HeapAlloc。 | Byte |
通过错误分析,可以直观的看出系统中存在的各类型的接口错误及其在各维度的分布,同时也可以查看系统中存在的各类异常,并且数据与Trace链路数据打通,便于查看错误和异常的上下文,分析、解决系统中存在的接口错误和异常。
SQL分析展示该服务产生的所有SQL查询,可以查看SQL请求趋势,去掉参数后的SQLPattern列表,以及每种pattern的上报量、失败占比和平均响应耗时。
单击SQLPattern可以查看所有符合该pattern的经过脱敏的原始sql。