1. ホーム
  2. 記事一覧
  3. AWSでLogstashの環境構築と使い方を学ぶ

2024.02.07

AWSでLogstashの環境構築と使い方を学ぶ

はじめに

この記事は、クラウド環境でのログ管理に興味を持つITプロフェッショナル、特にAWSを使用しているシステム管理者、開発者、そしてDevOpsエンジニアを対象にしています。Logstashという強力なツールを用いて、効果的なログ収集、加工、および可視化の方法を学びます。AWS上でのLogstashの設定から、基本的な使い方まで、実践的な知識を提供することを目指しています。

Logstashとは

LogstashはElastic社が開発した「ログデータの収集・加工・可視化ツール」です。Logstashは、多様なデータソースからログデータを収集し、フィルタを通じて加工してから、ElasticsearchやOpenSearchなどのデータストアに転送することができます。これらのデータは、KibanaやOpenSearch Dashboardsを使用して可視化することができます。

https://www.elastic.co/jp/logstash

Logstashのメリット

Logstashの最大のメリットは、その柔軟性と拡張性にあります。多くの種類のデータソースをサポートし、その中には広く使用されているsyslogも含まれます。これにより、システムやアプリケーションからのログデータを簡単に取り込むことができます。豊富なフィルタとプラグインを通じて、データの加工と構築が可能です。さらに、Elasticsearchとの高い互換性を持ち、大規模なデータセットの分析と可視化を容易に行うことができます。このツールは、特に大量のログデータをリアルタイムに処理し、意味のある情報に変換する必要がある環境に適しています。

syslogについてはこちらの記事で詳しく解説しています。

https://envader.plus/course/12/scenario/1132

AWSでLogstashの環境構築

このセクションでは、AWS上でLogstashを設定し、ログデータをOpenSearchに送信する方法について説明します。このプロセスを通じて、効率的なログ管理システムを構築できるようになります。

前提条件

AWSアカウント

AWSアカウントが必要です。まだアカウントをお持ちでない場合は、AWSのウェブサイトから作成できます。

基本的なAWSの知識

AWSの基本的な操作、特にEC2(Elastic Compute Cloud)とIAM(Identity and Access Management)に関する知識があると有利です。

OpenSearchサービスのセットアップ

AWSのOpenSearchサービスを使用するためには、事前にOpenSearchクラスターのセットアップが必要です。

ElasticsearchとLogstashの基本知識

Elasticsearch(OpenSearch)とLogstashの基本的な概念と操作方法について理解しておくことが重要です。

Terraformコードの概要

プロバイダの設定

TerraformでAWSリソースを管理するためには、AWSプロバイダを設定する必要があります。

EC2インスタンスの設定

Logstashを実行するためのEC2インスタンスを設定します。

セキュリティグループの設定

EC2インスタンスのセキュリティグループを設定して、必要なポートを開けます。

IAMロールとポリシーの設定

LogstashがOpenSearchと通信できるように、適切なIAMロールとポリシーを設定します。

ユーザーデータスクリプト

EC2インスタンス起動時にLogstashをインストールし、設定ファイルをセットアップするためのユーザーデータスクリプトを提供します。

サンプルTerraformコード

# 1. AWSプロバイダの設定: AWSリソースを管理するためのリージョンを指定します。
provider "aws" {
 region = "ap-northeast-1"
}

# 2. EC2インスタンスの設定: Logstashを実行するためのEC2インスタンス。
resource "aws_instance" "logstash" {
 ami      = "ami-0abcdef1234567890" # 適切なAMIを指定する必要があります。
 instance_type = "t2.medium"

 user_data = <<-EOF
        #!/bin/bash
        sudo yum update -y
        sudo yum install -y java-1.8.0-openjdk
        wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo rpm --import -
        sudo yum install -y logstash
        # Logstashの設定ファイルをここに配置
       EOF

 tags = {
  Name = "LogstashInstance"
 }
}

# 3. セキュリティグループの設定: Logstashが使用するEC2インスタンスのセキュリティグループ。必要なポートを開放します。
resource "aws_security_group" "logstash_sg" {
 name    = "logstash_sg"
 description = "Allow Logstash traffic"

 ingress {
  from_port  = 5044 # Logstashがデータを受信するポート
  to_port   = 5044
  protocol  = "tcp"
  cidr_blocks = ["0.0.0.0/0"]
 }

 egress {
  from_port  = 0
  to_port   = 0
  protocol  = "-1"
  cidr_blocks = ["0.0.0.0/0"]
 }
}

# 4. IAMロールとポリシーの設定: この例では省略されていますが、LogstashがAWSサービス(例えばOpenSearch)と通信するためのIAMロールとポリシーを設定する必要があります。

Logstashの基本的な使い方

Logstashは非常に柔軟性が高く、多種多様なログソースからのデータ収集、加工、そしてそれらのデータの可視化を可能にするツールです。以下のステップに従って、基本的なLogstashの使用方法を学びます。

Logstashの設定ファイルの解説

Logstashの設定ファイルは、Logstashがどのようにデータを収集、加工、出力するかを定義するために使用されます。設定ファイルは通常、.conf ファイルとして保存され、主にinput、filter、outputの三つのセクションで構成されています。

ログの収集

ログの収集は、インプットプラグインを使用して行われます。インプットプラグインは、ログデータを収集する機能を提供します。

入力設定

  • Logstashは多様な入力ソースからデータを収集できます。例えば、ファイル、データベース、メッセージキューなどです。
  • 入力設定は、Logstashの設定ファイル内で定義します。例えば、特定のディレクトリ内のログファイルを監視するには、以下のように設定します。
    input {
      file {
        path => "/path/to/logfiles/*.log"
        start_position => "beginning"
      }
    }

ログの加工

ログの加工は、フィルタプラグインを使用して行われます。フィルタプラグインは、ログデータを加工する機能を提供します。

Logstashには、さまざまなフィルタプラグインが用意されています。代表的なフィルタプラグインとしては、以下のようなものがあります。

フィルタプラグイン名機能
grokログメッセージの解析を行う
mutateログデータのフィールドを抽出または変換する
dateログデータの日付や時刻を変換する
geoipログデータのIPアドレスから位置情報を取得する

フィルタ設定

  • 収集したデータは、フィルタを通じて加工されます。これには、データの分割、変換、削除などが含まれます。
  • 例えば、ログメッセージを解析して特定のフィールドを抽出するには、grokフィルタを使用できます。
    filter {
      grok {
        match => { "message" => "%{COMBINEDAPACHELOG}" }
      }
    }

ログの可視化

ログデータの加工が完了したら、ログデータを保存したり、送信したりするアウトプットプラグインを使用して、ログデータを出力します。

アウトプットプラグインは、ログデータを保存したり、送信したりする機能を提供します。Logstashでは、さまざまなアウトプットプラグインが用意されています。代表的なアウトプットプラグインとしては、以下のようなものが挙げられます。

アウトプットプラグイン名機能
elasticsearchElasticsearchにログデータを保存する
stdout標準出力にログデータを出力する
fileファイルにログデータを保存する
kinesisAmazon Kinesisにログデータを送信する

1. 出力設定

  • 加工されたログデータは、ElasticsearchやOpenSearchなどのストレージに送信され、後で可視化のために利用されます。
  • Elasticsearchへの出力設定例は以下の通りです。
    output {
      opensearch {
        hosts => ["http://localhost:9200"]
        index => "logstash-%{+YYYY.MM.dd}"
      }
    }

2. KibanaやOpenSearch Dashboardsの使用

  • ElasticsearchやOpenSearchに保存されたデータは、KibanaやOpenSearch Dashboardsを使用して可視化できます。
  • これらのツールでは、ダッシュボードを作成し、データをグラフ、チャート、マップなどで表示することができます。

まとめ

Logstashは、多様なデータソースからログデータを収集し、加工してから、ElasticsearchやOpenSearchなどのデータストアに転送するツールです。AWS上でLogstashを使用する場合、EC2インスタンスを準備し、Logstashをインストールし、セキュリティグループとIAMポリシーを設定するだけで、基本的な環境を構築できます。

Logstashを使用してログを収集し、フィルタを通じて加工することで、特定のフィールドを抽出し、データを整形することができます。加工されたログデータは、ElasticsearchやOpenSearchに送信され、KibanaやOpenSearch Dashboardsを使用して可視化することができます。

関連記事

https://aws.amazon.com/jp/what-is/opensearch/

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事