skywalking
skywalking 插件支持与 Apache SkyWalking 集成,用于请求追踪。
SkyWalking 使用其原生的 NGINX Lua 追踪器来提供服务和 URI 视角的追踪、拓扑分析和指标。APISIX 支持使用 HTTP 协议与 SkyWalking 服务器进行交互。
示例
要按照示例操作,请按照 SkyWalking 文档 使用 Docker Compose 启动存储、OAP 和 Booster UI。设置完成后,OAP 服务器应监听 12800,你应该可以通过 http://localhost:8080 访问 UI。
SkyWalking OAP 服务器可访问后,请根据网关部署方式完成配置。在 API7 网关中,skywalking 默认可通过 Dashboard 和 Admin API 使用。对于 APISIX 部署,在设置 SkyWalking OAP 服务器端点地址前,请先将 skywalking 加载到网关插件列表中。
- 宿主机或 Docker
- Kubernetes (Helm)
对于 APISIX 宿主机或 Docker 部署,请保留 config.yaml 中现有插件列表,加入 skywalking,并更新 plugin_attr.skywalking:
plugins:
# 保留当前网关使用的完整插件列表。
- skywalking
plugin_attr:
skywalking:
report_interval: 3
service_name: APISIX
service_instance_name: APISIX Instance
endpoint_addr: http://192.168.2.103:12800
重新加载网关以使配置更改生效。
对于 Helm 部署,请更新用于渲染 SkyWalking 插件属性的 values。对于 APISIX,还需要更新用于渲染网关插件列表的 value。请保留 values 文件中的其他配置。
对于 APISIX Helm Chart,apisix.plugins 会替换已加载插件列表。请从当前网关使用的完整插件列表开始,加入 skywalking,并在 apisix.pluginAttrs 下配置插件属性:
apisix:
plugins:
# 保留当前网关使用的完整插件列表。
- skywalking
pluginAttrs:
skywalking:
report_interval: 3
service_name: APISIX
service_instance_name: APISIX Instance
endpoint_addr: http://192.168.2.103:12800
对于 API7 网关 Helm Chart,设置以下 values:
pluginAttrs:
skywalking:
report_interval: 3
service_name: APISIX
service_instance_name: APISIX Instance
endpoint_addr: http://192.168.2.103:12800
然后使用当前网关 release 对应的 Chart 应用 values 文件:
helm upgrade <release-name> <chart-name> -n <namespace> -f values.yaml
追踪所有请求
以下示例展示了如何追踪通过路由的所有请求。
创建一个启用 skywalking 的路由,并将采样率配置为 1 以追踪所有请求:
curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-d '{
"id": "skywalking-route",
"uri": "/anything",
"plugins": {
"skywalking": {
"sample_ratio": 1
}
},
"upstream": {
"nodes": {
"httpbin.org:80": 1
},
"type": "roundrobin"
}
}'
向路由发送一些请求:
curl -i "http://127.0.0.1:9080/anything"
你应该会收到 HTTP/1.1 200 OK 响应。
在 SkyWalking UI 中,导航到 General Service > Services。你应该会看到一个名为 APISIX 的服务,其中包含与你的请求对应的追踪:

将追踪与日志关联
以下示例展示了如何在路由上配置 skywalking-logger 插件,以记录命中路由的请求信息。
创建一个启用 skywalking-logger 插件的路由,并使用你的 OAP 服务器 URI 配置插件:
curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT \
-H "X-API-KEY: ${ADMIN_API_KEY}" \
-d '{
"id": "skywalking-logger-route",
"uri": "/anything",
"plugins": {
"skywalking": {
"sample_ratio": 1
},
"skywalking-logger": {
"endpoint_addr": "http://192.168.2.103:12800"
}
},
"upstream": {
"nodes": {
"httpbin.org:80": 1
},
"type": "roundrobin"
}
}'
向路由生成一些请求:
curl -i "http://127.0.0.1:9080/anything"
你应该会收到 HTTP/1.1 200 OK 响应。
在 SkyWalking UI 中,导航到 General Service > Services。你应该会看到一个名为 APISIX 的服务,其中包含与你的请求对应的追踪,你可以在其中查看关联的日志:

