あとから書いたので漏れがあるかも。
用途としては検証の際にサクッとログを確認できるようにしたかった
機能として分解すると
- いろんなホストからの syslog の収集、蓄積
- IP アドレスによるログファイルの振り分け
- ブラウザでいい感じに可視化、検索
rsyslog と grep で頑張るのもしんどいので。
当初は Graylog を検討。
しかし我が家の Proxmox 環境では MongoDB 5.x が動かないことが判明したため候補から除外。
Elastic Stack も考えたが、大掛かりになるのと Elasticsearch のリソースが激しいため躊躇。
これがよさそうだったので採用。
Chronograf + Telegraf + InfluxDBでSyslog Viewerを作る #influxdb – Qiita
InfluxDB, Telegraf, Chronograf は InfluxData Downloads の手順通りにインストール。
Telegraf は config の編集が必要。コメントアウトし、influxDB の初期設定時に出てくる Token や organization, bucket を指定します。
root@syslog:~# cat /etc/telegraf/telegraf.conf | grep -v '^\s*#' |grep -v '^\s*$'
[[outputs.influxdb_v2]]
urls = ["http://127.0.0.1:8086"]
token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=="
organization = "naokilog"
bucket = "syslog_bucket"
[[inputs.syslog]]
server = "tcp://:6514"
rsyslog からの転送については Qiita の記事の通りに実施。
Graylog のように iptables で 514/udp,tcp を無理やり書き換えたりしなくて済むのもいいところですね。
root@syslog:~# cat /etc/rsyslog.d/50-forward.conf
$ModLoad imudp
$UDPServerRun 514
$ActionQueueType LinkedList # use asynchronous processing
$ActionQueueFileName srvrfwd # set file name, also enables disk mode
$ActionResumeRetryCount -1 # infinite retries on insert failure
$ActionQueueSaveOnShutdown on # save in-memory data if rsyslog shuts down
*.* @@(o)127.0.0.1:6514;RSYSLOG_SyslogProtocol23Format
rsyslog で ip ごとにフォルダを作成し、振り分け。
root@syslog:~# cat /etc/rsyslog.conf
~省略~
# Logfile by IP address
$template hostFile, "/var/log/rsyslog/%fromhost-ip%/%$year%-%$month%-%$day%.log"
:fromhost-ip, !isequal, "127.0.0.1" -?hostFile
logrotate の対象に追加
root@syslog:~# cat /etc/logrotate.d/rsyslog
~省略~
/var/log/rsyslog/*/*.log
{
rotate 4
weekly
missingok
notifempty
compress
delaycompress
sharedscripts
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
InfluxDB 初心者でしたが、数時間でサクッと動きました。
見た目的にもきれいですし、Hostname での絞り込み、時間での絞り込み、特定ワードでの検索、info や error, Facility での絞り込みが可能で求めていた機能としては十分でした。
Alerting なんかもあるようなので、気が向いたらやってみます。
コメント