skywalking-logger

描述

skywalking-logger 是一个可将 Access Log 数据通过 HTTP 推送到 SkyWalking OAP 服务器的插件。如果上下文中存在 tracing context,插件会自动建立 trace 与日志的关联,这依赖于 SkyWalking Cross Process Propagation Headers Protocol的支持。

本插件提供将 Access Log 数据作为 JSON 对象发送到 SkyWalking OAP 服务器的功能。

属性

名称类型必选项默认值有效值描述
endpoint_addrstring必须SkyWalking OAp 服务器的 URI。
service_namestring可选“APISIX”SkyWalking 服务名称。
service_instance_namestring可选“APISIX Instance Name”SkyWalking服务实例名称,将其设置为$hostname以直接获取本地主机名。
timeoutinteger可选3[1,…]发送请求后保持连接活动的时间。
namestring可选“skywalking logger”标识 logger 的唯一标识符。
include_req_bodyboolean可选false[false, true]是否包括请求 body。false: 表示不包含请求的 body ; true: 表示包含请求的 body 。

本插件支持使用批处理器来聚合并批量处理条目(日志/数据)。这样可以避免插件频繁地提交数据,默认设置情况下批处理器会每 5 秒钟或队列中的数据达到 1000 条时提交数据,如需了解或自定义批处理器相关参数设置,请参考 Batch-Processor 配置部分。

如何开启

这是有关如何为特定路由启用 skywalking-logger 插件的示例。在此之前,需要有可用的 SkyWalking OAP 可以被访问。

  1. curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  2. {
  3. "plugins": {
  4. "skywalking-logger": {
  5. "endpoint_addr": "http://127.0.0.1:12800"
  6. }
  7. },
  8. "upstream": {
  9. "type": "roundrobin",
  10. "nodes": {
  11. "127.0.0.1:1980": 1
  12. }
  13. },
  14. "uri": "/hello"
  15. }'

测试插件

成功:

  1. $ curl -i http://127.0.0.1:9080/hello
  2. HTTP/1.1 200 OK
  3. ...
  4. hello, world

完成上述步骤后,可以在 SkyWalking UI 查看到相关日志。

插件元数据设置

skywalking-logger 也支持自定义日志格式,与 http-logger 插件类似。

名称类型必选项默认值有效值描述
log_formatobject可选{“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:

  1. $ curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  2. {
  3. "methods": ["GET"],
  4. "uri": "/hello",
  5. "plugins": {},
  6. "upstream": {
  7. "type": "roundrobin",
  8. "nodes": {
  9. "127.0.0.1:1980": 1
  10. }
  11. }
  12. }'