はじめに
この記事は、クラウド環境でのログ管理に興味を持つ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では、さまざまなアウトプットプラグインが用意されています。代表的なアウトプットプラグインとしては、以下のようなものが挙げられます。
アウトプットプラグイン名 | 機能 |
---|---|
elasticsearch | Elasticsearchにログデータを保存する |
stdout | 標準出力にログデータを出力する |
file | ファイルにログデータを保存する |
kinesis | Amazon 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を使用して可視化することができます。
関連記事
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2022.12.26
【AWS】オブジェクトストレージAmazon S3の特徴とユースケース
この記事では、実際にAmazon S3を使ったユースケースを3つご紹介致します。
- AWS
2023.03.01
インフラエンジニアは高収入?年収についての分析
今回は、そんなインフラエンジニアの年収について詳しく解説していきます。年収をアップさせる方法も紹介しているので、ぜひ参考にしてください。
- インフラエンジニア
- キャリア・学習法
2023.10.29
Gitの作業効率化!git stash と git diff の使い方を解説
ここでは表題の`git diff`, `git stash` に加え、`git status`という3つの重要なコマンドをそれぞれの使い方や役割、利点について解説します。
- インフラエンジニア
- git