apisix/doc/plugins/server-info.md
Alex Zhang c3d61fcfa3
feat: add control api for plugin server-info (#3088)
* feat: add control api for plugin server-info

Previously we added plugin server-info without exposing API since the same port problem of admin api and proxy. Now we have Control API support so we expose server-info API through Control API. People now can insight the server info about APISIX instance easily.
2020-12-22 11:04:56 +08:00

3.8 KiB

Summary

Name

server-info is a plugin that reports basic server information to etcd periodically.

The meaning of each item in server information is following:

Name Type Description
up_time integer Elapsed time (in seconds) since APISIX instance was launched, value will be reset when you hot updating APISIX but is kept for intact if you just reloading APISIX.
boot_time integer Bootstrap time (UNIX timestamp) of the APISIX instance, value will be reset when you hot updating APISIX but is kept for intact if you just reloading APISIX.
last_report_time integer Last reporting time (UNIX timestamp).
id string APISIX instance id.
etcd_version string The etcd cluster version that APISIX is using, value will be "unknown" if the network (to etcd) is partitioned.
version string APISIX version.
hostname string Hostname of the machine/pod that APISIX is deployed.

Attributes

None

API

This plugin exposes one API /v1/server_info to Control API.

How to Enable

Just configure server-info in the plugin list of the configuration file conf/config.yaml.

plugins:                          # plugin list
  - example-plugin
  - limit-req
  - node-status
  - server-info
  - jwt-auth
  - zipkin
  ......

How to customize the server info report configurations

We can change the report configurations in the plugin_attr section of conf/config.yaml.

Name Type Default Description
report_interval integer 60 the interval to report server info to etcd (unit: second, maximum: 3600, minimum: 60).
report_ttl integer 7200 the live time for server info in etcd (unit: second, maximum: 86400, minimum: 3600).

Here is an example, which modifies the report_interval to 10 minutes and sets the report_ttl to one hour.

plugin_attr:
  server-info:
    report_interval: 600,
    report_ttl: 3600

Test Plugin

After enabling this plugin, you can access these data through the plugin Control API:

$ curl http://127.0.0.1:9090/v1/server_info -s | jq .
{
  "etcd_version": "3.5.0",
  "up_time": 9460,
  "last_report_time": 1608531519,
  "id": "b7ce1c5c-b1aa-4df7-888a-cbe403f3e948",
  "hostname": "fedora32",
  "version": "2.1",
  "boot_time": 1608522102
}

The APISIX Dashboard will collects server info in etcd, so you may also try to check them through Dashboard.

Disable Plugin

Remove server-info in the plugin list of configure file conf/config.yaml.

plugins:                          # plugin list
  - example-plugin
  - limit-req
  - node-status
  - jwt-auth
  - zipkin
  ......