概要
vCenter/ESXiのログファイルをリモートのrsyslogへ転送して集約することはよく行われるが、ここではさらにログを可視化したり検索しやすいようにGrafana Lokiの導入を試してみる。rsyslog、Promtail、Loki、Grafanaはすべてdocker-composeで環境構築する。
参考:https://grafana.com/oss/loki/
環境
- vCenter/ESXi : 7.0u1
- Promtail : 2.8.0
- Loki : 2.8.0
- Grafana : 8.2.6
前提
- docker、docker-composeはインストール済み
How to setup
1.rsyslogコンテナイメージを作成
以下のようにDockerfileを書いて sudo docker build -t rsyslog .
でイメージビルドしておく。
2.docker-compose.yaml
3.rsyslog.conf
vCenter/ESXiからのsyslogは一旦すべてrsyslogで受信する。514/udpで受信して、1514/tcpでリッスンしているPromtailへリレーする。
4.promtail-config.yaml
参考: https://grafana.com/docs/loki/latest/clients/promtail/scraping/#syslog-receiver
5.コンテナを起動
//コンテナを起動
$ sudo docker compose up -d
//起動確認
$ sudo docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
loki-grafana-1 grafana/grafana:latest "/run.sh" grafana About an hour ago Up About an hour 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
loki-loki-1 grafana/loki:2.8.0 "/usr/bin/loki -conf…" loki About an hour ago Up About an hour 0.0.0.0:3100->3100/tcp, :::3100->3100/tcp
loki-promtail-1 grafana/promtail:2.8.0 "/usr/bin/promtail -…" promtail About an hour ago Up About an hour 0.0.0.0:1514->1514/tcp, :::1514->1514/tcp, 0.0.0.0:9080->9080/tcp, :::9080->9080/tcp
loki-rsyslog-1 rsyslog "rsyslogd -n" rsyslog About an hour ago Up About an hour 0.0.0.0:514->514/udp, :::514->514/udp
6.vSphere側のログ転送設定
7.Grafana設定
データソースとしてLokiを指定する。
Log queries
Promtailのラベル設定で付与したラベルを使ってログを検索・抽出。ホスト名、ログの重要度レベル、etcでフィルタするなどの使い方ができる。