在路由器上启用 NGINX 调试日志

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档
信息

在 Apigee 上,路由器默认配置为仅在错误日志文件中记录错误消息。不过,在许多情况下,您可能需要收集更多信息才能确定特定错误发生的原因。一种方法是将路由器配置为在调试模式下运行,以便获取调试日志,这有助于您获取有关错误的更多信息并更快地解决错误。

本文档介绍了如何为特定虚拟主机上的请求在 Apigee Edge 的路由器上启用调试日志。如果出现任何问题(例如请求格式有误、 400 错误请求 - SSL 证书错误),可以启用调试日志记录,以便捕获更多信息。这些问题可能发生在Northbound(客户端应用和路由器之间)。

准备工作

  • 如果您不熟悉 NGINX 错误日志和日志记录级别,请参阅 NGINX 错误日志文档
  • 收集您需要收集调试信息的 API 请求的组织、环境和虚拟主机名称。

在路由器上启用 NGINX 调试日志

本部分介绍了如何在 Edge 路由器上启用调试日志。

确定相关的虚拟主机配置文件

以下步骤介绍了如何在路由器上找到相关的虚拟主机配置文件:

  1. 如果您知道要调试的特定 API 请求的组织名称、环境名称和虚拟主机,请按如下方式确定虚拟主机配置文件:
    1. 导航到 /opt/nginx/conf.d/ 目录。
    2. 使用以下命令在 conf.d 目录中搜索文件 ORG_NAME_ENV_NAME_VIRTUALHOST.conf
      ls -ltrh | grep "ORG_NAME_ENV_NAME_VIRTUALHOST_NAME"
  2. 如果您不知道组织名称,可以使用 API 请求中使用的主机别名名称来识别虚拟主机配置文件,如下所示:

    前往 /opt/nginx/conf.d/ 目录,然后使用以下命令搜索发出请求时所用的 hostalias

    ls -ltrh | grep -r 'HOST_ALIAS_NAME'

    示例输出

    假设主机别名是 opdk.cert-test.com。运行 ls -ltrh 命令后,您会看到如下所示的输出:

为路由器上的特定虚拟主机启用调试日志记录

以下步骤介绍了如何在 Apigee 路由器上为特定虚拟主机启用调试日志。

  1. 在路由器机器上,通过编辑器打开以下文件: /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf。 例如:
    vi /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf
  2. 更改以下行:
    error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log error;

    error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log info;
  3. 保存更改。
  4. 运行 NGINX 重新加载命令。例如:
    sudo /opt/nginx/scripts/apigee-nginx reload
  5. 以下文件现在将捕获调试日志:
    /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log
  6. 如果您想在多个路由器上捕获调试日志,请在每个路由器上重复执行这些步骤。

验证调试信息是否已记录在 NGINX 错误日志文件中

  1. 一旦客户端在与虚拟主机配置关联的主机别名和端口上发出 API 请求,调试日志就会捕获到以下文件中:

    /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log

  2. 验证您是否看到了 API 请求的调试信息,如以下示例所示:

    调试信息示例

    2021/01/27 02:48:40 [warn] 27624#27624: *3777 a client request body is buffered to a temporary file /opt/apigee/var/log/edge-router/nginx/client_temp/0000000001, client: XX.XX.XX.XX, server: XX.XX.XX.XX, request: "POST /post-no-target HTTP/1.1", host: "XX.XX.XX.XX:443"

    当客户端发送具有较大载荷的 POST 请求时,系统会捕获上述信息。仅当启用调试日志记录时,系统才会显示此日志。

  3. 如果您没有看到其他调试信息,请验证您是否已正确按照 在路由器上为特定虚拟主机启用调试日志记录中所述的所有步骤操作。如果您错过了任何步骤,请再次正确重复所有步骤。
  4. 如果您仍然无法获取调试信息,请与 Apigee Edge 支持团队联系。

在路由器上为特定虚拟主机停用调试日志

本部分介绍了如何针对特定虚拟主机在路由器中停用调试日志。

  1. 在路由器机器上,通过编辑器打开以下文件: /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf 例如:
    vi /opt/nginx/conf.d/ORG_NAME_ENV_NAME_VIRTUALHOST_NAME.conf
  2. 更改以下行:

    error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log info;

    error_log /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log error;
  3. 保存更改。
  4. 运行 NGINX 重新加载命令。例如:
    /opt/nginx/scripts/apigee-nginx reload
  5. 以下文件现在将仅捕获错误日志:
    /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log
  6. 如果您想在多个路由器上停止调试日志记录,请在每个路由器上重复上述步骤。

验证是否仅在 NGINX 错误日志文件中记录错误信息

  1. 在与特定虚拟主机配置关联的主机别名和端口上发出一些 API 请求,或等待客户端发出请求。
  2. 检查以下文件: /opt/apigee/var/log/edge-router/nginx/ORG_NAME~ENV_NAME.PORT_error_log
  3. 验证您是否仅看到错误信息,并且不再为请求记录调试信息。
  4. 如果您仍然看到系统正在记录其他调试信息,请验证您是否已正确按照 在路由器上为特定虚拟主机停用调试日志中所述的所有步骤操作。如果您错过了任何步骤,请再次正确重复所有步骤。
  5. 如果您仍然无法获取调试信息,请与 Apigee Edge 支持团队联系。