指标
编辑指标
编辑使用 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 功能的支持服务水平协议的约束。
如果您使用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
设置控制。