前書き

Logstashは、ログを集中化および分析するための強力なツールです。これは、環境の提供と概要、およびサーバーの問題の特定に役立ちます。 ELKスタック(Elasticsearch、Logstash、およびKibana)セットアップの有効性を高める1つの方法は、重要なアプリケーションログを収集し、フィルターを使用してログデータを構造化することです。 「grok」パターンを中心にフィルターを作成します。これにより、ログ内のデータが有用な情報に分解されます。

このガイドは、https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-4-on-ubuntu-14-04 [Elasticsearchのインストール方法]の続編です。 Logstash、およびUbuntu 14.04のKibana 4]チュートリアル。主に、さまざまな一般的なアプリケーションログ用のLogstashフィルターの追加に焦点を当てています。

前提条件

このチュートリアルを実行するには、Filebeatなどの荷送人からログを受信する動作中のLogstashサーバーが必要です。 ログを受信するようにLogstashを設定していない場合は、開始するチュートリアルを以下に示します。https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana- 4-on-ubuntu-14-04 [Ubuntu 14.04にElasticsearch、Logstash、Kibana 4をインストールする方法]。

ELKサーバーの前提

  • Logstashは `+ / opt / logstash +`にインストールされます

  • Logstash構成ファイルは `+ / etc / logstash / conf.d +`にあります

  • `+ 02-beats-input.conf +`という名前の入力ファイルがあります

  • `+ 30-elasticsearch-output.conf +`という名前の出力ファイルがあります

Logstashサーバーで次のコマンドを実行して、 `+ patterns +`ディレクトリを作成する必要がある場合があります。

sudo mkdir -p /opt/logstash/patterns
sudo chown logstash: /opt/logstash/patterns

クライアントサーバーの前提

  • 各アプリケーションサーバーで、syslog / auth.logをLogstashサーバーに送信するようにFilebeatを構成しています(https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and -kibana-elk-stack-on-ubuntu-14-04#set-up-filebeat-(add-client-servers)[前提条件チュートリアルの[Filebeatセクションのセットアップ])

セットアップが異なる場合は、このガイドを環境に合わせて調整してください。

Grokについて

Grokは、テキストパターンを解析し、正規表現を使用して、それらを識別子に割り当てます。

grokパターンの構文は `+%{:} +`です。 Logstashフィルターには、ログメッセージのさまざまな部分をさまざまな識別子に一致させて割り当てる、一連のgrokパターンが含まれます。これにより、ログに構造が与えられます。

grokの詳細については、https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html [Logstash grok page]、およびhttps://github.com/logstashにアクセスしてください。 -plugins / logstash-patterns-core / blob / master / patterns / grok-patterns [Logstashデフォルトパターンリスト]。

このガイドの使用方法

これに続く各メインセクションには、特定のアプリケーションのログを収集およびフィルタリングするために必要な追加の構成の詳細が含まれます。 ログに記録してフィルタリングするアプリケーションごとに、クライアントサーバー(Filebeat)とLogstashサーバーの両方でいくつかの構成変更を行う必要があります。

Logstashパターンサブセクション

Logstashパターンのサブセクションがある場合、Logstashサーバーの `+ / opt / logstash / patterns +`の新しいファイルに追加できるgrokパターンが含まれます。 これにより、Logstashフィルターで新しいパターンを使用できます。

Logstashフィルターサブセクション

Logstashフィルターのサブセクションには、Logstashサーバーの `+ / etc / logstash / conf.d +`にある入力構成ファイルと出力構成ファイルの間の新しいファイルに追加できるフィルターが含まれます。 フィルターは、Logstashサーバーが関連するログファイルを解析する方法を決定します。 新しいフィルターを追加した後、変更を読み込むためにLogstashサービスを再起動することを忘れないでください。

Filebeat Prospectorサブセクション

Filebeat Prospectorを使用して、Logstashに送信するログを指定します。 追加のプロスペクター設定は、 `+ prospectors `セクションの既存のプロスペクターの直後に ` / etc / filebeat / filebeat.yml +`ファイルに追加する必要があります。

プロスペクターの例

filebeat:
 # List of prospectors to fetch data.
 prospectors:
   -
     - /var/log/secure
     - /var/log/messages
     document_type: syslog




...

上記の例では、赤で強調表示された行は、「+ app-access 」タイプで「 / var / log / app / 」内のすべての「 .log +」ファイルをLogstashに送信するプロスペクターを表しています。 変更を行った後、Filebeatをリロードして、変更を有効にする必要があります。

このガイドの使用方法がわかったので、ガイドの残りの部分では、アプリケーションログを収集してフィルタリングする方法を示します。

アプリケーション:Nginx

Logstashパターン:Nginx

NginxログパターンはLogstashのデフォルトパターンに含まれていないため、Nginxパターンを手動で追加します。

  • ELKサーバー*で、 `+ nginx +`という新しいパターンファイルを作成します。

sudo vi /opt/logstash/patterns/nginx

次に、次の行を挿入します。

Nginx Grokパターン

NGUSERNAME [a-zA-Z\.\@\-\+_%]+
NGUSER %{NGUSERNAME}
NGINXACCESS %{IPORHOST:clientip} %{NGUSER:ident} %{NGUSER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} (?:%{NUMBER:bytes}|-) (?:"(?:%{URI:referrer}|-)"|%{QS:referrer}) %{QS:agent}

保存して終了。 + NGINXACCESS +`パターンは解析し、データをさまざまな識別子に割り当てます(例: `+ clientip ++ ident +、 `+ auth +`など)。

次に、パターンファイルの所有権を `+ logstash +`に変更します。

sudo chown logstash: /opt/logstash/patterns/nginx

Logstashフィルター:Nginx

  • ELKサーバー*で、 `+ 11-nginx-filter.conf +`という新しいフィルター構成ファイルを作成します。

sudo vi /etc/logstash/conf.d/11-nginx-filter.conf

次に、次のフィルターを追加します。

Nginxフィルター

filter {
 if [type] == "nginx-access" {
   grok {
     match => { "message" => "%{NGINXACCESS}" }
   }
 }
}

保存して終了。 このフィルタは、上記で定義された + NGINX-ACCESS`パターンと + nginx-access`タイプのメッセージを照合しようとすることに注意してください。

Logstashを再起動して設定を再読み込みします。

sudo service logstash restart

Filebeat Prospector:Nginx

  • Nginxサーバー*で、編集のために `+ filebeat.yml +`設定ファイルを開きます:

sudo vi /etc/filebeat/filebeat.yml

次のプロスペクターを「+ filebeat 」セクションに追加して、Nginxアクセスログを「 nginx-access +」タイプとしてLogstashサーバーに送信します。

Nginx Prospector

   -
     paths:
       - /var/log/nginx/access.log
     document_type: nginx-access

保存して終了。 Filebeatをリロードして、変更を有効にします。

sudo service filebeat restart

これで、Nginxログが収集され、フィルタリングされます!

アプリケーション:Apache HTTP Webサーバー

ApacheのログパターンはデフォルトのLogstashパターンに含まれているため、Apacheのフィルターを簡単に設定できます。

Logstashフィルター:Apache

  • ELKサーバー*で、 `+ 12-apache.conf +`という新しいフィルター構成ファイルを作成します。

sudo vi /etc/logstash/conf.d/12-apache.conf

次に、次のフィルターを追加します。

Apacheフィルター

filter {
 if [type] == "apache-access" {
   grok {
     match => { "message" => "%{COMBINEDAPACHELOG}" }
   }
 }
}

保存して終了。 このフィルターは、デフォルトのLogstashパターンの1つである + COMBINEDAPACHELOG`パターンと + apache-access`タイプのメッセージを照合しようとすることに注意してください。

Logstashを再起動して設定を再読み込みします。

sudo service logstash restart

Filebeat Prospector:Apache

  • Apacheサーバー*で、編集のために `+ filebeat.yml +`設定ファイルを開きます:

sudo vi /etc/filebeat/filebeat.yml

「+ filebeat 」セクションに次のプロスペクターを追加して、Apacheログを「 apache-access +」タイプとしてLogstashサーバーに送信します。

Apache Prospector

   -
     paths:
       - /var/log/apache2/access.log
     document_type: apache-access

保存して終了。 Filebeatをリロードして、変更を有効にします。

sudo service filebeat restart

これで、Apacheログが収集され、フィルタリングされます!

結論

ほとんどすべてのタイプのログを収集して解析することができます。 他のログファイル用に独自のフィルターとパターンを作成してみてください。

表示したいフィルター、または独自のパターンを使用してコメントしてください。

Kibanaの使用に慣れていない場合は、次のチュートリアルを参照してください。 ]。