server-info

插件简介

server-info 是一款能够定期将服务基本信息上报至 etcd 的插件。

服务信息中每一项的含义如下:

名称 类型 描述
up_time integer APISIX 服务实例当前的运行时间(单位:秒), 如果对 APISIX 进行热更新操作,该值将被重置;普通的 reload 操作不会影响该值。
boot_time integer APISIX 服务实例的启动时间(UNIX 时间戳),如果对 APIISIX 进行热更新操作,该值将被重置;普通的 reload 操作不会影响该值。
last_report_time integer 最近一次服务信息上报的时间 (UNIX 时间戳)。
id string APISIX 服务实例 id 。
etcd_version string etcd 集群的版本信息,如果 APISIX 和 etcd 集群之间存在网络分区,该值将设置为 "unknown"
version string APISIX 版本信息。
hostname string APISIX 所部署的机器或 pod 的主机名信息。

插件属性

插件接口

该插件在 Control API 下暴露了一个 API 接口 /v1/server_info

启用插件

在配置文件 apisix/conf/config.yaml 的插件列表中添加 server-info, 即可启用该插件。

  1. plugins: # plugin list
  2. - example-plugin
  3. - limit-req
  4. - node-status
  5. - server-info
  6. - jwt-auth
  7. - zipkin
  8. ......

如何自定义服务信息上报配置

我们可以在 conf/config.yaml 文件的 plugin_attr 一节中修改上报配置。

名称 类型 默认值 描述
report_interval integer 60 上报服务信息至 etcd 的间隔(单位:秒,最大值:3600,最小值:60)
report_ttl integer 7200 etcd 中服务信息保存的 TTL(单位:秒,最大值:86400,最小值:3600)

下面的例子将 report_interval 修改成了 10 分钟,并将 report_ttl 修改成了 1 小时:

  1. plugin_attr:
  2. server-info:
  3. report_interval: 600
  4. report_ttl: 3600

测试插件

在启用该插件后,你可以通过插件的 Control API 来访问到这些数据:

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

Apache APISIX Dashboard 会收集上报到 etcd 中的服务信息,因此你也可以通过 APISIX Dashboard 来查看这些数据。

禁用插件

通过移除配置文件 apisix/conf/config.yaml 插件列表中的 server-info,即可方便地禁用该插件。

  1. plugins: # plugin list
  2. - example-plugin
  3. - limit-req
  4. - node-status
  5. - jwt-auth
  6. - zipkin
  7. ......