跳到主要内容

skywalking

skywalking 插件支持与 Apache SkyWalking 集成,用于请求追踪。

SkyWalking 使用其原生的 NGINX Lua 追踪器来提供服务和 URI 视角的追踪、拓扑分析和指标。APISIX 支持使用 HTTP 协议与 SkyWalking 服务器进行交互。

示例

要按照示例操作,请按照 SkyWalking 文档 使用 Docker Compose 启动存储、OAP 和 Booster UI。设置完成后,OAP 服务器应监听 12800,你应该可以通过 http://localhost:8080 访问 UI。

更新 APISIX 配置文件 以启用 skywalking 插件(默认情况下处于禁用状态),并更新端点地址:

config.yaml
plugins:
- skywalking
- ...

plugin_attr:
skywalking:
report_interval: 3
service_name: APISIX
service_instance_name: APISIX Instance
endpoint_addr: http://192.168.2.103:12800

重新加载 APISIX 以使配置更改生效。

追踪所有请求

以下示例展示了如何追踪通过路由的所有请求。

创建一个启用 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 APISIX traces

将追踪与日志关联

以下示例展示了如何在路由上配置 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 的服务,其中包含与你的请求对应的追踪,你可以在其中查看关联的日志:

trace context

associated log