Control API

    • 暴露 APISIX 内部状态信息
    • 控制单个 APISIX 的数据平面的行为

    默认情况下,control API 是启用的,监听 。你可以通过修改 apisix/conf/config.yaml 中的 control 部分来更改设置,如下:

    插件的 control API 在默认情况下不支持参数匹配,如果想启用参数匹配功能可以在 control 部分添加 router: 'radixtree_uri_with_parameter'

    注意: control API server 不应该被配置成监听公网地址。

    APISIX 中一些插件添加了自己的 control API。如果你对他们感兴趣,请参阅对应插件的文档。

    独立于插件的 control API

    以下是支持的 API:

    引入自 2.2 版本

    1. {
    2. "main": {
    3. "route": {
    4. "properties": {...}
    5. },
    6. "upstream": {
    7. "properties": {...}
    8. },
    9. ...
    10. },
    11. "plugins": {
    12. "example-plugin": {
    13. "consumer_schema": {...},
    14. "metadata_schema": {...},
    15. "type": ...,
    16. "priority": 0,
    17. "version": 0.1
    18. },
    19. ...
    20. },
    21. "mqtt-proxy": {
    22. ...
    23. },
    24. ...
    25. }
    26. }

    只有启用了的插件才会被包含在返回结果中 plugins 部分。(返回结果中的)一些插件可能会缺失如 consumer_schema 或者 type 字段,这取决于插件的定义。

    引入自 2.3 版本

    使用以下格式返回当前的 health check 状态

    每个 entry 包含以下字段:

    • src_type:表示 health checker 的来源。值是 [routes,services,upstreams] 其中之一
    • src_id:表示创建 health checker 的对象的 id。例如,假设 id 为 1 的 Upstream 对象创建了一个 health checker,那么 src_type 就是 upstreamssrc_id 就是 1
    • name: 表示 health checker 的名称
    • nodes: health checker 的目标节点
    • healthy_nodes: 表示 health checker 检测到的健康节点

    用户也可以通过 /v1/healthcheck/$src_type/$src_id 来获取指定 health checker 的状态。

    例如,GET /v1/healthcheck/upstreams/1 返回:

    1. {
    2. "healthy_nodes": [
    3. {
    4. "host": "127.0.0.1",
    5. "port": 1980,
    6. "priority": 0,
    7. }
    8. "name": "upstream#/upstreams/1",
    9. "nodes": [
    10. {
    11. "host": "127.0.0.1",
    12. "port": 1980,
    13. "priority": 0,
    14. "weight": 1
    15. },
    16. {
    17. "host": "127.0.0.2",
    18. "port": 1988,
    19. "priority": 0,
    20. "weight": 1
    21. }
    22. ],
    23. "src_id": "1",
    24. "src_type": "upstreams"
    25. }
    note

    引入自 2.8 版本

    在 http 子系统中触发一次全量 GC

    注意,当你启用 stream proxy 时,APISIX 将为 stream 子系统运行另一个 Lua 虚拟机。它不会触发这个 Lua 虚拟机中的全量 GC。

    引入自 3.0.0 版本

    打印所有插件的元数据:

    引入自 3.0.0 版本

    1. {
    2. "log_format": {
    3. "upstream_response_time": "$upstream_response_time"
    4. },