以下に Syslog 用のテンプレートと解説があるので簡単にできるかと思ったんですが、結構苦労しました・・・。
概要
ホストの Syslog から Telegraf にログを送り、Telegraf が InfluxDB に保存し、Grafana が InfluxDB から読み込んで可視化します。
Telegraf、InfluxDB、Grafana は全て docker-compose で動かしています。
これについては以下の記事で書いているので省略します。
上記記事からの変更点を以下に記述します。
rsyslog の設定
まずは Syslog から Telegraf にログを送信するように設定します。/etc/rsyslog.conf
を編集します。
$ sudo gedit /etc/rsyslog.conf
以下の設定を追加します。
$WorkDirectory /var/spool/rsyslog
$ActionQueueType LinkedList
$ActionQueueFileName srvrfwd
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
$ModLoad imudp #loads the udp module
$UDPServerAddress localhost
$UDPServerRun 514
*.* @@(o)127.0.0.1:6514;RSYSLOG_SyslogProtocol23Format
rsyslog を再起動します。
$ sudo systemctl restart rsyslog
Telegraf の設定
telegraf.conf
に以下の設定を追加します。
[[inputs.syslog]]
server = "tcp://0.0.0.0:6514"
Syslog から TCP ポート 6514 で受信するように設定していますが、docker で動かしているので localhost
を指定すると上手く動作しません。
とりあえず 0.0.0.0
を指定しましたが、もしかしたら host.docker.internal
とかでもいけるのかもしれません(未確認)。
docker-compose.yaml の変更
ポート 6514 を使用できるようにします。
services:
telegraf:
container_name: telegraf
image: telegraf
ports:
- 6514:6514
docker コンテナを再起動します。
Grafana の設定
以下のページからダッシュボードの JSON ファイルをダウンロードしてインポートするだけです。
これで以下のようなダッシュボードが完成します。