ELKスタックを使ったログ分析の完全ガイド

2025/03/06に公開

はじめに

現代のシステム運用では、ログデータの収集と分析が不可欠です。サーバーやアプリケーションが生成する膨大なログを効率的に管理し、リアルタイムで可視化できるツールが求められています。そこで登場するのがELKスタック(Elasticsearch、Logstash、Kibana)です。

本記事では、ELKスタックを使ってログ分析環境を構築し、可視化するまでの手順を詳しく解説します。


1. ELKスタックとは?

ELKスタックは、次の3つの主要コンポーネントで構成されます。

  • Elasticsearch: 分散型検索エンジン。ログデータの検索・分析を行う。
  • Logstash: データ収集・処理・変換を担当。
  • Kibana: データの可視化・分析を提供するダッシュボード。

また、最近ではFilebeatを追加し、軽量なログ収集を実現するElastic Stackとして利用されることも増えています。


2. ELKスタックの構築

ここでは、Dockerを用いてELK環境を構築する方法を紹介します。

2.1 前提条件

  • DockerおよびDocker Composeがインストールされていること
  • LinuxまたはMac環境(Windowsでも可能)

2.2 Docker Composeファイルの作成

docker-compose.yml
version: '3.7'

services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.0.0
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - ES_JAVA_OPTS=-Xms512m -Xmx512m
    ports:
      - "9200:9200"
    volumes:
      - elasticsearch_data:/usr/share/elasticsearch/data

  logstash:
    image: docker.elastic.co/logstash/logstash:8.0.0
    container_name: logstash
    volumes:
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf:ro
    depends_on:
      - elasticsearch
    ports:
      - "5044:5044"
      - "9600:9600"

  kibana:
    image: docker.elastic.co/kibana/kibana:8.0.0
    container_name: kibana
    environment:
      - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch

volumes:
  elasticsearch_data:
    driver: local

2.3 Logstashの設定ファイル

次に、logstash.conf を作成し、ログデータの取り込みルールを定義します。

input {
  beats {
    port => 5044
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}

output {
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]
    index => "logstash-%{+YYYY.MM.dd}"
  }
  stdout { codec => rubydebug }
}

3. ログの収集(Filebeatの導入)

より軽量なログ収集ツールとしてFilebeatを導入します。

3.1 Filebeatのインストール

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.0.0-linux-x86_64.tar.gz
tar xzvf filebeat-8.0.0-linux-x86_64.tar.gz
cd filebeat-8.0.0-linux-x86_64

3.2 Filebeatの設定変更

filebeat.yml を編集します。

filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /var/log/*.log

output.logstash:
  hosts: ["localhost:5044"]

3.3 Filebeatの起動

./filebeat -e

4. Kibanaでログを可視化

4.1 Kibanaにアクセス

ブラウザで http://localhost:5601 にアクセスします。

4.2 インデックスパターンの作成

  1. 「Stack Management」 → 「Index Patterns」 へ移動
  2. 「Create Index Pattern」 をクリック
  3. logstash-* を指定
  4. 「@timestamp」を時間フィールドとして設定

4.3 ダッシュボードの作成

  1. 「Discover」 タブでログを確認
  2. 「Visualize Library」 でグラフ作成
  3. 「Dashboard」 で可視化

5. まとめ

本記事では、ELKスタックを使ったログ分析環境の構築方法を紹介しました。

おさらい

  • Docker Composeを使ってELKスタックをセットアップ
  • Logstashを設定してログデータを処理
  • Filebeatを使ってログを収集
  • Kibanaでデータを可視化

これにより、リアルタイムでログを監視し、異常検知やパフォーマンス分析が可能になります。

ぜひ、あなたのシステムでもELKスタックを導入し、ログ分析を効率化してみてください!

Discussion