Control API
The control API can be used to
- expose APISIX internal state
- control the behavior of a single isolate APISIX data panel
By default, the control API server is enabled and listens to 127.0.0.1:9090. You can change it via
the control section under apisix in conf/config.yaml:
apisix: ... enable_control: true control: ip: "127.0.0.1" port: 9090Note that the control API server should not be configured to listen to the public traffic!
Control API Added via plugin#
Plugin can add its control API when it is enabled. If a plugin adds such a control API, please refer to each plugin's documentation for those APIs.
Plugin independent Control API#
Here is the supported API:
GET /v1/schema#
Introduced since v2.2.
Return the jsonschema used by this APISIX instance in the format below:
{ "main": { "route": { "properties": {...} }, "upstream": { "properties": {...} }, ... }, "plugins": { "example-plugin": { "consumer_schema": {...}, "metadata_schema": {...}, "schema": {...}, "type": ..., "priority": 0, "version": 0.1 }, ... }}For plugins part, only enabled plugins will be returned. Some plugins may lack
of fields like consumer_schema or type, it is depended on by the plugin's
definition.
GET /v1/healthcheck#
Introduced since v2.3.
Return current health check status in the format below:
[ { "healthy_nodes": [ { "host": "127.0.0.1", "port": 1980, "priority": 0, "weight": 1 } ], "name": "upstream#/upstreams/1", "nodes": [ { "host": "127.0.0.1", "port": 1980, "priority": 0, "weight": 1 }, { "host": "127.0.0.2", "port": 1988, "priority": 0, "weight": 1 } ], "src_id": "1", "src_type": "upstreams" }, { "healthy_nodes": [ { "host": "127.0.0.1", "port": 1980, "priority": 0, "weight": 1 } ], "name": "upstream#/routes/1", "nodes": [ { "host": "127.0.0.1", "port": 1980, "priority": 0, "weight": 1 }, { "host": "127.0.0.1", "port": 1988, "priority": 0, "weight": 1 } ], "src_id": "1", "src_type": "routes" }]Each entry contains fields below:
- src_type: where the health checker comes from. The value is one of
["routes", "services", "upstreams"]. - src_id: the id of object which creates the health checker. For example, if Upstream
object with id 1 creates a health checker, the
src_typeisupstreamsand thesrc_idis1. - name: the name of the health checker.
- nodes: the target nodes of the health checker.
- healthy_nodes: the healthy node known by the health checker.
User can also use /v1/healthcheck/$src_type/$src_id can get the status of a health checker.
For example, GET /v1/healthcheck/upstreams/1 returns:
{ "healthy_nodes": [ { "host": "127.0.0.1", "port": 1980, "priority": 0, "weight": 1 } ], "name": "upstream#/upstreams/1", "nodes": [ { "host": "127.0.0.1", "port": 1980, "priority": 0, "weight": 1 }, { "host": "127.0.0.2", "port": 1988, "priority": 0, "weight": 1 } ], "src_id": "1", "src_type": "upstreams"}