ウェブサイト検索

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のドキュメントを参照してください。定期的な監視を行うことで、ログシステムがスムーズかつ効果的に運用されます。

関連記事: