APM Server 性能诊断
编辑APM Server 性能诊断
编辑诊断 Elasticsearch 的反压
编辑当 Elasticsearch 处于过度负载或索引压力下时,APM Server 在将新文档索引到 Elasticsearch 时可能会遇到下游反压。通常,来自 Elasticsearch 的反压会以较高的索引延迟和/或拒绝的请求的形式表现出来,这反过来可能导致 APM Server 拒绝传入的请求。结果,连接到受影响的 APM Server 的 APM 代理在发送 APM 事件时将遭受流量限制和/或请求超时。
要快速识别可能存在的问题,请尝试在 APM Server 日志中查找类似的错误日志行。
... {"log.level":"error","@timestamp":"2024-07-27T23:46:28.529Z","log.origin":{"function":"github.com/elastic/go-docappender/v2.(*Appender).flush","file.name":"[email protected]/appender.go","file.line":370},"message":"bulk indexing request failed","service.name":"apm-server","error":{"message":"flush failed (429): [429 Too Many Requests]"},"ecs.version":"1.6.0"} {"log.level":"error","@timestamp":"2024-07-27T23:55:38.612Z","log.origin":{"function":"github.com/elastic/go-docappender/v2.(*Appender).flush","file.name":"[email protected]/appender.go","file.line":370},"message":"bulk indexing request failed","service.name":"apm-server","error":{"message":"flush failed (503): [503 Service Unavailable]"},"ecs.version":"1.6.0"} ...
要深入了解 APM Server 的健康状况和性能,请考虑按照 监控 APM Server 中的步骤启用监控功能。启用后,APM Server 还会报告一组重要指标,以帮助您识别任何性能下降。
请密切注意以下指标字段:
-
beats_stats.metrics.libbeat.output.events.active
表示等待摄取的缓冲挂起文档的数量;(如果此值迅速增加,可能表示 Elasticsearch 反压) -
beats_stats.metrics.libbeat.output.events.acked
表示已成功摄取的文档总数; -
beats_stats.metrics.libbeat.output.events.failed
表示摄取失败的文档总数;(如果此值迅速增加,可能表示 Elasticsearch 反压) -
beats_stats.metrics.libbeat.output.events.toomany
表示由于 Elasticsearch 返回 429 Too many Requests 而摄取失败的文档数量;(如果此值迅速增加,可能表示 Elasticsearch 反压) -
beats_stats.output.elasticsearch.bulk_requests.available
表示可用于执行批量索引请求的批量索引器数量;(如果此值等于 0,可能表示 Elasticsearch 反压) -
beats_stats.output.elasticsearch.bulk_requests.completed
表示已完成的批量请求数量; -
beats_stats.metrics.output.elasticsearch.indexers.active
表示当前正在处理批次的活动批量索引器的数量;
有关导出指标字段的完整列表,请参阅 Metricbeat 文档。
过度索引压力或拒绝请求的一个可能原因是 Elasticsearch 容量不足。要缓解此问题,请遵循 拒绝的请求 中的指南。
(不推荐)如果无法扩展 Elasticsearch 资源,您可以调整 配置 Elasticsearch 输出 中描述的 flush_bytes
、flush_interval
、max_retries
和 timeout
设置以降低 APM Server 索引压力。但是,请注意,增加缓冲文档的数量和/或减少重试次数可能会导致丢弃的 APM 事件速率更高。下面列出了一个自定义配置示例,其中默认缓冲文档的数量大约增加了一倍,同时 Elasticsearch 索引重试次数也减少了。此配置提供了一个通用示例,可能不适用于您的情况。尝试进一步调整设置以查看哪些设置适合您。
output.elasticsearch: flush_bytes: "2MB" # double the default value flush_interval: "2s" # double the default value max_retries: 1 # decrease the default value timeout: 60 # decrease the default value