ポイント: nginxログを読み取り、ElasticSearchに送信するためのFilebeatの設定に関する指示が詳細に説明されており、ログ分析を容易にするためにJSON形式の使用が強調されています。主な手順には、Elastic Cloudの設定、Filebeatのインストール、およびnginxモジュールの構成が含まれます。
- Filebeatのnginxモジュールを使用して、ログの自動JSON変換を行います。
- Elastic CloudとFilebeatの構成に関する特定の設定手順に従います。
ここでは、nginxウェブサーバーログをElasticSearchで読み書きする方法を説明します。これを行うためにFilebeatを使用します。Filebeatにはnginxモジュールがあり、これはnginxウェブサーバーログの各行をJSON形式に変換するように事前プログラムされています。JSONを使用することにより、ElasticSearchはこれらのログをより簡単にクエリおよび分析できるようになります。注意:この設計にElasticSearch Logstashを追加することもできますが、FilebeatとLogstashの間にそれを置くことは一般的な慣行ですが、ここでは冗長なようです。Logstashを使用する場合のユースケースについては、別の投稿で説明します。必要なもの
- nginxウェブサーバー(または下に示すサンプルをダウンロードして、対応するフォルダーに配置してください)
- Filebeat
- Elastic Cloudアカウント(または独自のサーバーを設定)
- Ubuntu(または他のLinuxディストリビューション)。ここではUbuntu 16.04を使用します。
Elastic Cloudを設定 自分のローカルにインストールされたElasticSearchのインスタンスを使用できます。しかし、ここではElastic Cloudを使用します。まだシステムを持っていない場合は、ここに書いた手順に従ってElasticSearchをクラウドで設定してください。以下のクラウドID、パスワード、Kibana URL、およびElasticsearch URLをメモしてください。nginxをインストール ウェブサーバーをまだ持っていない場合は、Linuxをインストールするか、/var/log/nginxフォルダーにいくつかのサンプルnginxファイルをダウンロードします。
sudo apt-get install nginx
データを作成 ウェブサーバーにあまりデータがない場合は、より多くのログエントリを取得するために、nginxログに直接変更し、これらの2つのログをダウンロードします。
sudo cd /var/log/nginx
sudo wget http://igm.univ-mlv.fr/~cherrier/download/L1/access.log
wget https://raw.githubusercontent.com/respondcreate/nginx-access-log-frequency/master/example-access.log
filebeatをインストール filebeatsをダウンロードしてからインストールします:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.0.1-amd64.deb
sudo dpkg -i filebeat-7.0.1-amd64.deb
次に、nginx filebeatモジュールを有効にします。
sudo filebeat modules enable nginx
有効なモジュールのリストを表示すると、nginxがリストに表示されます。
sudo filebeat modules list
Enabled:
nginx
Disabled:
apache
auditd
elasticsearch
クラウドIDとユーザーID、パスワードをFilebeat設定ファイルに追加します。これにより、IPアドレスやポートを入力する必要がなくなり、インスタンスへの接続が簡単になります。
sudo vi /etc/filebeat/filebeat.yml
cloud.id: 'xxxx'
cloud.auth: 'elastic:xxxxx'
このコマンドを実行して、nginxダッシュボードをKibanaにプッシュします。これにより、ログの処理も開始されます。
sudo filebeat setup -e
Filebeatのその後の実行には、次のように実行します。-eオプションは、ログをstdoutに出力します。
sudo filebeat -e
Filebeatは、/var/log/nginx内のすべてのログを処理します。それを確認するには、ElasticSearchに対してインデックスをクエリし、以下のURLをあなたのESインスタンスのURLに置き換えます。ユーザーID:パスワードオプションは、$pwd環境変数に保存されていることに注意してください。
curl --user $pwd -X GET 'https://58571402f5464923883e7be42a037917.eu-central-1.aws.cloud.es.io:9243/_cat/indices?v'
インデックス名は、filebeatという単語と今日の日付のいくつかの組み合わせになります。
green open filebeat-7.0.1-2019.06.12-000001 baiHMtkcSqO1SojJUW1mVg 1 1 8984 0 6.2mb 3.1mb
Kibanaを開く Kibanaを初めて使用する場合は、インデックスパターンを設定するように求められます。すでに使用している場合は、管理画面に移動して追加します。
インデックスパターンを追加するということは、クエリを実行する際に一致させたい既存のインデックスの文字数を選択することを意味します。つまり、filebeat*と入力すると、filebeatで始まるすべてのインデックスが読み込まれます。日付を追加すると、今日の解析済みログが読み込まれます。もちろん、nginx以外の種類のログを解析する場合は役に立ちません。これは別の投稿で説明します。単にf-i-l-eの文字を入力し始めると、どのESドキュメントインデックスが一致するかが表示されます:
Kibanaは、タイムスタンプとして使用できるフィールドを尋ねてきます。これは、最初にログを収集する目的である時系列分析を生成できるようにするためです。今は@timestampを選択してください。これはESによって生成されます。他のデータがない場合はそれを使用できます。
次に、発見画面(すなわち、ナビゲーションバーの左上ボタン)からレコードをブラウズできます。Kibanaは、使用するインデックスパターンを尋ねてきます。レコードをクリックして展開します。下のレコードは全体を表示するには長すぎます。そのため、上下にスクロールしてすべてを見ることができます。
次に、Visualize画面をクリックし、再度左側のナビゲーションバーから選択します。Filbeatがすでにインストールした異なるnginxダッシュボードがあります。下のものは、時間に対するウェブサイトのヒットを示しています。
この視覚化(別名ダッシュボード)は、選択した時間範囲内であなたのウェブサイトにアクセスしたユーザーの位置を示しています。
ElasticSearchガイド
- 初心者のためのElasticSearchチュートリアル:ElasticSearchの基本
- ElasticSearchでApache Hiveを使用する
- Apache SparkとElasticSearchを使用する
- Curl ElasticSearchコマンドチートシート
- Spark ElasticSearch Hadoopの更新とUpsertの例と説明
- Pythonを使用してApache SparkデータをElasticSearchに書き込む方法
- ElasticSearch検索構文とブールおよび集計検索
- ElasticSearchネストされたクエリ:埋め込まれたドキュメントを検索する方法
- ElasticSearchジョイン:Has_Child、Has_parentクエリ
- Elasticバージョン7クラスターの設定方法
- nginxとElasticSearchのためのFilebeatの設定方法
- BeatsとLogstashを使用してElasticSearchにログを送信する
- Logstashを使用してCSVファイルをElasticSearchにロードする方法
- ElasticSearch集計の説明
- ELKスタックとは何ですか?
- Logstash 101:データ処理パイプラインでのLogstashの使用
- Kibanaを使用してElasticSearchでLuceneおよびKibanaクエリ言語を実行する
- ElasticSearch機械学習
- Elastic Enterprise Searchのインストール方法
- GitHubでElastic Enterprise Searchを使用する方法
これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を代表するものではありません。