Grafana Loki:ELK Stackに代わる「超軽量」なログ管理ソリューション

Monitoring tutorial - IT technology blog
Monitoring tutorial - IT technology blog

なぜ私はELKを捨ててGrafana Lokiに移行したのか?

数十台のコンテナを管理する中で、各サーバーにsshでログインしてtail -fを叩くのは苦行です。以前、15台のサーバーでPrometheusクラスターを運用していました。ロジックエラーが発生した際、メトリクスはCPUの急上昇を知らせてくれますが、どのコードが「死んでいる」のかは教えてくれません。その時、私は悟りました。メトリクスはシステムが「体調不良」であることを知るためのものであり、ログこそが「病名」を特定するものなのだと。

ELK Stack (Elasticsearch, Logstash, Kibana) は、ログ管理において真っ先に思い浮かぶ名前でしょう。しかし、ELKは非常にリソースを消費します。安定したElasticsearchクラスターを動かすには、少なくとも8〜16GBのRAMが必要であり、小規模なスタートアップやステージング環境にとっては贅沢すぎます。そこで救世主として現れたのが、「ログ版Prometheus」という哲学を持つLokiです。Lokiは全コンテンツにインデックスを貼るのではなく、ラベルのみをインデックス化します。その結果、ストレージ容量をElasticsearchに比べて最大10分の1に抑えることができます。

Docker Composeによるクイックデプロイ

Loki、Promtail、Grafanaの3点セットを動かすには、Docker Composeが最もスマートな選択肢です。動作モデルは非常にシンプルです:

  • Loki: ログの保存とクエリ処理を担うデータベース。
  • Promtail: 物理ファイルからログを収集し、Lokiに転送するエージェント。
  • Grafana: ログを可視化するためのインターフェース。

プロジェクトディレクトリを作成し、設定ファイルを準備します:

mkdir loki-stack && cd loki-stack
touch docker-compose.yaml promtail-config.yaml

docker-compose.yamlの内容(最新のLoki 3.0を使用):

Share: