前書き

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

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

前提条件

このチュートリアルを実行するには、動作中のLogstashサーバーと、Logstashにログを送信する方法が必要です。 Logstashをセットアップしていない場合は、次のチュートリアルで開始できます:https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-1-7-logstash-1-5 -and-kibana-4-1-elk-stack-on-ubuntu-14-04 [Ubuntu 14.04にElasticsearch 1.7、Logstash 1.5、およびKibana 4.1(ELK Stack)をインストールする方法]。

Logstashサーバーの前提:

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

  • Logstash Forwarderからポート5000でログを受信して​​います

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

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

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

Logstashフォワーダーの仮定:

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

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

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

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

Grokについて

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

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

grokの詳細については、http://logstash.net/docs/1.4.2/filters/grok [Logstash grok page]、およびhttps://github.com/elasticsearch/logstash/blob/v1.4.2をご覧ください。 / patterns / grok-patterns [Logstashデフォルトパターンリスト]。

このガイドの使用方法

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

Logstash Forwarderサブセクション

Logstash Forwarderサブセクションは、ログを送信しているアプリケーションサーバーに関連しています。 追加の_files_設定は、次の行の直後に `+ / etc / logstash-forwarder.conf +`ファイルに追加する必要があります。

 "files": [
   {
     "paths": [
       "/var/log/syslog",
       "/var/log/auth.log"
      ],
     "fields": { "type": "syslog" }
   }

追加の設定が「ファイル」セクションを閉じる「+] +」の前にあることを確認してください。 これには、Logstashに送信する適切なログファイルが含まれ、特定のタイプとしてラベル付けされます(Logstashフィルターで使用されます)。 変更を有効にするには、Logstash Forwarderをリロードする必要があります。

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

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

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

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

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

アプリケーション:Nginx

Logstash Forwarder:Nginx

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

sudo vi /etc/logstash-forwarder.conf

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

,
   {
     "paths": [
       "/var/log/nginx/access.log"
      ],
     "fields": { "type": "nginx-access" }
   }

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

sudo service logstash-forwarder restart

Logstashパターン:Nginx

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

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

sudo vi /opt/logstash/patterns/nginx

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

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:logstash /opt/logstash/patterns/nginx

Logstashフィルター:Nginx

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

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

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

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

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

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

sudo service logstash restart

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

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

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

注意: CentOSなどのRedHatバリアントを使用している場合、ログは例で使用されている `+ / var / log / apache2 `の代わりに ` / var / log / httpd +`にあります。

Logstash Forwarder

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

sudo vi /etc/logstash-forwarder.conf

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

,
   {
     "paths": [
       "/var/log//access.log"
      ],
     "fields": { "type": "apache-access" }
   }

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

sudo service logstash-forwarder restart

Logstashフィルター:Apache

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

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

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

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

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

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

sudo service logstash restart

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

結論

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

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

Kibanaの使用に慣れていない場合は、このシリーズの3番目のチュートリアルをご覧ください。https://www.digitalocean.com/community/tutorials/how-to-use-kibana-dashboards-and-visualizations [使用方法] Kibanaビジュアライゼーションとダッシュボード]。