注:このチュートリアルは、Filebeatの代わりにLogstashForwarderを使用する古いバージョンのELKスタックセットアップを対象としています。 このチュートリアルの最新バージョンは、集中ログを改善するためのLogstashフィルターの追加で入手できます。

序章

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

このガイドは、Ubuntu14.04チュートリアルにElasticsearch1.7、Logstash 1.5、およびKibana 4.1(ELK Stack)をインストールする方法の続編であり、主にさまざまな一般的なアプリケーションログのフィルターの追加に焦点を当てています。

前提条件

このチュートリアルに従うには、Logstashサーバーが機能していることと、ログをLogstashに送信する方法が必要です。 Logstashを設定していない場合は、次のチュートリアルを開始できます: Ubuntu 14.04にElasticsearch1.7、Logstash 1.5、およびKibana 4.1(ELK Stack)をインストールする方法。

Logstashサーバーの前提条件:

  • Logstashはにインストールされています /opt/logstash
  • ポート5000でLogstashForwarderからログを受信しています
  • Logstash構成ファイルは次の場所にあります。 /etc/logstash/conf.d
  • 名前の付いた入力ファイルがあります 01-lumberjack-input.conf
  • 次の名前の出力ファイルがあります 30-lumberjack-output.conf

Logstashフォワーダーの仮定:

  • Logstash Forwarderは、各アプリケーションサーバーで、syslog / auth.logをLogstashサーバーに送信するように構成されています(前のチュートリアルの Logstash Forwarderのセットアップセクションのように)

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

を作成する必要があるかもしれません patterns Logstashサーバーで次のコマンドを実行してディレクトリを作成します。

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

Grokについて

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

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

grokの詳細については、LogstashgrokページおよびLogstashのデフォルトパターンリストにアクセスしてください。

このガイドの使用方法

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

LogstashForwarderサブセクション

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

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

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

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

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

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

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

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

アプリケーション:Nginx

Logstashフォワーダー: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ログが収集され、フィルタリングされます。

アプリケーション:ApacheHTTPWebサーバー

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

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

Logstashフォワーダー

Apache サーバーで、 logstash-forwarder.conf 編集用の構成ファイル:

sudo vi /etc/logstash-forwarder.conf

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

,
    {
      "paths": [
        "/var/log/apache2/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番目のチュートリアルKibanaの視覚化とダッシュボードの使用方法を確認してください。