docker - 在 docker 中配置企业 Splunk,以便服务可以通过 HTTP 登录到 HTTP Event Collector
问题描述
我正在尝试在 docker 中设置和配置企业 Splunk 以进行本地测试。我希望能够通过用于 splunk 的 docker 日志记录提供程序将日志发送到 HTTP 事件收集器 (HEC) - 请参见此处。
我可以通过在运行 splunk 容器时指定为环境变量来配置 HEC 令牌SPLUNK_HEC_TOKEN
(请参阅下面的 docker-compose),但我希望能够通过 HTTP 调用 HEC 端点(即没有 SSL)。如果在 中启用 SSL /opt/splunk/etc/apps/splunk_httpinput/local/inputs.conf
,我的测试服务(请参阅下面的 docker-compose)不起作用 - 我收到以下错误:
来自守护程序的错误响应:无法初始化日志记录驱动程序:选项 https://localhost:8088/services/collector/event/1.0: x509: 无法验证 localhost 的证书,因为它不包含任何 IP SAN。
我的 docker-compose 文件如下所示:
version: '3.5'
networks:
skynet:
services:
splunk:
image: splunk/splunk:latest
environment:
SPLUNK_START_ARGS: "--accept-license"
SPLUNK_PASSWORD: $SPLUNK_PASSWORD
SPLUNK_HEC_TOKEN: $SPLUNK_HEC_TOKEN
ports:
- 8000:8000
- 8088:8088
networks:
- skynet
test:
image: ryans/test-service
depends_on:
- splunk
environment:
WAIT_FOR_IT: http://localhost:8000
ports:
- 5001:5001
logging:
driver: splunk
options:
splunk-url: https://localhost:8088
splunk-token: $SPLUNK_HEC_TOKEN
splunk-insecureskipverify: 'true'
networks:
- skynet
有趣的是,如果我注释掉我的测试服务并仅使用 Splunk 容器运行 docker-compose;我可以使用 cURL 通过 HTTPS 调用 Splunk HEC URL,例如
curl -k https://localhost:8088/services/collector -H 'Authorization: Splunk abcd1234' -d '{\"event\": \"Hello from event collector\"}'
在 Splunk Web 界面中;如果我去settings > Data Inputs > HTTP Event Collector > Global Settings
并明确禁用启用 SSL;然后我可以通过 HTTP(使用 cURL)将日志发送到 HEC 端点,并且我可以无错误地启动我的测试服务(并且日志开始通过 Splunk)。
docker run -p 5001:5001 --log-driver=splunk --log-opt splunk-token=abcd1234 --log-opt splunk-url=http://localhost:8088 ryans/test-service
我的问题是如何将Enable SSL
设置默认为禁用/关闭?
仅供参考,我尝试覆盖splunk/splunk
docker 映像以手动设置 enableSSL in /opt/splunk/etc/apps/splunk_httpinput/local/inputs.conf
,但由于某种原因(当我执行到正在运行的容器中时)它被恢复为启用/打开,即enableSSL = 1
...
Dockerfile:
FROM splunk/splunk:latest
COPY ./inputs.conf /opt/splunk/etc/apps/splunk_httpinput/local/inputs.conf
输入.conf:
[http]
disabled = 0
enableSSL = 0
[http://splunk_hec_token]
disabled = 0
token = abcd1234
解决方案
您是否尝试过使用default.yml
此处详述的 a ?
https://splunk.github.io/docker-splunk/ADVANCED.html#usage
例子
splunk:
hec:
enable: True
ssl: false
port: 8088
# hec.token is used only for ingestion (receiving Splunk events)
token: <default_hec_token>
推荐阅读
- php - .htaccess 重写 url 参数和键
- c - C:使用指针计算数组总和的函数
- android - 已解决:制作主屏幕快捷方式时,默认的 Androd 图标是什么?
- node.js - Firestore 创建后获取文档
- python - input() 接受 2 个位置参数,但给出了 3 个
- oracle - 如何在 PL/SQL 游标中给出参数
- angular - 来自 API 的 Angular 接收文件
- qt - 如何在 QML RangeSlider 对象上显示刻度?
- javascript - javascript match() 不带斜线
- git - 使用 Eclipse 将项目附加到 git 存储库