收集诊断信息
编辑收集诊断信息编辑
为了更详细地分析问题,需要收集诊断信息。代理允许自动收集此类信息 - 所有数据都将保存到配置中指定的文件中。
有两种方法可以启用此功能
-
通过 php.ini - 要启用此功能,您需要修改 php.ini 文件(或 99-elastic.ini)并提供将保存数据的文件的路径,例如
elastic_apm.debug_diagnostic_file=/tmp/php_diags_%p_%t.txt
-
通过环境变量。您还可以使用环境变量
ELASTIC_APM_DEBUG_DIAGNOSTIC_FILE
启用信息收集。它必须在运行 php 进程时导出或直接指定。调用 php-cli 脚本的示例ELASTIC_APM_DEBUG_DIAGNOSTIC_FILE=/tmp/php_diags_%p_%t.txt php test.php
请记住,提供的文件路径必须可由 PHP 进程写入。
如果您的系统中有多个 PHP 进程,我们允许您在诊断文件名中指定指令。这样,文件将保持唯一,并且不会被覆盖。
-
%p
- 在此位置,代理将替换进程标识符。 -
%t
- 在此位置,代理将替换 UNIX 时间戳。
设置路径后,请记住完全重启您正在为其收集诊断信息的进程。这可能因上下文而异,例如 PHP、PHP-FPM、Apache 或 PHP-CGI。诊断信息将在第一个 HTTP 请求发出后或 PHP-CLI 脚本执行开始时记录。
另请注意,输出文件中包含的信息可能包含敏感数据,例如密码、安全令牌或系统中的环境变量。在公开共享文件之前,请务必查看数据并屏蔽敏感信息。
收集诊断信息后,请记住禁用此功能并恢复 php.ini 或环境变量中的先前配置。
将收集哪些信息
- 进程标识符和父进程标识符
- 工作进程的用户标识符
- 已加载 PHP 扩展的列表
- phpinfo() 函数的结果
- 进程内存信息和内存映射(
/proc/{id}/maps
和/proc/{id}/smaps_rollup
) - 进程状态信息(
/proc/{id}/status
)