splunk-hec-logging

描述

splunk-hec-logging 插件可用于将请求日志转发到 Splunk HTTP 事件收集器(HEC)中进行分析和存储。

启用该插件后,APISIX 将在 Log Phase 获取请求上下文信息,并将其序列化为 Splunk Event Data 格式 后提交到批处理队列中,当触发批处理队列每批次最大处理容量或刷新缓冲区的最大时间时会将队列中的数据提交到 Splunk HEC 中。

属性

名称必选项默认值描述
endpointSplunk HEC 端点配置信息。
endpoint.uriSplunk HEC 事件收集 API。
endpoint.tokenSplunk HEC 身份令牌。
endpoint.channelSplunk HEC 发送渠道标识,更多信息请参考 About HTTP Event Collector Indexer Acknowledgment
endpoint.timeout10Splunk HEC 数据提交超时时间(以秒为单位)。
ssl_verifytrue当设置为 true 时,启用 SSL 验证。

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

启用插件

以下示例展示了如何在指定路由上启用该插件:

完整配置

  1. curl http://127.0.0.1:9180/apisix/admin/routes/1 \
  2. -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  3. {
  4. "plugins":{
  5. "splunk-hec-logging":{
  6. "endpoint":{
  7. "uri":"http://127.0.0.1:8088/services/collector",
  8. "token":"BD274822-96AA-4DA6-90EC-18940FB2414C",
  9. "channel":"FE0ECFAD-13D5-401B-847D-77833BD77131",
  10. "timeout":60
  11. },
  12. "buffer_duration":60,
  13. "max_retry_count":0,
  14. "retry_delay":1,
  15. "inactive_timeout":2,
  16. "batch_max_size":10
  17. }
  18. },
  19. "upstream":{
  20. "type":"roundrobin",
  21. "nodes":{
  22. "127.0.0.1:1980":1
  23. }
  24. },
  25. "uri":"/splunk.do"
  26. }'

最小化配置

  1. curl http://127.0.0.1:9180/apisix/admin/routes/1 \
  2. -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  3. {
  4. "plugins":{
  5. "splunk-hec-logging":{
  6. "endpoint":{
  7. "uri":"http://127.0.0.1:8088/services/collector",
  8. "token":"BD274822-96AA-4DA6-90EC-18940FB2414C"
  9. }
  10. }
  11. },
  12. "upstream":{
  13. "type":"roundrobin",
  14. "nodes":{
  15. "127.0.0.1:1980":1
  16. }
  17. },
  18. "uri":"/splunk.do"
  19. }'

测试插件

你可以通过以下命令向 APISIX 发出请求:

  1. curl -i http://127.0.0.1:9080/splunk.do?q=hello
  1. HTTP/1.1 200 OK
  2. ...
  3. hello, world

访问成功后,你可以登录 Splunk 控制台检索查看日志:

splunk hec search view

禁用插件

当你需要禁用该插件时,可以通过如下命令删除相应的 JSON 配置,APISIX 将会自动重新加载相关配置,无需重启服务:

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