RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

ローカル環境でGrafana Lokiをためしてみた

f:id:tech-rakus:20200707121229p:plain

はじめまして。新規サービスの開発チームに所属しているkarabishです。 前から気になっていたGrafana Lokiをローカルで試してみました。

Grafana Lokiはログ集約システムで、似たものとしてはElasticsearchSplunkになるのかと思います。 公式ドキュメントでも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コンテナのログを閲覧した結果です。

f:id:karabish:20200701183130p:plain

最後に

比較的少ない作業でPostgreSQLのログをLokiで集約してGrafanaで閲覧するまでの構築はできました。PostgreSQLのログを見るだけであればdocker logsで問題ないのですが、他のログもあわせてみたい時があるので今後は集約するログを増やしていければと思います。

Copyright © RAKUS Co., Ltd. All rights reserved.