Droplets上でLogstashを設定して、NginxのログをManaged OpenSearchに転送する
紹介
ウェブサーバーログを追跡することは、ウェブサイトを円滑に運営し、問題を解決し、ユーザーの行動を理解するために不可欠です。Nginxを使用している場合、アクセスログとエラーログが生成され、貴重な情報が含まれています。これらのログを管理し分析するために、Logstashを使用して処理し転送し、DigitalOceanのManaged OpenSearchを使用してデータをインデックス化し視覚化することができます。
このチュートリアルでは、DropletにLogstashをインストールし、Nginxログを収集するように設定し、それをDigitalOcean Managed OpenSearchに送信する手順を説明します。
前提条件
DigitalOceanのクラウドアカウントと稼働中のUbuntuドロップレット.
Nginxを設定し、Droplet上でログを生成する必要があります。Dropletにnginxをインストールするには、UbuntuにNginxをインストールする方法に関するこのチュートリアルを参照してください。
-
OpenSearchクラスターは稼働している必要があり、あなたはそれにアクセスできる必要があります。詳細については、OpenSearchクラスターの作成方法をご覧ください。
Nginx、Logstash、およびOpenSearchに慣れていることは有益です。
ユースケース
これを設定する必要があるかもしれません、もしあなたが:
- 監視とトラブルシューティング:リアルタイムログを分析してウェブサーバーのパフォーマンスとエラーを追跡する。
- パフォーマンスの分析: ウェブトラフィックパターンやサーバーメトリックについての洞察を得る。
- ログの集中管理:複数のNginxサーバーからのログを1つのOpenSearchインスタンスに集約し、管理を容易にします。
注意: セットアップ時間は約30分程度である必要があります.
ステップ1 - ドロップレットにLogstashをインストールする
Logstashは、ここで入手できるバイナリファイルや、オペレーティングシステムに特化したパッケージリポジトリを使用してインストールできます。管理や更新を簡単にするために、一般的にパッケージリポジトリの使用が推奨されます。Debian系のシステム(たとえばUbuntu)ではAPTパッケージマネージャを使用でき、Red Hat系のシステム(たとえばCentOSやRHEL)ではyumを使用できます。どちらの方法でも、Logstashがシステムのパッケージ管理インフラに適切に統合され、インストールとメンテナンスが簡素化されます。
このセクションでは、aptおよびyumパッケージマネージャを使用したLogstashのインストール手順を説明します。これにより、使用しているLinuxディストリビューションに関係なく、Droplet上でLogstashを構成できるようになります。
オペレーティングシステムを見つけるには、以下のコマンドを実行します:
cat /etc/os-release
APTベースのシステム(Ubuntu/Debian)のために
1.公開署名鍵をダウンロードしてインストールします。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
2. まだインストールされていない場合は、apt-transport-httpsをインストールします:
sudo apt-get install apt-transport-https
3. Logstash リポジトリ定義を apt ソースリストに追加して保存します:
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
注意: add-apt-repository コマンドを使用しないようにしてください。これにより、サポートされていない deb-src エントリが追加される可能性があります。deb-src エントリに関連するエラーが発生した場合は、それを /etc/apt/sources.list ファイルから削除してください。deb-src エントリを追加した場合、次のようなエラーが表示されます:
Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)
もし単にdeb-srcのエントリを/etc/apt/sources.listファイルから削除すれば、インストールは期待通りに動作するはずです。
4. 新しいリポジトリを含むようにパッケージインデックスを更新します:
sudo apt-get update
5. apt パッケージマネージャを使用して Logstash をインストールします:
sudo apt-get install logstash
6. Logstashを起動し、起動時に自動的に開始するように設定します。
sudo systemctl start logstash
sudo systemctl enable logstash
Logstashは現在、あなたのシステムにインストールされ、実行されています。
YUMベースのシステム(CentOS/RHEL)向け
1. Logstashリポジトリの公開署名キーをダウンロードしてインストールします。
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
2. Logstash のためのリポジトリファイルを /etc/yum.repos.d/ に作成します。例えば、logstash.repo という名前のファイルを作成します。ファイルを作成し、内容を更新するために以下の内容をコピーして貼り付けることができます:
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
リポジトリは使用準備が整っています。
3. YUMパッケージマネージャーを使用してLogstashをインストールします:
sudo yum install logstash
4. Logstashを起動し、起動時に自動的に開始されるようにします。
sudo systemctl start logstash
sudo systemctl enable logstash
Logstashは現在、あなたのシステムにインストールされ、実行されています。
ステップ2 - オープン検索出力プラグインのインストール
次のコマンドを実行することで、OpenSearch出力プラグインをインストールできます:
/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch
この logstash-output-opensearch プラグインリポジトリで、プラグインに関する詳細情報を見つけることができます。
ステップ3 - Logstashを設定してNginxログをOpenSearchに送信する
Logstashパイプラインは、入力、フィルタ、出力の3つの主要なステージで構成されています。Logstashパイプラインはプラグインを利用します。コミュニティプラグインを利用することも、自分自身のプラグインを作成することもできます。
- 入力: このステージはさまざまなソースからデータを収集します。Logstashは、ログファイル、データベース、メッセージキュー、クラウドサービスなどのデータソースを処理するための多数の入力プラグインをサポートしています。
- フィルター:このステージでは、入力ステージで収集されたデータを処理し、変換します。フィルターは、データを修正、強化、構造化して、より使いやすく、分析しやすくします。
- 出力:この段階では、処理されたデータを宛先に送信します。宛先には、データベース、ファイル、OpenSearchのようなデータストアが含まれます。
さあ、パイプラインを作りましょう。
1.次の内容で/etc/logstash/conf.d/nginx-to-opensearch.confにLogstash設定ファイルを作成します:
input {
file {
path => "/var/log/nginx/access.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => ["nginx_access"]
}
file {
path => "/var/log/nginx/error.log"
start_position => "beginning"
sincedb_path => "/dev/null"
tags => ["nginx_error"]
}
}
filter {
if "nginx_access" in [tags] {
grok {
match => { "message" => "%{IPORHOST:client_ip} - %{USER:ident} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:response} %{NUMBER:bytes} \"%{DATA:referrer}\" \"%{DATA:user_agent}\"" }
}
mutate {
remove_field => ["message", "[log][file][path]", "[event][original]"]
}
} else if "nginx_error" in [tags] {
grok {
match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:level}\] \[%{DATA:pid}\] \[%{DATA:tid}\] %{GREEDYDATA:error_message}" }
}
mutate {
remove_field => ["message", "[log][file][path]", "[event][original]"]
}
}
}
output {
if "nginx_access" in [tags] {
opensearch {
hosts => ["https://<OpenSearch-Hostname>:25060"]
user => "doadmin"
password => "<your_password>"
index => "nginx_access-%{+YYYY.MM.dd}"
ssl => true
ssl_certificate_verification => true
}
} else if "nginx_error" in [tags] {
opensearch {
hosts => ["https://<OpenSearch-Hostname>:25060"]
user => "doadmin"
password => "<your_password>"
index => "nginx_error-%{+YYYY.MM.dd}"
ssl => true
ssl_certificate_verification => true
}
}
}
置き換える :
OpenSearch-ホスト名をあなたのOpenSearchサーバーのホスト名で置き換えてください。<あなたのパスワード>あなたのOpenSearchパスワードで。
2. Logstashを再起動して新しい設定を適用します:
sudo systemctl restart logstash
3. Logstashのログを確認して、データが正しく処理されて転送されていることを確認します。
sudo tail -f /var/log/logstash/logstash-plain.log
nginx-to-opensearch.conf 設定の内訳
入力
このinputブロックは、ログを読み取るために2つのファイル入力を設定します。
Nginxログ: パス: /var/log/nginx/access.log(アクセスログ用) /var/log/nginx/error.log(エラーログ用) 開始位置: beginning – ログファイルの先頭から読み込みます。 Sincedbパス: /dev/null – 継続的な読み込みのためのトラッキングを無効にします。 タグ: アクセスログ用 ["nginx_access"] エラーログ用 ["nginx_error"]
注意: Logstashサービスが入力パスにアクセスできることを確認してください。
フィルター
filter ブロックはタグに基づいてログを処理します。
ログ処理: アクセスログ: アクセスログ形式を解析するためにgrokフィルターを使用し、client_ip、timestamp、method、request、http_version、response、bytes、referrer、およびuser_agentなどのフィールドを抽出します。元のmessageおよび特定のメタデータフィールドを削除します。
エラーログ: nginx_errorタグをチェックし、timestamp、level、pid、tid、error_messageなどのフィールドを抽出するためにgrokフィルターを適用します。また、messageおよびメタデータフィールドを削除します。
出力
outputブロックは、イベントをタグに基づいてOpenSearchにルーティングします:
OpenSearchへのルーティング: アクセスログとエラーログの両方に対して、次のことを指定します: ホスト: OpenSearchインスタンスのURL。 ユーザー: 認証のためにdoadmin。 パスワード: あなたのOpenSearchパスワード。 インデックス: アクセスログ用のnginx_access-%{+YYYY.MM.dd}、エラーログ用のnginx_error-%{+YYYY.MM.dd} SSL設定: SSLと証明書の検証を有効にします。
ステップ4 - OpenSearchの設定
1. ウェブブラウザを開き、OpenSearchダッシュボードのURLにアクセスします。
https://<OpenSearch-Hostname>
OpenSearch-HostnameをあなたのOpenSearchサーバーのホスト名に置き換えてください。
2.インデックスパターンを作成します。a. 左のサイドバーで、管理 > ダッシュボード管理 > インデックスパターンに移動します。b. 右上のインデックスパターンを作成をクリックします。c. インデックスパターンとしてnginx_access-*またはnginx_error-*を入力し、Logstashによって作成されたすべてのインデックスと一致させて、次のステップをクリックします。d. インデックスパターンを作成をクリックします。
3.インデックスパターンが正常に作成され、インデックスパターンのリストに表示されていることを確認してください。
4. 左のサイドバーで「Discover」に移動し、作成したインデックスパターン(nginx_access-*またはnginx_error-*)を選択します。ログエントリが表示され、正しくインデックスされていることを確認してください。
5. ビジュアリゼーションとダッシュボードを作成します。詳細については、「OpenSearchでのダッシュボードの作成方法」を参照してください。
トラブルシューティング
接続を確認してください
LogstashがOpenSearchに接続できることを確認するには、接続性をテストします。
curl -u doadmin:your_password -X GET "https://<OpenSearch-Hostname>:25060/_cat/indices?v"
置き換える :
OpenSearch-ホスト名をあなたのOpenSearchサーバーのホスト名で置き換えてください。<あなたのパスワード>あなたのOpenSearchのパスワードと一緒に。
データ取り込み
以下のcurlコマンドを使用して、データがOpenSearchで適切にインデックスされていることを確認できます:
curl -u doadmin:your_password -X GET "http://<OpenSearch-Hostname>:25060/nginx-logs-*/_search?pretty"
置き換える :
OpenSearch-ホスト名をあなたのOpenSearchサーバーのホスト名で置き換えてください。<あなたのパスワード>と共にあなたの OpenSearch パスワード
ファイアウォールとネットワーク構成
ファイアウォールルールとネットワーク設定がポート25060でLogstashとOpenSearchの間のトラフィックを許可していることを確認してください。
結論
このガイドでは、Logstashを設定してNginxのログを収集し、OpenSearchに転送する方法を学びました。
あなたは、Linuxディストリビューションに応じてaptまたはyumパッケージマネージャの使い方を確認し、Droplet上でLogstashを起動しました。また、Nginxのログが正しく解析されOpenSearchに送信されるようにLogstashの設定ファイルを作成し、調整しました。それから、OpenSearch Dashboardsでインデックスパターンを設定して、ログが正しくインデックスされているか、分析のために可視化されているかを確認しました。これらのステップが完了したことで、LogstashがNginxのログを収集し、それをOpenSearchに送信する動作する設定を持っているはずです。この設定により、OpenSearchの強力な検索および可視化ツールを使用して、サーバーログを分析できるようになります。
問題が発生した場合は、提供したトラブルシューティングのヒントを確認し、さらなる助けとしてLogstashおよびOpenSearchのドキュメントを参照してください。定期的な監視を行うことで、ログシステムがスムーズかつ効果的に運用されます。
