プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2021/12/20

Syslog を Telegraf に送り、Grafana で閲覧できるようにする

event_note2021/12/19 23:06

以下に 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 ファイルをダウンロードしてインポートするだけです。

これで以下のようなダッシュボードが完成します。