Part 1: Configure the log collection environment 🔗
ログを生成するコンテナ、Splunk Distribution of the OpenTelemetry Collector、Splunk Enterprise サーバーなど、チュートリアル環境に必要なすべてのサービスを設定します。チュートリアルの概要については、Tutorial: Use the Collector to send container logs to Splunk Enterprise を参照してください。
注釈
このチュートリアルでは、まずロギング、Collector、Splunk Enterpriseコンテナを作成します。チュートリアルの次のパートでは、ロギングコンテナボリュームからログを受信、処理、エクスポートするCollectorコンポーネントと、処理されたロギングデータを受信、保存するインデックスを定義します。
Create the log collection environment 🔗
このチュートリアルで使用するすべての設定ファイルは1つのディレクトリにあります。以下の手順に従って、ディレクトリと最初のファイルを作成してください:
log-collectionというディレクトリを作成します。
ログ収集ディレクトリにdocker-compose.ymlというファイルを作成します。
Add the logging services 🔗
Docker Composeは、このチュートリアルで使用するサービスをデプロイし、管理します。ログを出力するBashサービスを設定するには、docker-compose.yml
ファイルに次を追加します :
services:
logging1:
image: bash:latest
container_name: logging1
# Command that runs when the container starts.
command: bash -c "while(true) do echo '{\"message\":\"logging1\"}' >> /output/file.log ; sleep 1; done"
# Sets the logging services not to start until the Collector service starts.
depends_on:
- otelcollector
# Routes the `./output` directory from the host machine to the `/output` volume.
volumes:
- ./output1:/output
logging2:
image: bash:latest
container_name: logging2
command: bash -c "while(true) do echo '{\"message\":\"logging2\"}' >> /output/file.log ; sleep 1; done"
depends_on:
- otelcollector
volumes:
- ./output2:/output
Add the Collector service 🔗
ロギングサービスから受信するログデータを受け入れ、チュートリアルの次の部分で定義するCollectorコンポーネントを実行するCollectorサービスを作成します。services
セクションに、以下のコードを追加します:
otelcollector:
image: quay.io/signalfx/splunk-otel-collector:latest
container_name: otelcollector
# Command that runs when the container starts.
command: ["--config=/etc/otel-collector-config.yml"]
# Routes files and directories from the host machine to the container volumes
volumes:
- ./otel-collector-config.yml:/etc/otel-collector-config.yml
- ./output1:/output1
- ./output2:/output2
# Sets the otelcollector service not to start until splunk service starts
# and is in the Healthy state.
depends_on:
splunk:
condition: service_healthy
# Host machine port 18088 forwards to the container port 8088,
# on which the otelcollector service listens for incoming log data.
ports:
- 18088:8088
Add the Splunk Enterprise service 🔗
Collectorサービスから受信するログデータを受け入れるSplunk Enterpriseサービスを作成します。services
セクションに以下のコードを追加します:
splunk:
image: splunk/splunk:9.1.2
container_name: splunk
# Sets environment variables to automatically accept the license agreement,
# define the token for the Splunk HTTP Event Collector (HEC), and define the administrator password.
environment:
- SPLUNK_START_ARGS=--accept-license
- SPLUNK_HEC_TOKEN=00000000-0000-0000-0000-0000000000000
- SPLUNK_PASSWORD=changeme
# Host machine port 18000 forwards to the container port 8000,
# on which the splunk service listens for incoming log data.
ports:
- 18000:8000
# Command that runs at regular intervals to check the health of the splunk service.
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:8000']
interval: 5s
timeout: 5s
retries: 20
# Routes the `./splunk.yml` file from the host machine to the `/tmp/defaults/default.yml` file
# inside the container, and creates persistent storage locations for data and configuration files.
volumes:
- ./splunk.yml:/tmp/defaults/default.yml
- /opt/splunk/var
- /opt/splunk/etc
注釈
splunk/splunk
画像には必ず 9.1.2
タグを使ってください。latest
タグを使うと、HECトークンの作成に関連して発生する既知の問題があります。
Next step 🔗
これで、Collectorを使用してコンテナログを収集し、Splunk Enterpriseインスタンスに送信するために必要なサービスが設定されました。次に、コンテナログの受信、処理、エクスポートに使用するCollectorコンポーネントを設定します。次に、Splunk Webでの検索と取得のためにログを保存するSplunk Enterpriseインデックスを設定します。続行するには、パート2: CollectorとSplunk Enterpriseインスタンスを設定する を参照してください。
さらに詳しく 🔗
For more information about using the Collector to monitor Docker containers, see Dockerコンテナ.
Splunk Enterprise コンテナの詳細については、docker-splunk ドキュメントおよび`Docker-Splunk<https://github.com/splunk/docker-splunk>`__ GitHubリポジトリを参照してください。