随着技术的一直迭代和企业架构的一直演进,零碎的复杂度越来越高。日志作为剖析和观测的“原材料”,能 反对和兼容不同的剖析引擎 会为用户在选型和前期运维过程中升高很大老本。基于日志的剖析和观测作为保障系统稳固的基石,它的角色十分重要。
Apache APISIX 作为一个高性能的 API 网关不仅在性能上有着良好的体现,并且在数据和日志的运维上通过和社区用户的交换共建也曾经反对了大部分支流的开源及商业日志解决方案,包含:HTTP Logger、TCP Logger、Kafka Logger、UDP Logger、RocketMQ Logger、SkyWalking Logger、Aliyun Cloud Logging(SLS)、Google Cloud Logging 等。
最近通过社区的共建反对,Apache APISIX 的 Logger 全家桶中又多了一位新成员:Splunk HEC Logging。本文将为大家介绍如何在 Apache APISIX 中配置和应用 Splunk HEC 服务。
对于 Splunk HTTP Event Collector
Splunk 是一个机器数据的全文搜索引擎,可利用于采集、索引、搜寻和剖析各种利用数据,依据 DB Engines 的检索引擎排名,目前 Splunk 位列第二,是一款利用宽泛的全文检索软件。Splunk 和 ElasticSearch 一样,是准实时能够提供不间断搜寻后果的数据流。
Splunk HTTP Event Collector (HEC) 是 Splunk 提供的 HTTP 事件收集器,次要提供以 HTTP(S) 协定将数据和应用程序事件发送到 Splunk 的能力。
对于 Splunk HEC Logging 插件
splunk-hec-logging 插件用于将 Apache APISIX 的申请日志转发到 Splunk 中进行剖析和存储。启用该插件后,Apache APISIX 将在 Log 阶段获取申请上下文信息,并将其序列化为 Splunk Event Data 格局 后提交到批处理队列中。当触发批处理队列每批次最大解决容量,或刷新缓冲区的最大工夫时,会将队列中的数据提交到 Splunk HEC 中。
如何应用 Splunk HEC Logging 插件
Splunk 配置步骤
部署 Splunk Enterprise
请参考 Splunk 的 官网装置指南 进行部署,本文将通过 Docker 进行部署演示。
Docker 命令参数如下:
docker run -p 18088:8088 -p 18000:8000 \ # 8088 为 HEC 端口,8000 为治理后盾端口
-e "SPLUNK_PASSWORD=your-password" \ # 治理后盾登录明码
-e "SPLUNK_START_ARGS=--accept-license" \ # 承受许可证条款(Splunk 默认将提供一张 Enterprise Trial License)-e "SPLUNK_HEC_TOKEN=your-hec-token" \ # 设置默认 HEC 令牌,配置此项后将创立一个默认的 HEC
-itd --rm --name splunk-example splunk/splunk:latest
命令参数具体释义可参考:Docker Splunk 文档。
配置 Splunk HEC
Docker 中曾经配置并创立了默认的 HEC,在这里不再过多赘述创立 HEC 的流程。具体手动创立的流程可参考文档:Set up and use HTTP Event Collector in Splunk Web。
登录 Splunk Enterprise 并查看 HEC
通过浏览器拜访 Docker 的映射端口。因为须要把治理后盾的 8000
端口映射到宿主机的 18000
端口,所以在操作时能够在宿主机上通过「回环地址加端口」的形式在浏览器拜访即可。例如:http://127.0.0.1:18000,登录的默认用户名是 admin,明码是在上例的环境变量中设置的 SPLUNK_PASSWORD
的值。
如下图所示,示意登录胜利。
[外链图片转存失败, 源站可能有防盗链机制, 倡议将图片保留下来间接上传(img-RhiPwEG6-1645606771349)(https://tfzcfxawmk.feishu.cn/…)]
单击界面右上方“Settings > Data Inputs”查看默认 HEC 是否设置胜利:
[外链图片转存失败, 源站可能有防盗链机制, 倡议将图片保留下来间接上传(img-Nnfu7WGq-1645606771350)(https://tfzcfxawmk.feishu.cn/…)]
在 HTTP Event Collector 的 Inputs 列中咱们曾经能够看到 HEC 的数量,示意设置胜利。
[外链图片转存失败, 源站可能有防盗链机制, 倡议将图片保留下来间接上传(img-SYrFh1eq-1645606771351)(https://tfzcfxawmk.feishu.cn/…)]
此时能够点击 HTTP Event Collector 进入 HEC 详情列表查看 HECs 的 Token 信息。
[外链图片转存失败, 源站可能有防盗链机制, 倡议将图片保留下来间接上传(img-M4ByG1CP-1645606771352)(https://tfzcfxawmk.feishu.cn/…)]
Token Values 即在上文中 Docker 环境变量中配置的 SPLUNK_HEC_TOKEN
的值。
Apache APISIX 配置步骤
启用插件
运行以下命令,启用 splunk-hec-logging
插件。
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{"plugins":{"splunk-hec-logging":{"endpoint":{
// HEC 端点地址
"uri":"http://127.0.0.1:18088/services/collector",
// HEC Token
"token":"BD274822-96AA-4DA6-90EC-18940FB2414C"
},
// // 刷新批处理队列缓冲区的最大工夫(以秒为单位)"inactive_timeout":2,
// 每个批处理队列最大包容日志条目数
"batch_max_size":10
}
},
"upstream":{
"type":"roundrobin",
"nodes":{"127.0.0.1:1980":1}
},
"uri":"/splunk.do"
}'
插件参数阐明如下表所示。
无奈复制加载中的内容
发送申请
运行以下命令,向 Splunk 发送申请。
$ curl -i http://127.0.0.1:9080/splink.do
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Date: Fri, 10 Dec 2021 09:57:52 GMT
Server: APISIX/2.11.0
Hello, Splunk HEC Logging
验证日志
登录 Splunk 控制台,点击“Search & Reporting”。
[外链图片转存失败, 源站可能有防盗链机制, 倡议将图片保留下来间接上传(img-4HYPqw8m-1645606771352)(https://tfzcfxawmk.feishu.cn/…)]
在搜寻输入框中输出:source="apache-apisix-splunk-hec-logging"
,即可查问到发送的申请日志。
[外链图片转存失败, 源站可能有防盗链机制, 倡议将图片保留下来间接上传(img-XXgJHGc8-1645606771353)(https://tfzcfxawmk.feishu.cn/…)]
停用插件
移除 splunk-hec-logging
相干配置即可。
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{"uri":"/logging.do","upstream":{"type":"roundrobin","nodes":{"127.0.0.1:1980":1}
},
"plugins":{}}'
总结
目前,Apache APISIX 也在开发其余插件以反对集成更多服务,如果您对此感兴趣,欢送随时在 GitHub Discussion 中发动探讨,也可通过邮件列表进行交换。
相干浏览
- Apache APISIX 集成 Kafka 实现高效率实时日志监控
- Apache APISIX 携手 RocketMQ 为实时 API 日志监控性能再下一城
- 捷报频传!Apache APISIX 现已反对对接 Google Cloud Logging
- 强强联合!APISIX 集成 SkyWalking 打造全方位日志解决