CentOS 7にElasticsearch、Logstash、Kibana(ELKスタック)をインストールする方法

前書き

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

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

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

私たちの目標

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

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

  • * Logstash *:受信ログを処理するLogstashのサーバーコンポーネント

  • * Elasticsearch *:すべてのログを保存します

  • * Kibana *:ログを検索および視覚化するためのWebインターフェイス。Nginxを介してプロキシされます。

  • * Filebeat *:Logstashにログを送信するクライアントサーバーにインストールされ、Filebeatは_lumberjack_ネットワークプロトコルを使用してLogstashと通信するログ配布エージェントとして機能します

画像:https://assets.digitalocean.com/articles/elk/elk-infrastructure.png [ELKインフラストラクチャ]

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

前提条件

このチュートリアルを完了するには、CentOS 7 VPSへのルートアクセスが必要です。 これを設定する手順は、こちら(手順3および4)で確認できます:https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7[CentOS 7での初期サーバー設定]。

代わりにUbuntuを使用する場合は、次のチュートリアルをご覧ください:https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu- 14-04 [Ubuntu 14.04にELKをインストールする方法]。

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

  • OS:CentOS 7

  • RAM:4GB

  • CPU:2

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

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

Java 8をインストールする

ElasticsearchとLogstashにはJavaが必要なので、今すぐインストールします。 Elasticsearchが推奨しているので、Oracle Java 8の最新バージョンをインストールします。 ただし、そのルートに進むことにした場合、OpenJDKで正常に動作するはずです。 このセクションの手順に従うことは、Java SEのOracle Binary License Agreementに同意することを意味します。

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

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)への外部アクセスを制限すると、HTTP APIを介して部外者がデータを読み取ったり、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.yml 」の「 host +」値を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

プロンプトでパスワードを入力します。 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 ;

   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

Kibanaは、FQDNまたはELKサーバーのパブリックIPアドレスを介してアクセスできるようになりました。 http:// elk%5C_server%5C_public%5C_ip / [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サーバーの身元を確認するために使用します。 次のコマンドを使用して、証明書と秘密キーを保存するディレクトリを作成します。

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

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

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

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

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

openssl.cnfの抜粋

subjectAltName = IP:

保存して終了。

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

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=/' -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

次の* input *構成を挿入します。

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

次のsyslog * filter *設定を挿入します。

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" ]
   }
 }
}

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

最後に、 `+ 30-elasticsearch-output.conf +`という設定ファイルを作成します:

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

次の* output *構成を挿入します。

/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]}"
 }
}

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

  • [topbeat-] 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またはRHEL 7 *サーバーごとにこれらの手順を実行します。 DebianベースのLinuxディストリビューションにFilebeatをインストールする手順については(例: Ubuntu、Debianなど)、https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04を参照してくださいこのチュートリアルのUbuntuバリエーションの#set-up-filebeat(add-client-servers)[Filebeatのセットアップ(クライアントサーバーの追加)セクション]。

SSL証明書をコピー

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

scp /etc/pki/tls/certs/logstash-forwarder.crt @:/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に付属のサンプル構成ファイルを変更する手順を説明します。 手順を完了すると、https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/de660ffdd3decacdcaf88109e5683e1eef75c01f/filebeat.yml-centos [this]のようなファイルが作成されます。

  • Client Server *で、Filebeat構成ファイルを作成および編集します。

sudo vi /etc/filebeat/filebeat.yml

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

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

filebeat.ymlの抜粋1/5

...
     paths:


       - /var/log/*.log
...

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

filebeat.ymlの抜粋2/5

...
     document_type:
...

これは、このプロスペクターのログのタイプが* 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: [":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 of 5

...

     # List of root certificates for HTTPS server verifications

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

保存して終了します。

次に、Filebeatを起動して有効にし、変更を適切な場所に配置します。

sudo systemctl start filebeat
sudo systemctl enable filebeat

繰り返しますが、Filebeatの構成が正しいかどうかわからない場合は、このhttps://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/de660ffdd3decacdcaf88109e5683e1eef75c01f/filebeat.yml-centos[Filebeatの構成例]と比較してください。

Filebeatは、syslogの「+ messages 」ファイルと「 secure +」ファイルをELKサーバーに送信しています。 ログを収集する他のすべてのサーバーについて、このセクションを繰り返します。

Filebeatインストールのテスト

ELKスタックが適切にセットアップされている場合、Filebeat(クライアントサーバー上)はELKサーバーのLogstashにログを送信する必要があります。 Logstashは、日付が刻印されたインデックス `+ filebeat-YYYY.MM.DD +`でFilebeatデータを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」の資格情報を入力すると、デフォルトのインデックスパターンを設定するよう求めるページが表示されます。

image:https://assets.digitalocean.com/articles/elk/1-filebeat-index.gif [インデックスの作成]

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

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

image:https://assets.digitalocean.com/articles/elk/2-filebeat-discover.png [ページを発見]

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

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

  • 「ルート」を検索して、誰かがルートとしてサーバーにログインしようとしているかどうかを確認します

  • 特定のホスト名を検索( `+ host:" "+`を検索)

  • ヒストグラム上の領域を選択するか、上のメニューから時間枠を変更します

  • ヒストグラムの下のメッセージをクリックして、データがどのようにフィルタリングされているかを確認します

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

結論

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

新しいELKスタックを改善するには、Logstashとhttps://www.digitalocean.com/community/tutorials/how-to-use-kibana-dashboards-and-visualizations[creating Kibanaダッシュボード]。 Topbeatを使用してシステムメトリックを収集 ELKスタックで。 これらのトピックはすべて、このシリーズの他のチュートリアルで説明されています。

がんばろう!

Related