如何通过Docker Compose初始化Splunk HTTP Event Collector并将其与splunk日志记录驱动程序一起使用

时间:2018-10-13 20:11:14

标签: docker docker-compose splunk

我正在尝试使用Docker Compose设置本地开发环境,该环境会引导Splunk Enterprise服务器并在应用程序服务器上使用splunk logging driver

版本:

  • Docker引擎:18.06.1-ce
  • 撰写:1.22.0
  • 撰写文件:3.7
  • Splunk Enterprise:7.2.0

我的docker-compose.yml文件如下:

version: "3.7"

services:
  app:
    build: ./app
    command: bash -c "npm run start:docker"
    depends_on:
      - splunk
    environment:
      - NODE_ENV=development
      - SERVER_PORT=8080
    logging:
      driver: splunk
      options:
        splunk-format: "json"
        splunk-insecureskipverify: "true"
        splunk-source: "app"
        splunk-token: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
        splunk-url: "http://splunk:8088"
        tag: "{{.ImageName}}/{{.Name}}/{{.ID}}"
    ports:
      - "80:8080"
    volumes:
      - "./app:/usr/src/app"

  splunk:
    environment:
      - SPLUNK_ENABLE_LISTEN=9997
      - SPLUNK_START_ARGS=--accept-license --no-prompt --answer-yes
      - SPLUNK_USERNAME=admin
      - SPLUNK_PASSWORD=password
    hostname: splunk
    image: splunk/splunk:7.2.0
    ports:
      - "8000:8000"
      - "8088:8088"
      - "9997:9997"
    restart: always

为了使其按预期工作,我需要生成一个HTTP Event Collector令牌,并以某种方式使其可用于应用程序服务。

我已经看到您可以使用环境变量SPLUNK_CMD来运行命令,大概是在Splunk服务启动并运行之后,但是当我尝试将其用于generate a token with the CLI时,什么也没发生。我没有看到日志中的任何故障,也没有在“设置”>“数据输入”下找到任何令牌。

另一个问题是Splunk需要一些时间来启动,并且在开始监听之前,由于日志记录驱动程序无法连接,因此应用程序服务无法构建。

是否可以做我想做的事情?如果可以,怎么办?

1 个答案:

答案 0 :(得分:1)

新映像(7​​.2.0)的配置表明,您可以使用环境变量https://github.com/splunk/docker-splunk/blob/48d5322bc574792a5bfbfe8f68769aa16e7688b7/documentation/ADVANCED.md#valid-enterprise-environment-variables指定一个HTTP事件收集器令牌

但是在查看https://github.com/splunk/splunk-ansible/search?q=set_as_hec_receiver.yml&unscoped_q=set_as_hec_receiver.yml之后,我认为它不适用于单个实例-似乎该剧本仅适用于重量级转发器和索引器。

或者,如果您查看"legacy"/community supported图像,则会发现另一种方式。例如,您可以看一下我们在Outcold Solutions用来开发Splunk应用https://github.com/outcoldsolutions/splunk-app-boilerplate的应用样板,其中:

  1. 地图配置https://github.com/outcoldsolutions/splunk-app-boilerplate/blob/master/Makefile#L23
  2. 将其复制到https://github.com/outcoldsolutions/splunk-app-boilerplate/blob/master/Makefile#L26

要解决此问题,“另一个问题是Splunk需要一些时间来启动,并且在开始监听之前,由于日志记录驱动程序无法连接,因此应用程序服务无法构建。” -请查看选项splunk-verify-connection(请参阅https://docs.docker.com/config/containers/logging/splunk/#splunk-options),这样,它将不断尝试重试发送数据,直到HTTP Event Collector可用为止。

作为splunk-verify-connection的替代方法,您还可以通过Outcold Solutions收集器使用从JSON日志转发容器日志的另一种方法,将日志转发到Splunk。安装https://www.outcoldsolutions.com/docs/monitoring-docker/v5/installation/很容易,您也可以使用应用程序来监视docker环境https://splunkbase.splunk.com/app/3723/