Raspberry Pi と Fluent Bit を使ってSyslogをAzure Log Analytics に集約する仕組みを作ります。
背景
LAN内のSyslogを収集してLog Analyticsへ転送する仕組みとしてOMSエージェントが提供されていますが、OMSエージェントはARMベースのCPUに対応していないためRaspberry Pi にインストールすることができません。
OMSエージェントの代替としてLog Analyticsへ転送する仕組みが組み込まれたFluent BitをRaspberry Pi へ導入、セットアップを行います。
これによりLAN内のSyslogをLog Analyticsへ転送する仕組みを簡単かつ低コストで実現します。
手順
Ansibleを使います。
##事前準備
Raspberry Pi セットアップ
- Raspberry Pi Imager を用いてUbuntuServer64bitをインストールします。
- 一度SSHにてログインしパスワードを変更します。例:Password123!
セットアップで準備する情報
名前 | 値 | 例 |
---|---|---|
IPアドレス | 192.168.0.200 | |
ユーザ名 | ubuntu | default |
パスワード | ???? | Password123! |
Ansible実行環境
macosの場合はbrew install等を使ってAnsibleをインストールします。
Gitクローン
https://github.com/mochizukithr/oms-agent-raspberry-pi.git
インベントリファイル編集
hosts.example を参考にhostsファイル(インベントリファイル)を作成します。
[pi]
192.168.0.73<事前準備で確認したIPアドレスに書き換える>
[all:vars]
ansible_ssh_port=22
ansible_ssh_user=ubuntu
ansible_ssh_pass=Password123!<事前準備で確認したパスワードに書き換える>
Customer_ID=<Log Analytics画面にて確認>
Shared_Key=<Log Analytics画面にて確認>
Fortigate設定
Fortigateにてsyslogの設定を行います。
log syslogd override-settingを参考に設定を行います。
ポイントはlegacy-reliable
をEnableとし、ログの出力形式をRFC3195形式にします。
Fluent BitのParserにてsyslog-rfc3164を設定しているので、この設定をしないと処理できません。
FGT60D (override-setting) # set mode legacy-reliable
最終的に以下のような設定とします。
# get log syslogd override-setting
override : enable
status : enable
server : 192.168.0.73
mode : udp
port : 514
facility : local7
source-ip :
format : default
構築
次のコマンドを実行します。
% ansible-playbook -i hosts site.yml
数分後、Log Analyticsのログ画面を確認するとFortigateのログが記録されています。
トラブルシューティング
Log Analyticsにログが記録されない場合はRaspberry Pi の /var/log/syslog
を確認してください。
Fortigateから送られてきたログの処理状況やLog Analyticsへの送信状況がログとして記録されています。
編集後記
そもそもはCisco CatalystのログをLog Analyticsに送信するのを目的に始めたけど、Catalystのログはsyslog-rfc3164に準拠していなかったため諦めた。やる気になったらそのうちパーサー書くかも。