Logstash経由でApacheログをOpenSearchに転送する

0 株式
0
0
0
0

導入

効率的なウェブサーバーログ管理は、ウェブサイトのパフォーマンス維持、問題のトラブルシューティング、ユーザー行動の洞察を得るために不可欠です。Apacheは最も人気のあるウェブサーバーの1つであり、貴重な情報を含むアクセスログとエラーログを生成します。これらのログを効果的に管理・分析するには、Logstashを使用して処理し、DigitalOceanのマネージドOpenSearchに送信してインデックス作成と可視化を行うことができます。.

このチュートリアルでは、Droplet に Logstash をインストールし、Apache ログを収集するように設定し、分析のために Managed OpenSearch に送信する手順を説明します。.

前提条件
  • Apache Web サーバーがインストールされた Droplet/s。.
  • マネージド OpenSearch クラスター

ステップ1 – Logstashをインストールする

Logstashはバイナリファイルまたはパッケージリポジトリ経由でインストールできます。管理とアップデートを容易にするため、通常はパッケージリポジトリの使用をお勧めします。.

このセクションでは、APT および YUM パッケージ マネージャーを使用して Droplet に Logstash をインストールする手順を説明します。.

オペレーティング システムを特定しましょう。

cat /etc/os-release
APTベースのシステム(Ubuntu/Debian)の場合

公開署名キーをダウンロードしてインストールします。

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

続行する前に、Debian に apt-transport-https パッケージをインストールする必要がある場合があります。

sudo apt-get install apt-transport-https

リポジトリ定義を /etc/apt/sources.list.d/elastic-8.x.list に保存します。

echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

Logstashリポジトリを追加するには、上記のechoメソッドを使用してください。add-apt-repositoryはdeb-srcエントリも追加しますが、ソースパッケージは提供されていないため使用しないでください。deb-srcエントリを追加した場合、次のエラーが表示されます。

Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

/etc/apt/sources.list ファイルから deb-src エントリを削除するだけで、インストールは期待どおりに動作するはずです。.

sudo apt-get update を実行すると、リポジトリが使用可能になります。以下のコマンドで使用できます。

sudo apt-get update && sudo apt-get install logstash
YUMベースのシステム(CentOS/RHEL)の場合

公開署名キーをダウンロードしてインストールします。

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

/etc/yum.repos.d/logstash.repo ファイルに以下の行を追加してください。ファイルの更新と作成には「t」を使用してください。.

sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

タンクはすぐに使用できます。以下の製品で使用できます。

sudo yum install logstash

詳細については、Logstash インストール ガイドを参照してください。.

ステップ2 – Logstashを設定してログをOpenSearchに送信する

Logstashパイプラインは、入力、フィルタリング、出力という3つの主要なステージで構成されています。Logstashパイプラインはプラグインを使用します。コミュニティプラグインを使用することも、独自のプラグインを作成することもできます。.

  • 入力:このステージでは、さまざまなソースからデータを収集します。Logstashは、ログファイル、データベース、メッセージキュー、クラウドサービスなどのデータソースを管理するための複数の入力プラグインをサポートしています。.
  • フィルター:この段階では、入力段階で収集されたデータを処理および変換します。フィルターは、データを変更、拡充、構造化することで、より有用で分析的なデータにすることができます。.
  • 出力: このステージでは、処理済みのデータを出力先に送信します。出力先には、データベース、ファイル、OpenSearch などのデータストアなどが含まれます。.

ステップ3 – Open Search Outputプラグインをインストールする

OpenSearch 出力プラグインは、次のコマンドを実行してインストールできます。

/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

詳細については、logstash-output-opensearch-plugin リポジトリをご覧ください。.

それではパイプラインを作成しましょう。

/etc/logstash/conf.d/ パスに apache_pipeline.conf という新しいファイルを作成し、次の内容をコピーします。.

input {
file {
path => "/var/log/apache2/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_access"
}
file {
path => "/var/log/apache2/error.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => "apache_error"
}
}
filter {
if "apache_access" in [tags] {
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}
} else {
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}
}
}
output {
if "apache_access" in [tags] {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_access"
ssl_certificate_verification => true
}
} else {
opensearch {
hosts => "https://<OpenSearch-Hostname>:25060"
user => "doadmin"
password => "<your_password>"
index => "apache_error"
ssl_certificate_verification => true
}
}
}

OpenSearchサーバーのホスト名とOpenSearch パスワードに置き換えます。.

上記の構成を詳しく見てみましょう。.

  • INPUT: イベントのソースを設定するために使用します。ここではファイル入力プラグインを使用します。.
  • path => “/var/log/apache2/access.log”: Logstash が読み取る Apache アクセス ログ ファイルへのパスを指定します。.

Logstash サービスが入力パスにアクセスできることを確認してください。.

  • start_position => “beginning”:Logstash がログファイルの読み取りを開始する位置を指定します。“beginning” は、Logstash がファイルの最後ではなく最初から処理を開始することを示します。
  • sincedb_path => “/dev/null”:sincedbファイルへのパスを指定します。sincedbファイルは、Logstashがログファイル内の現在の位置を追跡するために使用され、再起動やクラッシュが発生した場合でも中断した場所から再開できるようにします。.
  • tags => “apache_access”:この入力から読み取ったイベントにタグを割り当てます。タグはLogstashでイベントを識別およびフィルタリングするのに役立ち、出力ステージや設定フィルタリングなどの下流でよく使用されます。ここでは後者にタグを使用します。
  • FILTER: イベントを処理するために使用されます。.

条件文から始める:

(if "apache_access" in [tags]):

これは、受信ログイベントの [tags] セクションに apache_access タグが存在するかどうかを確認します。この条件を使用して、Apache のアクセスログとエラーログに適切な GROK フィルターを適用します。.

  • Grok フィルター (Apache アクセス ログ用):
grok {
match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}

Grokフィルター %{HTTPD_COMBINEDLOG} は、Logstash の定義済みパターンで、Apache Combined Access Log 形式を解析するために使用されます。受信したイベントのメッセージ本文から、IP アドレス、タイムスタンプ、HTTP メソッド、URI、ステータスコードなどのフィールドを抽出します。.

  • Mutate Filter Remove (オプション): Apache ログを解析した後、mutate-remove を使用していくつかのフィールドを削除します。.
mutate {
remove_field => [ "message","[log][file][path]","[event][original]" ]
}
  • 別の条件:apache_access タグが [tags] に含まれていない場合、else ブロックが実行されます。このelse ブロックには、Apache エラーログ用の別の GROK フィルターが含まれています。.
grok {
match => { "message" => "%{HTTPD24_ERRORLOG}" }
}

この%{HTTPD24_ERRORLOG}フィルターは、Apacheエラーログ形式に一致するメッセージを解析します。タイムスタンプ、ログレベル、エラーメッセージなど、エラーログに関連するフィールドを抽出します。.

GROK パターンは次の場所にあります。 https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns 探す。.

  • 出力: プラグインは出力イベントを特定の宛先に送信します。.

出力ブロックはif条件で始まります。ここでは条件文を使用しています。

if "apache_access" in [tags] {}

条件を使用して、OpenSearch へのログを apache_error と apache_access の 2 つの別々のプロファイルにルーティングする場合。.

OpenSearch Output プラグインを確認してみましょう。

hosts => "https://XXX:25060" Your Open search Hostname
user => "doadmin" Your Open search Username
password => "XXXXX" OpenSearch Password
index => "apache_error" Index name in OpenSearch
ssl_certificate_verification => true Enabled SSL certificate verification

ステップ4 – Logstashを起動する

パイプラインを設定したら、Logstash サービスを開始します。

systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service

ステップ5 – トラブルシューティング

接続を確認してください。

接続をテストすることで、Logstash が OpenSearch に接続できることを確認できます。

curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"

OpenSearchサーバーのホスト名と、 OpenSearch の資格情報に置き換えます。.

データの取り込み

データが OpenSearch で適切にインデックスされていることを確認します。

curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"

OpenSearchサーバーのホスト名と、 OpenSearchの認証情報に置き換えてください。同様に、インデックスという名前で。.

ファイアウォールとネットワーク構成

ファイアウォール ルールとネットワーク設定で、ポート 25060 上の Logstash と OpenSearch 間のトラフィックが許可されていることを確認してください。.

ログ

Logstash に関連するログは、/var/log/logstash/logstash-plain.log にあります。.

結果

このガイドでは、Logstashを設定してApacheログを収集し、OpenSearchに送信します。以下に、このガイドで説明した内容を簡単にまとめます。

Logstash のインストール: Linux ディストリビューションに応じて APT または YUM パッケージ マネージャーを使用して、Droplet に Logstash をインストールする方法について説明しました。.

Logstash 構成: Apache ログが適切に解析され、OpenSearch に送信されるように、Logstash 構成ファイルを作成して構成しました。.

OpenSearch での検証: レポートが適切にインデックス化され、分析用に表示されるかどうかを確認するために、OpenSearch ダッシュボードにリスト テンプレートを設定します。.

これらの手順を完了すると、Logstash が Apache ログを収集して OpenSearch に送信する設定が機能するようになります。.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

あなたも気に入るかもしれない