配置async-profiler与Elastic APM Agent后仍无法获取本地线程及CPU分析数据
排查Elastic APM无法收集Native线程及CPU分析细节的问题
以下是针对该场景的具体排查步骤:
1. 确认async-profiler兼容性与加载状态
- 核对Elastic APM Agent版本与async-profiler 2.9的兼容性:部分Agent版本对async-profiler有特定版本要求,需确保二者版本匹配。
- 验证
profiling_inferred_spans_lib_directory配置的路径有效性:
执行命令确认文件存在且可读:ls -l /opt/async-profiler-2.9-linux-x64/build/libasyncProfiler.so - 开启Agent debug日志排查加载问题:
在启动参数中添加-Delastic.apm.log_level=debug,启动应用后搜索日志中包含async-profiler或inferred spans的条目,确认是否存在加载失败、权限不足等报错。
2. 检查系统权限配置
async-profiler依赖系统perf事件,需确保以下权限设置:
- 查看当前
perf_event_paranoid值:
若值大于1,需临时调整:sysctl kernel.perf_event_paranoid
如需永久生效,编辑sysctl -w kernel.perf_event_paranoid=0/etc/sysctl.conf添加kernel.perf_event_paranoid=0后执行sysctl -p。 - 确认运行应用的用户拥有访问
/proc/[应用PID]/maps等进程文件的权限,避免因权限限制导致无法采集线程信息。
3. 补充CPU分析相关配置
仅开启推断跨度可能不足以获取完整CPU分析细节,需添加CPU profiling配置:
在elasticapm.properties中加入:
profiling_cpu_enabled=true profiling_cpu_sampling_interval=50ms
重启应用后观察数据采集情况。
4. 验证线程采样条件
- 确认目标Native线程的运行时长满足
profiling_inferred_spans_min_duration=250ms的设置,短生命周期线程会被过滤。 - 确保Native线程属于当前JVM进程,APM无法追踪外部进程的Native线程。
5. 确认组件版本兼容性
检查Elastic APM Server、Elasticsearch与Agent版本是否一致,版本不匹配可能导致采集的数据无法正常解析或展示。
内容的提问来源于stack exchange,提问作者Bhanu Praveen
相关产品推荐
相关产品推荐

