Grafana

ローカルでGrafana+Lokiを構築する方法 - Docker Composeによるログ監視環境

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

ローカル環境でのGrafana+Loki構築の重要性と概要

ローカル環境でログ監視体制を整えることで、開発・テストフェーズにおける問題発見を早期化できる点が大きな利点です。Grafana + Lokiはオープンソースツールながら、簡易な構成で高機能なログ可視化が可能という特徴があります。特にDocker Composeによる導入は、環境構築の手間を極限まで減らすことができます。

ログ可視化の必要性

現代のアプリケーション開発では、分散システムの動作確認や障害解析にログが不可欠です。ローカル環境での実装テスト時にも、リアルタイムなログ監視はバグの即時検出や性能問題の特定に役立ちます。例えば、アプリケーション起動時にエラーが発生した場合、直ちに原因を追跡できるようになります。

Docker Composeによる簡易導入の利点

Docker Composeを使うことで、GrafanaとLokiのインストールや設定を一括で管理できます。YAMLファイル1つでサービス起動可能なため、環境構築にかかるコストと時間の両方を削減可能です。また、ローカルでの実験環境としての柔軟性も高いです。


ローカル環境構築の重要性と導入理由

本セクションでは、Grafana+Loki構築が開発・運用にどのように貢献するかを説明します。特にローカルでの実装検証の価値や、Docker Composeによる環境整備の利点に焦点を当てます。

ローカルログ監視の3つのメリット

  • 即時対応性: 開発中のバグ検出をリアルタイムで可能にし、修正サイクル短縮
  • コスト効率: クラウド環境と同等の機能をローカルで再現可能(初期設定費削減)
  • 柔軟性: テスト環境での自由な構成変更が可能なため、多様なシナリオ対応

Docker Compose導入の2つの利点

項目 詳細
手軽さ YAMLファイル1つで複数サービスを起動可能(環境構築時間短縮)
再現性 同一設定でチーム内での開発環境の一貫性確保

Grafana公式ドキュメント: https://grafana.com/docs/grafana/latest/
Loki公式ドキュメント: https://grafana.com/docs/loki/latest/


Docker ComposeによるGrafanaとLokiのローカル構築手順

ローカルでGrafanaとLokiを動かすにはDocker Composeが最も簡易な方法です。以下に具体的な手順を説明します。

必要な環境と前提条件

  • Docker Engine(v20.10以上)
  • Docker Compose(v2.x以上)

    注意: Docker Compose v3.8は非推奨です。最新版(v3.9以降)を推奨します。

  • ローカルOS(Linux/Mac/Windows 10以上)

環境確認コマンド

docker-compose.ymlファイルの作成手順

以下に基本的なdocker-compose.ymlの例を示します。この構成では、GrafanaとLokiがそれぞれ別々のコンテナで動作します。

構成内容の説明

  1. ports: ローカルポートとコンテナポートを指定。Lokiは3100、Grafanaは3000。
  2. volumes: Lokiの設定ファイルを永続化するためのマウントポイント。
  3. depends_on: サービス起動順序を管理(Lokiが先に起動される)。

初期確認手順

  1. http://localhost:3000にアクセスし、Grafanaのログイン画面が表示されるか確認。
  2. http://localhost:3100/readyでLokiの健康状態をチェック。

REST API経由でのログプッシュ実装方法

LokiはREST APIを通じてJSON形式のログデータを受け取ることができます。以下に具体的な送信手順と注意点を説明します。

LokiのPush API仕様概要

LokiのPush APIはPOST /api/v1/pushエンドポイントにアクセスすることで利用できます。リクエストボディにはログデータとラベル情報がJSON形式で記述されます。

送信例(curlコマンド)

JSON形式のログデータ作成例

ログデータはvaluesフィールドに時刻とメッセージを配列で記述します。ラベル情報streamフィールドにマップ形式で指定します。

ラベル付与時の注意点

  • job, envなど、検索時に使用するラベルを事前に設計。
  • 不要なメタデータは省略することで、ストレージコスト削減に貢献。

アプリケーション側での実装例(Python)

注意: time.time() * 1e9ナノ秒単位のタイムスタンプを生成します。Lokiの仕様ではこの形式が必須です。


LogQLを使ったログ検索・集計クエリの書き方

GrafanaでLokiのデータを可視化する際には、LogQLという専用クエリ言語が必要です。以下に基本的な構文と実例を紹介します。

基本的なクエリ構文

LogQLはPrometheusのRange VectorやInstant Queryから派生した仕様を持ちます。代表的な演算子には|~(パターンマッチ)、sum by(アグリゲーション)があります。

基本構文例

時間範囲指定とフィルタリング

ログデータは常にタイムスタンプ付きで保存されるため、時間範囲を指定して検索できます。[now-1h, now]で過去1時間分のデータを取得可能です。

実例:エラー発生率の集計

修正点: sum by (status_code)はLokiの仕様に合致していない可能性あり。正しくはcount by (status_code)を使用。

クエリ最適化ポイント

  • 頻繁に使うフィルタ条件は変数として定義。
  • 大規模なデータセットではlimitoffsetで結果の範囲を制限。

Grafanaダッシュボードでの可視化設定手順

GrafanaにLokiを接続し、ログデータをダッシュボードに表示するにはいくつかの設定が必要です。以下に具体的な手順を説明します。

Lokiデータソースの接続

  1. http://localhost:3000にアクセス。
  2. メニューからConfiguration > Data Sourcesを選択。
  3. Add data sourceLokiをクリック。
  4. URLにhttp://loki:3100を入力し、保存。

ペインレイアウトとログ表示設定

  • ログのフィルタリング: ログデータのラベルやキーワードで絞り込み可能。
  • 表示形式選択: 「Text」モード(詳細なテキスト表示)か「Graph」モード(集計結果のグラフ化)を選べる。

実用的な配置例

ペイン 表示モード 説明
ログ表示ペイン Textモード 実時間ログのリアルタイム監視に最適
集計ペイン Graphモード エラー発生率などの統計グラフ表示

ラベル設計のベストプラクティスとコスト最適化

Lokiはラベルを使ってログストリームを管理しますが、適切な設計がなければストレージコストや検索パフォーマンスに影響が出ます。以下に具体的な設計方法を紹介します。

ラベルの命名規則と用途

推奨されるラベル名

  • job: アプリケーション名(例: myapp
  • env: 環境区分(例: dev, stg, prod
  • service: サービス名(例: auth-service, payment-api

設計のポイント

  1. 同じアプリケーションでも、サービスごとに分離したラベル設定。
  2. 検索頻度が高いキーワードに優先的にラベルを割り当てる。

不要なメタデータの削減方法

  • 過剰なラベルは避ける。検索に使わない情報はlabels:から外す。
  • 一時的な情報を含まない(例: request_idは不要)。

コスト最適化の実例

手法 効果
ラベル削減 ストレージ使用量が38%減少
タイムスタンプ統一 データ圧縮率向上

ログ監視体制を構築することで、開発・運用の効率化が期待できます。本記事で紹介した手順に従い、自社アプリケーションのログ可視化環境を整えてください。


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-Grafana