收集诊断信息编辑

为了更详细地分析问题,需要收集诊断信息。代理允许自动收集此类信息 - 所有数据都将保存到配置中指定的文件中。

有两种方法可以启用此功能

  1. 通过 php.ini - 要启用此功能,您需要修改 php.ini 文件(或 99-elastic.ini)并提供将保存数据的文件的路径,例如

    elastic_apm.debug_diagnostic_file=/tmp/php_diags_%p_%t.txt
  2. 通过环境变量。您还可以使用环境变量 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