指标
编辑指标编辑
使用 Elastic APM,您可以捕获系统和进程指标。这些指标将定期发送到 APM 服务器,然后从那里发送到 Elasticsearch
指标集编辑
CPU/内存指标集编辑
elasticapm.metrics.sets.cpu.CPUMetricSet
此指标集收集各种系统指标和当前进程的指标。
如果您不使用 Linux,则需要安装 psutil
才能使用此指标集。
-
system.cpu.total.norm.pct
-
类型:scaled_float
格式:百分比
除空闲和 IOWait 之外的状态下的 CPU 时间百分比,按核心数量归一化。
-
system.process.cpu.total.norm.pct
-
类型:scaled_float
格式:百分比
自上次事件以来,进程花费的 CPU 时间百分比。此值按 CPU 核心数量归一化,范围从 0 到 100%。
-
system.memory.total
-
类型:long
格式:字节
总内存。
-
system.memory.actual.free
-
类型:long
格式:字节
实际可用内存(以字节为单位)。
-
system.process.memory.size
-
类型:long
格式:字节
进程拥有的总虚拟内存。
-
system.process.memory.rss.bytes
-
类型:long
格式:字节
驻留集大小。进程在主内存(RAM)中占用的内存量。
Linux 的 cgroup 指标编辑
-
system.process.cgroup.memory.mem.limit.bytes
-
类型:long
格式:字节
当前 cgroup 切片的内存限制。
-
system.process.cgroup.memory.mem.usage.bytes
-
类型:long
格式:字节
当前 cgroup 切片中的内存使用量。
细分指标集编辑
可以使用 breakdown_metrics
设置禁用此指标集的跟踪和收集。
-
span.self_time
-
类型:简单计时器
此计时器跟踪跨度自计时,是事务细分可视化的基础。
字段
-
sum
:自上次报告(增量)以来的所有跨度自计时之和(以毫秒为单位) -
count
:自上次报告(增量)以来的所有跨度自计时次数
您可以按以下维度过滤和分组
-
transaction.name
:事务的名称 -
transaction.type
:事务的类型,例如request
-
span.type
:跨度的类型,例如app
、template
或db
-
span.subtype
:跨度的子类型,例如mysql
(可选)
-
Prometheus 指标集(测试版)编辑
此功能处于测试阶段,可能会发生变化。设计和代码不如官方 GA 功能成熟,按原样提供,不提供任何保证。测试版功能不受官方 GA 功能支持 SLA 的约束。
如果您使用 prometheus_client
收集指标,代理也可以收集这些指标,并使其在 Elasticsearch 中可用。
支持以下类型的指标
- 计数器
- 仪表
- 摘要
- 直方图(需要 APM Server / Elasticsearch / Kibana 7.14+)
要使用 Prometheus 指标集,您必须使用 prometheus_metrics
配置选项启用它。
从 prometheus_client
收集的所有指标都以 "prometheus.metrics."
为前缀。可以使用 prometheus_metrics_prefix
配置选项更改此前缀。
测试版限制编辑
- 指标格式可能会在将来的版本中发生变化,并且不保证向后兼容。
自定义指标编辑
自定义指标允许您将自己的指标发送到 Elasticsearch。
发送自定义指标最常见的方法是使用 Prometheus 指标集。但是,您也可以使用自己的指标集。如果您在代码中手动收集指标,可以使用基本 MetricSet
类
from elasticapm.metrics.base_metrics import MetricSet client = elasticapm.Client() metricset = client.metrics.register(MetricSet) for x in range(10): metricset.counter("my_counter").inc()
或者,您可以创建自己的 MetricSet 类,该类继承自基类。在这种情况下,您通常需要覆盖 before_collect
方法,您可以在其中收集和设置指标,然后再将它们收集并发送到 Elasticsearch。
您可以按照上面的示例添加 MetricSet
类,也可以将类的导入字符串添加到 metrics_sets
配置选项中
ELASTIC_APM_METRICS_SETS="elasticapm.metrics.sets.cpu.CPUMetricSet,myapp.metrics.MyMetricSet"
您的 MetricSet 可能看起来像这样
from elasticapm.metrics.base_metrics import MetricSet class MyAwesomeMetricSet(MetricSet): def before_collect(self): self.gauge("my_gauge").set(myapp.some_value)
在上面的示例中,MetricSet 会查找 myapp.some_value
并将指标 my_gauge
设置为该值。这将在收集/发送指标时发生,由 metrics_interval
设置控制。