CentOS7にElasticsearch、Logstash、およびKibana(ELKスタック)をインストールする方法

提供:Dev Guides
移動先:案内検索

序章

このチュートリアルでは、CentOS7へのElasticsearchELKスタックのインストールについて説明します。つまり、Elasticsearch 2.2.x、Logstash 2.2.x、およびKibana4.4.xです。 また、Filebeat 1.1.xを使用して、システムのsyslogを一元化された場所に収集して視覚化するように構成する方法についても説明します。 Logstashは、将来使用するためにログを収集、解析、および保存するためのオープンソースツールです。 Kibanaは、Logstashがインデックスを作成したログを検索および表示するために使用できるWebインターフェイスです。 これらのツールは両方とも、ログの保存に使用されるElasticsearchに基づいています。

一元化されたログは、サーバーまたはアプリケーションの問題を特定するときに非常に役立ちます。これにより、すべてのログを1か所で検索できるようになります。 また、特定の時間枠でログを相互に関連付けることにより、複数のサーバーにまたがる問題を特定できるので便利です。

Logstashを使用してすべてのタイプのログを収集することは可能ですが、このチュートリアルの範囲をsyslog収集に限定します。

私たちの目標

チュートリアルの目的は、複数のサーバーのsyslogを収集するようにLogstashを設定し、収集されたログを視覚化するようにKibanaを設定することです。

ELKスタックのセットアップには、次の4つの主要コンポーネントがあります。

  • Logstash :受信ログを処理するLogstashのサーバーコンポーネント
  • Elasticsearch :すべてのログを保存します
  • Kibana :Nginxを介してプロキシされるログを検索および視覚化するためのWebインターフェイス
  • Filebeat :ログをLogstashに送信するクライアントサーバーにインストールされたFilebeatは、lumberjackネットワーキングプロトコルを利用してLogstashと通信するログ配布エージェントとして機能します。

最初の3つのコンポーネントを単一のサーバーにインストールします。これをELKサーバーと呼びます。 Filebeatは、ログを収集するすべてのクライアントサーバーにインストールされます。これらをまとめてクライアントサーバーと呼びます。

前提条件

このチュートリアルを完了するには、CentOS7VPSへのルートアクセスが必要です。 これを設定する手順は、ここにあります(手順3および4): CentOS7を使用したサーバーの初期設定。

代わりにUbuntuを使用したい場合は、次のチュートリアルを確認してください: Ubuntu14.04にELKをインストールする方法

ELKサーバーに必要なCPU、RAM、およびストレージの量は、収集するログの量によって異なります。 このチュートリアルでは、ELKサーバーに次の仕様のVPSを使用します。

  • OS:CentOS 7
  • RAM:4GB
  • CPU:2

ELKサーバーに加えて、ログを収集するサーバーをいくつか用意する必要があります。

ELKサーバーのセットアップを始めましょう!

Java8をインストールします

ElasticsearchとLogstashにはJavaが必要なので、今すぐインストールします。 Elasticsearchが推奨する最新バージョンのOracleJava8をインストールします。 ただし、そのルートを選択する場合は、OpenJDKで正常に機能するはずです。 このセクションの手順に従うことは、JavaSEのOracleBinaryLicenseAgreementに同意することを意味します。

ホームディレクトリに移動し、次のコマンドを使用してOracle Java 8(Update 73、この記事の執筆時点で最新)JDKRPMをダウンロードします。

cd ~
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm"

次に、このyumコマンドを使用してRPMをインストールします(別のリリースをダウンロードした場合は、ここでファイル名に置き換えてください)。

sudo yum -y localinstall jdk-8u73-linux-x64.rpm

これで、Javaが/usr/java/jdk1.8.0_73/jre/bin/javaにインストールされ、/usr/bin/javaからリンクされるはずです。

以前にダウンロードしたアーカイブファイルを削除できます。

rm ~/jdk-8u*-linux-x64.rpm

Java 8がインストールされたので、ElasticSearchをインストールしましょう。

Elasticsearchをインストールする

Elasticsearchは、Elasticのパッケージリポジトリを追加することにより、パッケージマネージャーとともにインストールできます。

次のコマンドを実行して、Elasticsearchの公開GPGキーをrpmにインポートします。

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Elasticsearch用の新しいyumリポジトリファイルを作成します。 これは単一のコマンドであることに注意してください。

echo '[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
' | sudo tee /etc/yum.repos.d/elasticsearch.repo

次のコマンドでElasticsearchをインストールします。

sudo yum -y install elasticsearch

Elasticsearchがインストールされました。 構成を編集しましょう:

sudo vi /etc/elasticsearch/elasticsearch.yml

Elasticsearchインスタンス(ポート9200)への外部アクセスを制限して、部外者がHTTPAPIを介してデータを読み取ったりElasticsearchクラスターをシャットダウンしたりできないようにする必要があります。 network.hostを指定する行を見つけてコメントを外し、その値を「localhost」に置き換えて、次のようにします。

Elasticsearch.ymlの抜粋(更新)

network.host: localhost

elasticsearch.ymlを保存して終了します。

次にElasticsearchを起動します。

sudo systemctl start elasticsearch

次に、次のコマンドを実行して、起動時にElasticsearchを自動的に開始します。

sudo systemctl enable elasticsearch

Elasticsearchが稼働しているので、Kibanaをインストールしましょう。

Kibanaをインストールする

KibanaパッケージはElasticsearchと同じGPGキーを共有しており、その公開キーはすでにインストールされています。

Kibanaの新しいyumリポジトリファイルを作成および編集します。

sudo vi /etc/yum.repos.d/kibana.repo

次のリポジトリ構成を追加します。

/etc/yum.repos.d/kibana.repo

[kibana-4.4]
name=Kibana repository for 4.4.x packages
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

保存して終了。

次のコマンドでKibanaをインストールします。

sudo yum -y install kibana

Kibana構成ファイルを開いて編集します。

sudo vi /opt/kibana/config/kibana.yml

Kibana構成ファイルで、server.hostを指定する行を見つけ、IPアドレス(デフォルトでは「0.0.0.0」)を「localhost」に置き換えます。

kibana.ymlの抜粋(更新)

server.host: "localhost"

保存して終了。 この設定により、Kibanaはローカルホストのみがアクセスできるようになります。 Nginxリバースプロキシを同じサーバーにインストールして外部アクセスを許可するため、これは問題ありません。

次に、Kibanaサービスを開始し、有効にします。

sudo systemctl start kibana
sudo chkconfig kibana on

Kibana Webインターフェースを使用する前に、リバースプロキシを設定する必要があります。 Nginxを使って今それをやってみましょう。

Nginxをインストールします

localhostでリッスンするようにKibanaを構成したため、外部アクセスを許可するようにリバースプロキシを設定する必要があります。 この目的のためにNginxを使用します。

注:使用するNginxインスタンスが既にある場合は、代わりにそれを自由に使用してください。 Nginxサーバーから到達できるようにKibanaを構成してください(/opt/kibana/config/kibana.ymlhost値をKibanaサーバーのプライベートIPアドレスに変更することをお勧めします)。 また、SSL/TLSを有効にすることをお勧めします。

EPELリポジトリをyumに追加します。

sudo yum -y install epel-release

次に、yumを使用してNginxとhttpd-toolsをインストールします。

sudo yum -y install nginx httpd-tools

htpasswdを使用して、Kibana Webインターフェイスにアクセスできる「kibanaadmin」(別の名前を使用する必要があります)という管理ユーザーを作成します。

sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin

プロンプトでパスワードを入力します。 Kibana Webインターフェースにアクセスするために必要になるため、このログインを覚えておいてください。

次に、お気に入りのエディターでNginx構成ファイルを開きます。 viを使用します:

sudo vi /etc/nginx/nginx.conf

ファイルの最後の構成ブロックであるデフォルトのサーバーブロック(server {で始まる)を見つけて削除します。 完了すると、ファイルの最後の2行は次のようになります。

nginx.confの抜粋

    include /etc/nginx/conf.d/*.conf;
}

保存して終了。

次に、新しいファイルにNginxサーバーブロックを作成します。

sudo vi /etc/nginx/conf.d/kibana.conf

次のコードブロックをファイルに貼り付けます。 サーバーの名前と一致するようにserver_nameを更新してください。

/etc/nginx/conf.d/kibana.conf

server {
    listen 80;

    server_name example.com;
            
    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/htpasswd.users;

    location / {
        proxy_pass http://localhost:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;        
    }
}

保存して終了。 これにより、サーバーのHTTPトラフィックをlocalhost:5601でリッスンしているKibanaアプリケーションに転送するようにNginxが構成されます。 また、Nginxは以前に作成したhtpasswd.usersファイルを使用するため、基本認証が必要です。

次に、Nginxを起動して有効にし、変更を有効にします。

sudo systemctl start nginx
sudo systemctl enable nginx

注:このチュートリアルは、SELinuxが無効になっていることを前提としています。 そうでない場合、Kibanaを正しく機能させるには、次のコマンドを実行する必要があります。sudo setsebool -P httpd_can_network_connect 1


これで、FQDNまたはELKサーバーのパブリックIPアドレスを介してKibanaにアクセスできます。 http://elk_server_public_ip/。 Webブラウザーでそこにアクセスすると、「kibanaadmin」クレデンシャルを入力した後、インデックスパターンの構成を求めるKibanaウェルカムページが表示されます。 他のすべてのコンポーネントをインストールした後、後でそれに戻りましょう。

Logstashをインストールします

LogstashパッケージはElasticsearchと同じGPGキーを共有しており、その公開キーはすでにインストールされているので、Logstash用の新しいYumリポジトリファイルを作成して編集しましょう。

sudo vi /etc/yum.repos.d/logstash.repo

次のリポジトリ構成を追加します。

/etc/yum.repos.d/logstash.repo

[logstash-2.2]
name=logstash repository for 2.2 packages
baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

保存して終了。

次のコマンドでLogstashをインストールします。

sudo yum -y install logstash

Logstashはインストールされていますが、まだ構成されていません。

SSL証明書を生成する

Filebeatを使用してクライアントサーバーからELKサーバーにログを送信するため、SSL証明書とキーのペアを作成する必要があります。 この証明書は、FilebeatがELKサーバーのIDを確認するために使用されます。 次のコマンドを使用して、証明書と秘密鍵を格納するディレクトリを作成します。

これで、SSL証明書を生成するための2つのオプションがあります。 クライアントサーバーがELKサーバーのIPアドレスを解決できるようにするDNS設定がある場合は、オプション2を使用します。 それ以外の場合は、オプション1でIPアドレスを使用できます。

オプション1:IPアドレス

ELKサーバーのIPアドレスを解決するために、ログを収集するサーバーを許可するDNS設定がない場合は、ELKサーバーのプライベートIPアドレスを[に追加する必要があります。 X207X](SAN)生成しようとしているSSL証明書のフィールド。 これを行うには、OpenSSL構成ファイルを開きます。

sudo vi /etc/pki/tls/openssl.cnf

ファイル内の[ v3_ca ]セクションを見つけて、その下に次の行を追加します(ELKサーバーのプライベートIPアドレスに置き換えます)。

openssl.cnfの抜粋

subjectAltName = IP: ELK_server_private_ip

保存して終了。

次に、次のコマンドを使用して、SSL証明書と秘密鍵を適切な場所(/ etc / pki / tls /)に生成します。

cd /etc/pki/tls
sudo openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

logstash-forwarder.crt ファイルは、ログをLogstashに送信するすべてのサーバーにコピーされますが、少し後で行います。 Logstashの構成を完了しましょう。 このオプションを使用した場合は、オプション2をスキップして、Logstashの構成に進みます。

オプション2:FQDN(DNS)

プライベートネットワークでDNSを設定している場合は、ELKサーバーのプライベートIPアドレスを含むAレコードを作成する必要があります。このドメイン名は次のコマンドでSSL証明書を生成するために使用されます。 または、サーバーのパブリックIPアドレスを指すレコードを使用することもできます。 サーバー(ログを収集するサーバー)がドメイン名をELKサーバーに解決できることを確認してください。

次に、次のコマンドを使用して、適切な場所(/ etc / pki / tls /…)にSSL証明書と秘密鍵を生成します(ELKサーバーのFQDNに置き換えます)。

cd /etc/pki/tls
sudo openssl req -subj '/CN=ELK_server_fqdn/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

logstash-forwarder.crt ファイルは、ログをLogstashに送信するすべてのサーバーにコピーされますが、少し後で行います。 Logstashの構成を完了しましょう。

Logstashを構成する

Logstash構成ファイルはJSON形式であり、/ etc / logstash/conf.dにあります。 構成は、入力、フィルター、および出力の3つのセクションで構成されます。

02-beats-input.confという構成ファイルを作成し、「filebeat」入力を設定しましょう。

sudo vi /etc/logstash/conf.d/02-beats-input.conf

次の入力構成を挿入します。

02-beats-input.conf

input {
  beats {
    port => 5044
    ssl => true
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  }
}

保存して終了します。 これは、tcpポート5044でリッスンするbeats入力を指定し、前に作成したSSL証明書と秘密鍵を使用します。

次に、10-syslog-filter.confという構成ファイルを作成します。ここで、syslogメッセージのフィルターを追加します。

sudo vi /etc/logstash/conf.d/10-syslog-filter.conf

次のsyslogfilter構成を挿入します。

10-syslog-filter.conf

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

保存して終了します。 このフィルターは、(Filebeatによって)「syslog」タイプとしてラベル付けされたログを検索し、grokを使用して着信syslogログを解析し、構造化およびクエリ可能にしようとします。

最後に、30-elasticsearch-output.confという構成ファイルを作成します。

sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

次の出力構成を挿入します。

/etc/logstash/conf.d/30-elasticsearch-output.conf

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    sniffing => true
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

保存して終了。 この出力は基本的に、localhost:9200で実行されているElasticsearchのビートデータを、使用されているビートにちなんで名付けられたインデックス(この場合はfilebeat)に格納するようにLogstashを構成します。

Filebeat入力を使用する他のアプリケーションにフィルターを追加する場合は、入力構成と出力構成の間でソートされるように、必ずファイルに名前を付けてください(つまり、 02-と30-の間)。

次のコマンドを使用して、Logstash構成をテストします。

sudo service logstash configtest

構文エラーがない場合は、Configuration OKと表示されます。 それ以外の場合は、エラー出力を読んで、Logstash構成の何が問題になっているのかを確認してください。

Logstashを再起動して有効にし、構成の変更を有効にします。

sudo systemctl restart logstash
sudo chkconfig logstash on

次に、サンプルのKibanaダッシュボードをロードします。

Kibanaダッシュボードをロードする

Elasticには、Kibanaの使用を開始するのに役立ついくつかのサンプルKibanaダッシュボードとBeatsインデックスパターンが用意されています。 このチュートリアルではダッシュボードを使用しませんが、ダッシュボードをロードして、含まれているFilebeatインデックスパターンを使用できるようにします。

まず、サンプルダッシュボードアーカイブをホームディレクトリにダウンロードします。

cd ~
curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip

次のコマンドを使用して、unzipパッケージをインストールします。

sudo yum -y install unzip

次に、アーカイブの内容を抽出します。

unzip beats-dashboards-*.zip

そして、次のコマンドを使用して、サンプルのダッシュボード、ビジュアライゼーション、BeatsインデックスパターンをElasticsearchにロードします。

cd beats-dashboards-*
./load.sh

ロードしたばかりのインデックスパターンは次のとおりです。

  • [packetbeat-] YYYY.MM.DD
  • [トップビート-]YYYY.MM.DD
  • [filebeat-] YYYY.MM.DD
  • [winlogbeat-] YYYY.MM.DD

Kibanaの使用を開始するときは、デフォルトとしてFilebeatインデックスパターンを選択します。

ElasticsearchにFilebeatインデックステンプレートをロードする

Filebeatを使用してログをElasticsearchに送信することを計画しているため、Filebeatインデックステンプレートをロードする必要があります。 インデックステンプレートは、着信Filebeatフィールドをインテリジェントな方法で分析するようにElasticsearchを構成します。

まず、Filebeatインデックステンプレートをホームディレクトリにダウンロードします。

cd ~
curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json

次に、次のコマンドを使用してテンプレートをロードします。

curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' [email protected]

テンプレートが正しく読み込まれると、次のようなメッセージが表示されます。

Output:{
  "acknowledged" : true
}

ELKサーバーがFilebeatデータを受信する準備ができたので、各クライアントサーバーでのFilebeatの設定に移りましょう。

Filebeatのセットアップ(クライアントサーバーの追加)

ELKサーバーにログを送信するCentOSまたはRHEL7サーバーごとにこれらの手順を実行します。 DebianベースのLinuxディストリビューションにFilebeatをインストールする手順については(例: Ubuntu、Debianなど)、このチュートリアルのUbuntuバリエーションのファイルビートのセットアップ(クライアントサーバーの追加)セクションを参照してください。

SSL証明書をコピーする

ELKサーバーで、前提条件のチュートリアルで作成したSSL証明書をクライアントサーバーにコピーします(クライアントサーバーのアドレスと独自のログインに置き換えます)。

scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp

ログインの資格情報を入力したら、証明書のコピーが成功したことを確認します。 クライアントサーバーとELKサーバー間の通信に必要です。

次に、クライアントサーバーで、ELKサーバーのSSL証明書を適切な場所(/ etc / pki / tls / certs)にコピーします。

sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

次に、Topbeatパッケージをインストールします。

Filebeatパッケージをインストールする

クライアントサーバーで、次のコマンドを作成して実行し、Elasticsearchの公開GPGキーをrpmにインポートします。

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Filebeat用の新しいyumリポジトリファイルを作成および編集します。

sudo vi /etc/yum.repos.d/elastic-beats.repo

次のリポジトリ構成を追加します。

/etc/yum.repos.d/elastic-beats.repo

[beats]
name=Elastic Beats Repository
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1

保存して終了。

次のコマンドでFilebeatをインストールします。

sudo yum -y install filebeat

Filebeatはインストールされていますが、まだ構成されていません。

Filebeatを構成する

次に、ELKサーバー上のLogstashに接続するようにFilebeatを構成します。 このセクションでは、Filebeatに付属しているサンプル構成ファイルを変更する手順を説明します。 手順を完了すると、thisのようなファイルが作成されます。

クライアントサーバーで、Filebeat構成ファイルを作成および編集します。

sudo vi /etc/filebeat/filebeat.yml

注: Filebeatの構成ファイルはYAML形式です。つまり、インデントが非常に重要です。 これらの説明に示されているのと同じ数のスペースを使用してください。


ファイルの上部近くにprospectorsセクションが表示されます。このセクションでは、出荷するログファイルとその処理方法を指定するプロスペクターを定義できます。 各プロスペクターは-の文字で示されます。

secureおよびmessagesログをLogstashに送信するように、既存のプロスペクターを変更します。 pathsの下で、- /var/log/*.logファイルをコメントアウトします。 これにより、Filebeatがそのディレクトリ内のすべての.logをLogstashに送信するのを防ぎます。 次に、syslogおよびauth.logの新しいエントリを追加します。 完了すると、次のようになります。

filebeat.ymlの抜粋1/5

...
      paths:
        - /var/log/secure
        - /var/log/messages
#        - /var/log/*.log
...

次に、document_type:を指定する行を見つけ、コメントを外して、その値を「syslog」に変更します。 変更後は次のようになります。

filebeat.ymlの抜粋2/5

...
      document_type: syslog
...

これは、このプロスペクターのログのタイプが syslog (Logstashフィルターが検索するタイプ)であることを指定します。

ELKサーバーに他のファイルを送信したい場合、またはFilebeatがログを処理する方法に変更を加えたい場合は、プロスペクターエントリを自由に変更または追加してください。

次に、outputセクションで、elasticsearch:という行を見つけます。これは、Elasticsearchの出力セクション(使用しません)を示します。 Elasticsearchの出力セクション全体を削除またはコメントアウトします(logstash:と表示されている行まで)。

#logstash:という行で示されている、コメント化されたLogstash出力セクションを見つけ、前の#を削除してコメントを解除します。 このセクションでは、hosts: ["localhost:5044"]行のコメントを解除します。 localhostをELKサーバーのプライベートIPアドレス(または、そのオプションを使用した場合はホスト名)に変更します。

filebeat.ymlの抜粋3/5

  ### Logstash as output
  logstash:
    # The Logstash hosts
    hosts: ["ELK_server_private_IP:5044"]

これにより、ポート5044(以前に入力を指定したポート)でELKサーバーのLogstashに接続するようにFilebeatが構成されます。

hostsエントリのすぐ下で、同じインデントを使用して、次の行を追加します。

filebeat.ymlの抜粋4/5

    bulk_max_size: 1024

次に、tlsセクションを見つけて、コメントを外します。 次に、certificate_authoritiesを指定する行のコメントを解除し、その値を["/etc/pki/tls/certs/logstash-forwarder.crt"]に変更します。 次のようになります。

filebeat.ymlの抜粋5/5

...
    tls:
      # List of root certificates for HTTPS server verifications
      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

これにより、ELKサーバーで作成したSSL証明書を使用するようにFilebeatが構成されます。

保存して終了します。

次に、Filebeatを起動して有効にし、変更を適用します。

sudo systemctl start filebeat
sudo systemctl enable filebeat

繰り返しになりますが、Filebeatの構成が正しいかどうかわからない場合は、このサンプルのFilebeat構成と比較してください。

これで、FilebeatはsyslogmessagesおよびsecureファイルをELKサーバーに送信します。 ログを収集する他のすべてのサーバーについて、このセクションを繰り返します。

Filebeatのインストールをテストする

ELKスタックが適切に設定されている場合、Filebeat(クライアントサーバー上)はログをELKサーバー上のLogstashに送信する必要があります。 Logstashは、Filebeatデータを日付スタンプ付きのインデックスfilebeat-YYYY.MM.DDでElasticsearchにロードする必要があります。

ELKサーバーで、次のコマンドを使用してFilebeatインデックスをクエリし、Elasticsearchが実際にデータを受信していることを確認します。

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

次のような出力が表示されるはずです。

Sample Output:...
{
      "_index" : "filebeat-2016.01.29",
      "_type" : "log",
      "_id" : "AVKO98yuaHvsHQLa53HE",
      "_score" : 1.0,
      "_source":{"message":"Feb  3 14:34:00 rails sshd[963]: Server listening on :: port 22.","@version":"1","@timestamp":"2016-01-29T19:59:09.145Z","beat":{"hostname":"topbeat-u-03","name":"topbeat-u-03"},"count":1,"fields":null,"input_type":"log","offset":70,"source":"/var/log/auth.log","type":"log","host":"topbeat-u-03"}
    }
...

出力に合計ヒット数が0と表示されている場合、Elasticsearchは検索したインデックスの下にログをロードしていないため、セットアップでエラーがないか確認する必要があります。 期待どおりの出力が得られたら、次の手順に進みます。

Kibanaに接続する

ログを収集するすべてのサーバーでFilebeatのセットアップが完了したら、前にインストールしたWebインターフェイスであるKibanaを見てみましょう。

Webブラウザーで、ELKサーバーのFQDNまたはパブリックIPアドレスに移動します。 「kibanaadmin」クレデンシャルを入力すると、デフォルトのインデックスパターンを構成するように求めるページが表示されます。

先に進み、インデックスパターンメニュー(左側)から [filebeat] -YYY.MM.DD を選択し、 Star(デフォルトインデックスとして設定)ボタンをクリックしてFilebeatを設定しますデフォルトとしてのインデックス。

次に、上部のナビゲーションバーにあるDiscoverリンクをクリックします。 デフォルトでは、これにより過去15分間のすべてのログデータが表示されます。 以下のログメッセージとともに、ログイベントのヒストグラムが表示されます。

現時点では、クライアントサーバーからsyslogを収集しているだけなので、それほど多くはありません。 ここでは、ログを検索および参照できます。 ダッシュボードをカスタマイズすることもできます。

次のことを試してください。

  • 「root」を検索して、誰かがrootとしてサーバーにログインしようとしていないかどうかを確認します
  • 特定のホスト名を検索します(host: "hostname"を検索します)
  • ヒストグラムの領域を選択するか、上のメニューから時間枠を変更します
  • ヒストグラムの下のメッセージをクリックして、データがどのようにフィルタリングされているかを確認してください

Kibanaには、グラフ化やフィルタリングなど、他にも多くの機能がありますので、お気軽にご確認ください。

結論

これで、syslogがElasticsearchとLogstashを介して一元化され、Kibanaでそれらを視覚化できるようになったので、すべての重要なログを一元化することから始めることができます。 ほぼすべてのタイプのログまたはインデックス付きデータをLogstashに送信できますが、データがgrokで解析および構造化されると、データはさらに便利になります。

新しいELKスタックを改善するには、Logstashを使用して他のログを収集およびフィルタリングし、Kibanaダッシュボードを作成することを検討する必要があります。 ELKスタックでTopbeatを使用して、システムメトリックを収集することもできます。 これらのトピックはすべて、このシリーズの他のチュートリアルで説明されています。

幸運を!