Syslog監視設定ファイル生成ツール

ktranslateを使用してネットワークデバイスからのsyslogメッセージを監視・収集します

📌 重要: 設定ファイルの役割について

syslog-base.yamlファイルは、syslogメッセージの受信には必須ではありません。

このファイルの主な用途:

  • 送信元デバイスの特定 - IPアドレスからデバイス名への変換
  • メタデータ付与 - チーム、環境、デバイスタイプなどのタグ追加
  • ログ整理 - New Relicでの検索・フィルタリング向上

純粋にsyslogメッセージを受信するだけなら、設定ファイルなしでも動作します。

設定概要

監視ポート

UDP 514 (標準syslogポート)

サポート形式

RFC3164, RFC5424, RFC6587

設定ファイル

syslog-base.yaml (送信元デバイス管理用)

転送先

New Relic Logs

送信元デバイス設定 (オプション)

syslogメッセージの送信元デバイスを管理し、適切なタグ付けを行います

デバイス番号 デバイス名
(必須)
デバイスIP
(必須)
デバイスタイプ カスタムタグ 操作
デバイス1
デバイス2

📋 パラメータ設定について

デバイス名 必須

syslogの送信元を識別するための一意な名前です。英数字、アンダースコア(_)、ハイフン(-)のみ使用可能。

例: router01, firewall-01
デバイスIP 必須

syslogメッセージの送信元IPアドレスです。CIDR記法(/32)を推奨します。

例: 192.168.1.1/32, 10.0.0.100/32
デバイスタイプ 任意

デバイスの種類を入力します。機器の分類とフィルタリングに使用されます。既存の選択肢から選ぶか、独自のタイプを入力できます。

例: router, switch, firewall, server, camera, printer, iot_device など
カスタムタグ 任意

デバイスに付与する追加属性です。メトリクスに含まれ、分析やフィルタリングに使用できます。

例: location=Tokyo, datacenter=dc01
💡 設定のポイント
  • デバイス名デバイスIPは必須項目です。必ず入力してください。
  • デバイスIPはCIDR記法(/32)で入力することを推奨します。
  • カスタムタグは複数設定可能で、location、datacenter、roleなどの分類に使用します。
  • 設定ファイルがなくてもsyslog収集は可能ですが、送信元の特定とタグ付けにこの設定が役立ちます。

🚀 Syslog監視コンテナ起動手順

ktranslateでSyslogメッセージを収集・監視するための手順です

1

環境変数の設定

New Relicの認証情報を設定します

export NEW_RELIC_API_KEY="your_license_key"
export NR_ACCOUNT_ID="your_account_id"
2

設定ファイルの準備(オプション)

設定管理タブで生成したYAMLファイルを保存します

# 設定ファイルを syslog-base.yaml として保存(オプション)
# Syslogは設定ファイルなしでも動作します
3

コンテナ起動

Syslog監視コンテナを起動します

🎯 設定ファイルあり(推奨)

送信元デバイスの特定とタグ付けを行う場合

docker run -d --name ktranslate-syslog \
  --restart unless-stopped \
  -p 514:5143/udp \
  -v $(pwd)/syslog-base.yaml:/syslog-base.yaml \
  -e NEW_RELIC_API_KEY="$NEW_RELIC_API_KEY" \
  kentik/ktranslate:v2 \
  -snmp /syslog-base.yaml \
  -nr_account_id="$NR_ACCOUNT_ID" \
  -metrics=jchf \
  -tee_logs=true \
  -dns=local \
  -service_name="ktranslate-syslog" \
  nr1.syslog
⚡ シンプル版

純粋なsyslogメッセージ収集のみ

docker run -d --name ktranslate-syslog-simple \
  --restart unless-stopped \
  -p 514:5143/udp \
  -e NEW_RELIC_API_KEY="$NEW_RELIC_API_KEY" \
  kentik/ktranslate:v2 \
  -nr_account_id="$NR_ACCOUNT_ID" \
  -metrics=jchf \
  -tee_logs=true \
  -dns=local \
  -service_name="ktranslate-syslog-simple" \
  -syslog.source=0.0.0.0:5143 \
  nr1.syslog
🔧 デバッグモード

ログ出力を詳細にして問題を調査

docker run -d --name ktranslate-syslog-debug \
  --restart unless-stopped \
  -p 514:5143/udp \
  -v $(pwd)/syslog-base.yaml:/syslog-base.yaml \
  -e NEW_RELIC_API_KEY="$NEW_RELIC_API_KEY" \
  kentik/ktranslate:v2 \
  -snmp /syslog-base.yaml \
  -nr_account_id="$NR_ACCOUNT_ID" \
  -metrics=jchf \
  -tee_logs=true \
  -dns=local \
  -log_level=debug \
  -service_name="ktranslate-syslog-debug" \
  nr1.syslog
4

動作確認

コンテナの起動状態とログを確認します

コンテナ状態確認
docker ps | grep ktranslate-syslog
ログ確認
docker logs ktranslate-syslog
New Relicでの検索
# New Relic Logs
"plugin.type":"ktranslate-syslog"
5

テスト送信

syslogメッセージの送信テストを行います

Linux/Mac
logger -n localhost -P 514 "Test syslog message from ktranslate"
Windows PowerShell
$UdpClient = New-Object System.Net.Sockets.UdpClient
$UdpClient.Connect("localhost", 514)
$Bytes = [System.Text.Encoding]::ASCII.GetBytes("Test syslog message")
$UdpClient.Send($Bytes, $Bytes.Length)
$UdpClient.Close()

🔧 トラブルシューティング

ポート権限エラー

Linux環境でUDP 514ポートのバインドエラーが発生する場合

  • sudo権限でDockerを実行(ポート514は特権ポート)
  • setcapコマンドでポート権限を付与
  • ファイアウォールでUDP 514が開放されているか確認
メッセージが届かない

デバイスからのsyslogメッセージが受信されない場合

  • デバイスのsyslog設定でktranslateホストのIPを指定
  • ネットワーク経路でUDP 514が通るか確認
  • syslogフォーマット(RFC3164/RFC5424)を確認
  • コンテナログでエラーがないか確認
コンテナが起動しない

Dockerコンテナの起動に失敗する場合

  • NEW_RELIC_API_KEYが正しく設定されているか確認
  • NR_ACCOUNT_IDが正しいか確認
  • 設定ファイルのパスが正しいか確認
  • Dockerイメージが最新版か確認