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

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

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

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

准备工作

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

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

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

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

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

  1. 如果您知道要调试的特定 API 请求的组织名称、环境名称和虚拟主机,请按如下方式确定虚拟主机 conf 文件:
    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 支持团队