
はじめまして。新規サービスの開発チームに所属しているkarabishです。 前から気になっていたGrafana Lokiをローカルで試してみました。
Grafana Lokiはログ集約システムで、似たものとしてはElasticsearchやSplunkになるのかと思います。 公式ドキュメントでもElasticsearchとの比較が記載されています。
環境構築
今回は、docker-composeでローカルにLokiを構築した手順になります。
PostgreSQLのログを転送させるようにしています。
1. ロギングプラグインのインストール
PostgreSQLのログをLokiに直接転送するためにdocker pluginをインストールします。 docker pluginについてはDocker Driver Clientに記載されています。
$ docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions latest: Pulling from grafana/loki-docker-driver 0974501310e6: Download complete Digest: sha256:436fb0e17e7dde023398b539b03d91d902d5293da199a6ef6bb0b8262b8801e7 Status: Downloaded newer image for grafana/loki-docker-driver:latest Installed plugin grafana/loki-docker-driver:latest $
2. docker-compose.ymlにLokiを追加
ドキュメントに紹介されていたdocker-compose.ymlを参考に記載したものです。 PostgreSQLのログをLokiに転送するためにloggingプロパティでLokiの接続情報を記載しています。
version: "3.8"
networks:
loki:
services:
postgres:
image: postgres:12.3
container_name: postgresql
ports:
- 5432:5432
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=sample
restart: always
logging:
driver: loki
options:
loki-url: http://localhost:3100/loki/api/v1/push
volumes:
- postgresdata:/var/lib/postgresql/data
loki:
image: grafana/loki:1.5.0
container_name: loki
ports:
- 3100:3100
command: -config.file=/etc/loki/local-config.yaml
networks:
- loki
grafana:
image: grafana/grafana:master
container_name: grafana
ports:
- 3000:3000
networks:
- loki
volumes:
postgresdata:
driver: local
3. docker-composeの起動
$ docker-compose up -d Creating network "grafana-loki_default" with the default driver Creating network "grafana-loki_loki" with the default driver Creating volume "grafana-loki_postgresdata" with local driver Creating loki ... done Creating grafana ... done Creating postgresql ... done $
ログの閲覧と検索
初期設定
Grafanaにログインします。 URLはhttp://localhost:3000/です。
初回はEmail or username: admin、Password: adminでログインできます。
Add your first data sourceからLokiを選択して、URL欄にhttp://loki:3100を入力の上、[Save&Test]ボタンを押せば初期設定は完了です。
ログの閲覧
サイドメニューからExploreにアクセスします。あとは、Log lablesを設定するとログが閲覧できます。
下の画像はcontainer_nameラベルでpostgresqlコンテナのログを閲覧した結果です。

最後に
比較的少ない作業でPostgreSQLのログをLokiで集約してGrafanaで閲覧するまでの構築はできました。PostgreSQLのログを見るだけであればdocker logsで問題ないのですが、他のログもあわせてみたい時があるので今後は集約するログを増やしていければと思います。
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。

https://career-recruit.rakus.co.jp/career_engineer/カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
forms.gleイベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください! rakus.connpass.com