Apache APISIX文档-架构设计-Debug Mode

作者: Apache APISIX

Debug Mode

基本调试模式

设置 conf/debug.yaml 即可开启基本调试模式:

  
   basic:
    enable: true

注意:在 APISIX 2.10 之前,开启基本调试模式曾经是设置 conf/config.yaml 中的 apisix.enable_debug  true

比如对 /hello 开启了 limit-conn  limit-count 插件,这时候应答头中会有 Apisix-Plugins: limit-conn, limit-count

  
   $ curl http://127.0.0.1:1984/hello -i
   HTTP/1.1 200 OK
   Content-Type: text/plain
   Transfer-Encoding: chunked
   Connection: keep-alive
   Apisix-Plugins: limit-conn, limit-count
   X-RateLimit-Limit: 2
   X-RateLimit-Remaining: 1
   Server: openresty


   hello world

如果这个信息无法通过 HTTP 应答头传递,比如插件在 stream 子系统里面执行, 那么这个信息会以 warn 等级日志写入到错误日志中。
高级调试模式

设置 conf/debug.yaml 中的选项,开启高级调试模式。由于 APISIX 服务启动后是每秒定期检查该文件, 当可以正常读取到 END 结尾时,才认为文件处于写完关闭状态。

根据文件最后修改时间判断文件内容是否有变化,如有变化则重新加载,如没变化则跳过本次检查。 所以高级调试模式的开启、关闭都是热更新方式完成。

|               名字                | 可选项 |                  说明                  |  默认值  |
|---------------------------------|-----|--------------------------------------|-------|
| hook_conf.enable                | 必选项 | 是否开启 hook 追踪调试。开启后将打印指定模块方法的请求参数或返回值 | false |
| hook_conf.name                  | 必选项 | 开启 hook 追踪调试的模块列表名称                  |       |
| hook_conf.log_level             | 必选项 | 打印请求参数和返回值的日志级别                      | warn  |
| hook_conf.is_print_input_args   | 必选项 | 是否打印输入参数                             | true  |
| hook_conf.is_print_return_value | 必选项 | 是否打印返回值                              | true  |

请看下面示例:

  
   hook_conf:
    enable: false  是否开启 hook 追踪调试
    name: hook_phase  开启 hook 追踪调试的模块列表名称
    log_level: warn  日志级别
    is_print_input_args: true  是否打印输入参数
    is_print_return_value: true  是否打印返回值


   hook_phase:  模块函数列表,名字:hook_phase
    apisix:  引用的模块名称
    - http_access_phase  函数名:数组
    - http_header_filter_phase
    - http_body_filter_phase
    - http_log_phase
   END

动态高级调试模式

动态高级调试模式是基于高级调试模式,可以由单个请求动态开启高级调试模式。设置 conf/debug.yaml 中的选项。

示例:

  
   http_filter:
    enable: true  是否动态开启高级调试模式
    enable_header_name: X-APISIX-Dynamic-Debug  追踪携带此 header 的请求
   ......
   END

动态开启高级调试模式,示例:

  
   curl 127.0.0.1:9090/hello --header 'X-APISIX-Dynamic-Debug: foo'

注意:动态高级调试模式无法调试 apisix.http_access_phase, 模块(因为请求进入 apisix.http_access_phase 模块后,才会判断是否动态开启高级调试模式)。

文章列表

更多推荐

更多
  • Pulsar消息队列-一套高可用实时消息系统实现 实时消息【即时通信】系统,有群聊和单聊两种方式,其形态异于消息队列:1 大量的 group 信息变动,群聊形式的即时通信系统在正常服务形态下,瞬时可能有大量用户登入登出。2 ...
  • Pulsar消息队列-Pulsar对比Kafka笔记 很多人查看 Pulsar 之前可能对 Kafka 很熟悉,参照上图可见二者内部结构的区别,Pulsar 和 Kafka 都是以 Topic 描述一个基本的数据集合,Topic 数据又分为若干 Partition,即对数据进行逻辑上的 ...
  • Pulsar消息队列-对 2017 年一套 IM 系统的反思 信系统的开发,前前后后参与或者主导了六七个 IM 系统的研发。上一次开发的 IM 系统的时间点还是 2018 年,关于该系统的详细描述见 [一套高可用实时消息系统实现][1] ...
  • Apache APISIX文档-快速入门指南-如何构建 Apache APISIX 如何构建 Apache APISIX,步骤1:安装 Apache APISIX,步骤2:安装 etcd,步骤3:管理 Apache APISIX 服务,步骤4:运行测试案例,步骤5:修改 Admin API key,步骤6:为 Apac
  • Apache APISIX文档-快速入门指南-快速入门指南 快速入门指南,概述,前提条件,第一步:安装 Apache APISIX,第二步:创建路由,第三步:验证,进阶操作,工作原理,创建上游服务Upstream,绑定路由与上游服务,添加身份验证,为路由添加前缀,APISIX Dashboard
  • Apache APISIX文档-架构设计-APISIX APISIX,软件架构,插件加载流程,插件内部结构,配置 APISIX,插件加载流程,比如指定 APISIX 默认监听端口为 8000,并且设置 etcd 地址为 http://foo:2379, 其他配置保持默认。在 ...
  • Apache APISIX文档-架构设计-Service Service 是某类 API 的抽象(也可以理解为一组 Route 的抽象)。它通常与上游服务抽象是一一对应的,Route 与 Service 之间,通常是 N:1 的关系,参看下图。不同 Route 规则同时绑定到一个 Service ...
  • Apache APISIX文档-架构设计-Plugin Config 如果你想要复用一组通用的插件配置,你可以把它们提取成一个 Plugin config,并绑定到对应的路由上。举个例子,你可以这么做:创建 Plugin config,如果这个路由已经配置了 plugins,那么 Plugin config ...
  • Apache APISIX文档-架构设计-Debug Mode 注意:在 APISIX 2.10 之前,开启基本调试模式曾经是设置 conf/config.yaml 中的 apisix.enable_debug 为 true。设置 conf/debug.yaml 中的选项,开启高级调试模式。由于 ...
  • Apache APISIX文档-架构设计-Consumer 如上图所示,作为 API 网关,需要知道 API Consumer(消费方)具体是谁,这样就可以对不同 API Consumer 配置不同规则。授权认证:比如有 [key-auth] 等。获取 consumer_...
  • 近期文章

    更多
    文章目录

      推荐作者

      更多