1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker Compose版Splunk Connect for SNMPセットアップガイド

1
Last updated at Posted at 2025-12-11

はじめに

SNMPデータをSplunkに取り込みたい場合、Splunk Connect for SNMP (SC4SNMP) という選択肢があります。
従来はKubernetesが前提で導入ハードルが若干高かったのですが、最近はDocker Compose版が提供されており、より手軽に利用できるようになりました。

この記事では、Docker Compose版のSC4SNMPを使ってSNMPデータを取得するための手順を解説します。

今回の手順がのっている公式ドキュメントはこちら。
詳細なコンフィグ例やパラメータの解説も載っています。

今回のテスト構成

  • 監視側 (SC4SNMP): Docker Composeで動作
  • 被監視側 (Target): 別IPのUbuntuサーバー(例: 192.168.1.50)

Step 1: Splunk側の準備

1-1. インデックス作成

Splunk側でSC4SNMP用のインデックスを2つ作成します。
※名前は任意で結構です。後ほど設定ファイルでインデックス名を指定できます。

インデックス名 インデックスタイプ 用途
netops イベント SNMP Trapやイベントログ用
netmetrics メトリクス インターフェース使用状況などの数値データ用

1-2. HEC(HTTP Event Collector)作成

SC4SNMPからはHECを使用してデータを送信します。Splunk Web上で以下の手順で作成しておきましょう。

  1. 設定 > データ入力 > HTTP Event Collector
  2. 新しいトークンを作成
  3. トークン値をメモしておく

Step 2: SC4SNMPのセットアップ

docker_composeファイルの取得

GitHubのリリースページから、最新の安定版(Betaでないもの)の docker_compose.zip をダウンロードして展開します。

unzip docker_compose.zip
cd docker_compose

scheduler-config.yaml の設定(何を監視するか)

プロファイルを登録し、監視対象のMIBツリーを varBinds として定義します。
ここではプロファイル名を test_profile としてますが、この名前も任意です。

scheduler-config.yaml
communities:
  2c:
    public:

profiles:
  test_profile:
    varBinds:
      - ['IP-MIB']
      - ['IF-MIB']
      - ['TCP-MIB']
      - ['UDP-MIB']

inventory.csv の設定(誰を監視するか)

監視対象のIPアドレスを指定します。
注意: 1行目のヘッダー行は必ず残してください。これがないと読み込まれません。

inventory.csv
address,port,version,community,secret,securityEngine,walk_interval,profiles,smart_profiles,delete
192.168.1.50,161,2c,public,,,60,test_profile,,
192.168.1.51,161,2c,public,,,60,test_profile,,

パラメータ説明:

  • address: 監視対象のIPアドレス
  • port: SNMPポート(通常は161)
  • version: SNMPバージョン(2c または 3)
  • community: コミュニティ名
  • walk_interval: ポーリング間隔(秒)
  • profiles: 使用するプロファイル名

traps-config.yaml の設定(Trap受信)

SNMP Trap受信設定(コミュニティ名)を行います。

traps-config.yaml
communities:
  2c:
    public:

.env ファイルの設定

.env ファイルに設定ファイルパスやSplunkへの接続情報などを記述します。
重要: ファイルパスは絶対パスで指定してください。

.env

# --- ファイルパス設定(絶対パスで指定) ---
SCHEDULER_CONFIG_FILE_ABSOLUTE_PATH=/home/<user>/docker_compose/scheduler-config.yaml
TRAPS_CONFIG_FILE_ABSOLUTE_PATH=/home/<user>/docker_compose/traps-config.yaml
INVENTORY_FILE_ABSOLUTE_PATH=/home/<user>/docker_compose/inventory.csv
COREFILE_ABS_PATH=/home/<user>/docker_compose/Corefile

# --- ネットワーク設定 ---
# IPv6を使わない場合は以下をコメントアウト(新しいバージョンではコメントアウト不要かもしれません)
#COREDNS_ADDRESS_IPv6=fd02:0:0:0:7fff:ffff:ffff:ffff

# --- Splunk接続設定 ---
SPLUNK_HEC_HOST=your-splunk-server.example.com
SPLUNK_HEC_TOKEN=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
SPLUNK_HEC_INSECURESSL=true  # テスト環境などで正式なSSL証明書がない場合

# --- インデックス設定(Step 1で作成したもの) ---
SPLUNK_HEC_INDEX_EVENTS=netops
SPLUNK_HEC_INDEX_METRICS=netmetrics

Step 3: コンテナ起動

準備ができたらコンテナを起動します。設定を確実に反映させるため、既に起動している場合は一度停止してから起動し直すことをおすすめします。

docker compose down
docker compose up -d

起動確認とログ確認

ポーラー(収集ワーカー)のログを確認してみましょう。

docker logs -f $(docker compose ps -q worker-poller | head -n 1)

エラーが出ていなければ成功です。

Step 4: Splunkでデータを確認する

データが取り込まれているか、Splunkのサーチ画面で確認しましょう。

| mpreview index="netmetrics"

SNMPのメトリクスデータが表示されればOKです。

image.png

メトリクスデータなので | mstats などを使いましょう。

Step 5: SNMP Trapの受信テスト

ポーリングだけでなく、Trapも受信してみましょう。
先ほどの設定で public コミュニティのTrapを受け取る設定にしていました。

Trap送信テスト(Ubuntuから)

監視対象のUbuntuサーバーから、SC4SNMPサーバーに向けてテストTrapを送信します。

# SC4SNMPが動いているサーバーのIPを指定(例: 192.168.1.100)
snmptrap -v 2c -c public 192.168.1.100 "" .1.3.6.1.6.3.1.1.5.1

OIDの説明: .1.3.6.1.6.3.1.1.5.1: coldStart(システム再起動)という標準的なTrapのOID

Splunkで確認

Trapはイベントデータとして netops インデックスに格納されます。

index="netops" sourcetype="sc4snmp:traps"

coldStart のイベントが表示されれば、Trap受信は成功です。

image.png

Step 6: SC4SNMP自体のログをSplunkへ送る

SC4SNMP自体のエラーもSplunk上で監視したい場合があります。
Docker Compose版には、コンテナログを転送するための便利なスクリプト(manage_logs.py)が同梱されています。

.env にログ用インデックスを追記

.env
SPLUNK_LOG_INDEX=main #Indexはどこでもいいです

ログ設定スクリプトの実行

必要なPythonライブラリをインストールし、ログ転送を有効化します。
docker_composeファイルがあるディレクトリで実行します。

# 必要なライブラリのインストール
pip3 install ruamel.yaml

# ログ転送の有効化
python3 manage_logs.py --path_to_compose $(pwd) --enable_logs

設定の反映

このスクリプトは docker-compose.yaml 自体を書き換えてログドライバ設定を追加するため、コンテナの再作成が必要です。

docker compose down
docker compose up -d

これで docker logs コマンドを使わなくても、Splunk上で以下のようなクエリでコンテナログが確認できるようになります。

index=<ログ送信先> source="http:sc4snmp"

まとめ

SC4SNMPをDocker Composeで比較的簡単にセットアップできました。
今後は以下のように拡張していけます。

  • scheduler-config.yaml に必要に応じてMIBを追加
  • inventory.csv に監視対象機器を追加
    (設定反映はdocker compose up -dでできます)

Docker環境があればかなりさっくり動かせると思います。

ダッシュボード作成はLLMにまかせましょう

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?