Apache ログデータを表示および分析する場合、Filebeat を使用してデータを収集できます。次に、Alibaba Cloud Logstash を使用してデータをフィルタリングし、処理済みデータを分析のために Alibaba Cloud Elasticsearch クラスタに転送します。このトピックでは、Filebeat を使用して Apache ログデータを収集する方法について説明します。
手順
手順 1: 準備を行う
同じバージョンで、同じ仮想プライベートクラウド (VPC) にデプロイされている Elasticsearch クラスタと Logstash クラスタを作成します。
詳細については、「Alibaba Cloud Elasticsearch クラスタを作成する」または「Alibaba Cloud Logstash クラスタを作成する」をご参照ください。
Elasticsearch クラスタの [自動インデックス作成] 機能を有効にします。
セキュリティ上の理由から、Alibaba Cloud Elasticsearch はデフォルトで [自動インデックス作成] 機能を無効にしています。ただし、Beats はこの機能に依存しています。シッパーの作成時に [出力] に [elasticsearch] を選択した場合は、自動インデックス作成機能を有効にする必要があります。詳細については、「YML ファイルを設定する」をご参照ください。
Elasticsearch クラスタと Logstash クラスタと同じ VPC に Alibaba Cloud Elastic Compute Service (ECS) インスタンスを作成します。
詳細については、「カスタム起動タブでインスタンスを作成する」をご参照ください。
重要Beats は、Alibaba Cloud Linux (Alinux)、Red Hat Enterprise Linux (RHEL)、および CentOS のみをサポートしています。
Alibaba Cloud Filebeat は、同じリージョンにあり、Alibaba Cloud Elasticsearch クラスタと Alibaba Cloud Logstash クラスタと同じ VPC にデプロイされている ECS インスタンスからのみログを収集するために使用できます。Alibaba Cloud Filebeat を使用して、インターネット上にデプロイされているソースからログを収集することはできません。
ECS インスタンスに HTTP Daemon (HTTPd) をインストールします。
可視化ツールを使用して Apache ログデータの分析と表示を容易にするために、httpd.conf ファイルでログデータの形式として JSON を定義することをお勧めします。詳細については、「手順 1: Apache HTTP Server をインストールして設定する」をご参照ください。この例では、次の設定が使用されています。
LogFormat "{\"@timestamp\":\"%{%Y-%m-%dT%H:%M:%S%z}t\",\"client_ip\":\"%{X-Forwa rded-For}i\",\"direct_ip\": \"%a\",\"request_time\":%T,\"status\":%>s,\"url\":\"%U%q\",\"method\":\"%m\",\"http_host\":\"%{Host}i\",\"server_ip\":\"%A\",\"http_referer\":\"%{Referer}i\",\"http_user_agent\":\"%{User-agent}i\",\"body_bytes_sent\":\"%B\",\"total_bytes_sent\":\"%O\"}" access_log_json # 元の CustomLog 設定を CustomLog "logs/access_log" access_log_json に変更します。 // Translated comment
ECS インスタンスに Cloud Assistant と Docker をインストールします。
詳細については、「Cloud Assistant エージェントをインストールする」および「Docker をインストールする」をご参照ください。
手順 2: Filebeat シッパーを設定してインストールする
Alibaba Cloud Elasticsearch コンソール にログオンします。
Beats データシッパーページに移動します。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションペインで、[beats データシッパー] をクリックします。
オプション: [beats データシッパー] ページに初めてアクセスする場合は、表示されるメッセージに表示される情報を確認し、[OK] をクリックして、システムがアカウントのサービスリンクロールを作成することを承認します。
説明Beats がさまざまなデータソースからデータを収集する場合、Beats はサービスリンクロールとロールに指定されたルールに依存します。サービスリンクロールを削除しないでください。削除すると、Beats の使用に影響します。詳細については、「Elasticsearch サービスリンクロール」をご参照ください。
[シッパーの作成] セクションで、ポインタを [filebeat] の上に移動し、[ECS ログ] をクリックします。
シッパーを設定してインストールします。
詳細については、「ECS インスタンスのログを収集する」および「シッパーの YML 設定ファイルを準備する」をご参照ください。次の図は、この例で使用されている設定を示しています。
説明[出力] に Logstash を選択し、Logstash クラスタの ID を選択する必要があります。そのため、シッパー YML 設定で出力を指定する必要はありません。
[Filebeat ファイルパス] をデータソースが格納されているパスに設定する必要があります。さらに、シッパー YML 設定でログ収集を有効にし、ログデータの格納に使用するパスを設定する必要があります。
[次へ] をクリックします。
[シッパーのインストール] ステップで、シッパーをインストールする ECS インスタンスを選択します。
説明選択した ECS インスタンスは、上記の必須条件を満たしている必要があります。
シッパーを起動し、シッパーがインストールされているかどうかを確認します。
[起動] をクリックします。
その後、[シッパーの起動] メッセージが表示されます。
[beats シッパーに戻る] をクリックします。荷送人を管理[beats データシッパー] ページの セクションで、インストールされているシッパーを表示します。
シッパーの [状態] が [有効 1/1] に変わったら、インスタンスの表示[アクション] 列の をクリックします。
[インスタンスの表示] パネルで、シッパーが ECS インスタンスにインストールされているかどうかを確認します。[インストール済みシッパー] の値が [通常のハートビート] の場合、シッパーはインストールされています。
手順 3: データをフィルタリングして同期するための Logstash パイプラインを設定する
Alibaba Cloud Elasticsearch コンソールの左側のナビゲーションペインで、[logstash クラスタ] をクリックします。
表示されるページで、Logstash クラスタを見つけて、パイプラインの管理[アクション] 列の をクリックします。
[パイプライン] ページで、[パイプラインの作成] をクリックします。
パイプラインを設定します。
詳細については、「設定ファイルを使用してパイプラインを管理する」をご参照ください。この例では、次の設定が使用されています。
input { beats { port => 8000 } } filter { json { source => "message" remove_field => "@version" remove_field => "prospector" remove_field => "beat" remove_field => "source" remove_field => "input" remove_field => "offset" remove_field => "fields" remove_field => "host" remove_field => "message" } } output { elasticsearch { hosts => ["http://es-cn-mp91cbxsm00******.elasticsearch.aliyuncs.com:9200"] user => "elastic" password => "<your_password>" index => "<your_index>" } }
パラメータ
説明
input
シッパーによって収集されたデータを受信します。
filter
収集されたデータをフィルタリングします。 json プラグインは、メッセージデータをデコードするために使用されます。 remove_field パラメータは、削除されるフィールドを指定します。
説明filter パートの設定は、現在のテストシナリオにのみ適用されます。ビジネス要件に基づいて filter パートを設定できます。サポートされている filter プラグインについては、「Filter plugins」をご参照ください。
output
Elasticsearch クラスタにデータを転送します。次のパラメータが関係します。
hosts: このパラメータを Elasticsearch クラスタのエンドポイントに設定します。エンドポイントは、クラスタの [基本情報] ページで取得できます。詳細については、「クラスタの基本情報を表示する」をご参照ください。
<your_password>: <your_password> を Elasticsearch クラスタへのアクセスに使用するパスワードに置き換えます。
<your_index>: <your_index> をデータの転送先インデックスの名前に置き換えます。
手順 4: 収集されたデータを表示する
Elasticsearch クラスタの Kibana コンソールにログオンし、プロンプトに従って Kibana コンソールのホームページに移動します。
Kibana コンソールへのログオン方法の詳細については、「Kibana コンソールにログオンする」をご参照ください。
説明この例では、Elasticsearch V6.7.0 クラスタを使用しています。他のバージョンのクラスタでの操作は異なる場合があります。コンソールでの実際の操作が優先されます。
表示されるページの左側のナビゲーションペインで、[開発ツール] をクリックします。
表示されるページの [コンソール] タブで、次のコマンドを実行して収集されたデータを表示します。
GET <your_index>/_search
説明<your_index> を Logstash パイプラインの output パートで設定したインデックス名に置き換えます。
左側のナビゲーションペインで、[検出] をクリックします。表示されるページで、右上隅に期間を指定します。次に、指定した期間内に収集されたデータの詳細を表示します。
説明収集されたデータを表示する前に、<your_index> で指定されたインデックスのインデックスパターンが作成されていることを確認してください。Kibana コンソールでインデックスパターンを作成するには、左側のナビゲーションペインで [管理] をクリックします。表示されるページで、 [kibana] セクションの インデックスパターンを作成 をクリックし、 をクリックします。指示に従ってインデックスパターンを作成します。