skywalking-logger
描述
skywalking-logger
是一个可将 Access Log 数据通过 HTTP
推送到 SkyWalking OAP
服务器的插件。如果上下文中存在 tracing context
,插件会自动建立 trace
与日志的关联,这依赖于 SkyWalking Cross Process Propagation Headers Protocol的支持。
本插件提供将 Access Log 数据作为 JSON 对象发送到 SkyWalking OAP
服务器的功能。
属性
名称 | 类型 | 必选项 | 默认值 | 有效值 | 描述 |
---|---|---|---|---|---|
endpoint_addr | string | 必须 | SkyWalking OAp 服务器的 URI。 | ||
service_name | string | 可选 | “APISIX” | SkyWalking 服务名称。 | |
service_instance_name | string | 可选 | “APISIX Instance Name” | SkyWalking 服务实例名称,将其设置为$hostname 以直接获取本地主机名。 | |
timeout | integer | 可选 | 3 | [1,…] | 发送请求后保持连接活动的时间。 |
name | string | 可选 | “skywalking logger” | 标识 logger 的唯一标识符。 | |
include_req_body | boolean | 可选 | false | [false, true] | 是否包括请求 body。false: 表示不包含请求的 body ; true: 表示包含请求的 body 。 |
本插件支持使用批处理器来聚合并批量处理条目(日志/数据)。这样可以避免插件频繁地提交数据,默认设置情况下批处理器会每 5
秒钟或队列中的数据达到 1000
条时提交数据,如需了解或自定义批处理器相关参数设置,请参考 Batch-Processor 配置部分。
如何开启
这是有关如何为特定路由启用 skywalking-logger
插件的示例。在此之前,需要有可用的 SkyWalking OAP 可以被访问。
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins": {
"skywalking-logger": {
"endpoint_addr": "http://127.0.0.1:12800"
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
},
"uri": "/hello"
}'
测试插件
成功:
$ curl -i http://127.0.0.1:9080/hello
HTTP/1.1 200 OK
...
hello, world
完成上述步骤后,可以在 SkyWalking UI
查看到相关日志。
插件元数据设置
skywalking-logger
也支持自定义日志格式,与 http-logger 插件类似。
名称 | 类型 | 必选项 | 默认值 | 有效值 | 描述 |
---|---|---|---|---|---|
log_format | object | 可选 | {“host”: “$host”, “@timestamp”: “$time_iso8601”, “client_ip”: “$remote_addr”} | 以 JSON 格式的键值对来声明日志格式。对于值部分,仅支持字符串。如果是以 $ 开头,则表明是要获取 APISIX 变量或 Nginx 内置变量。 |
特别的,该设置是全局生效的,意味着指定 log_format 后,将对所有绑定 skywalking-logger 的 Route 或 Service 生效。
禁用插件
在插件配置中删除相应的 JSON 配置就可以禁用 skywalking-logger
插件。由于 Apache APISIX 插件支持热加载,因此无需重新启动 Apache APISIX:
$ curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"methods": ["GET"],
"uri": "/hello",
"plugins": {},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'