序章
Elastic Stack(以前は ELK Stack と呼ばれていました)は、 Elastic によって作成されたオープンソースソフトウェアのコレクションであり、任意のソースから生成されたログを検索、分析、および視覚化できます。任意の形式、集中型ロギングとして知られる手法。 一元化されたログは、サーバーまたはアプリケーションの問題を特定するときに非常に役立ちます。これにより、すべてのログを1か所で検索できるようになります。 また、特定の時間枠でログを相互に関連付けることにより、複数のサーバーにまたがる問題を特定できるので便利です。
Elastic Stackには、次の4つの主要コンポーネントがあります。
- Elasticsearch :収集されたすべてのデータを保存する分散型RESTful検索エンジン。
- Logstash :着信データをElasticsearchに送信するElasticStackのデータ処理コンポーネント。
- Kibana :ログを検索および視覚化するためのWebインターフェイス。
- Beats :数百または数千のマシンからLogstashまたはElasticsearchにデータを送信できる軽量の単一目的のデータシッパー。
このチュートリアルでは、CentOS7サーバーにElasticStackをインストールします。 ログとファイルの転送と集中化に使用されるBeatであるFilebeatを含む、Elastic Stackのすべてのコンポーネントをインストールし、システムログを収集して視覚化するように構成する方法を学習します。 さらに、Kibanaは通常、 localhost
、 Nginx を使用してプロキシし、Webブラウザからアクセスできるようにします。 このチュートリアルの最後に、ElasticStackサーバーと呼ばれる単一のサーバーにこれらのコンポーネントをすべてインストールします。
注:Elastic Stackをインストールするときは、スタック全体で同じバージョンを使用する必要があります。 このチュートリアルでは、各コンポーネントの最新バージョン(この記事の執筆時点では、Elasticsearch 6.5.2、Kibana 6.5.2、Logstash 6.5.2、およびFilebeat 6.5.2)を使用しています。
前提条件
このチュートリアルを完了するには、次のものが必要です。
-
CentOS7を使用したInitialServer Setupに従ってセットアップされた1台のCentOS7サーバー。これには、sudo権限を持つ非rootユーザーとファイアウォールが含まれます。 Elastic Stackサーバーに必要なCPU、RAM、およびストレージの量は、収集するログの量によって異なります。 このチュートリアルでは、ElasticStackサーバーに次の仕様のVPSを使用します。
- OS:CentOS 7.5
- RAM:4GB
- CPU:2
-
サーバーにインストールされているJava8—ElasticsearchとLogstashに必要です—。 Java9はサポートされていないことに注意してください。 これをインストールするには、CentOSにJavaをインストールする方法に関するガイドの「OpenJDK8JREのインストール」セクションに従ってください。
-
サーバーにインストールされたNginx。このガイドの後半でKibanaのリバースプロキシとして構成します。 これを設定するには、 CentOS7にNginxをインストールする方法に関するガイドに従ってください。
さらに、Elastic Stackは、許可されていないユーザーにアクセスさせたくないサーバーに関する貴重な情報にアクセスするために使用されるため、TLS/SSL証明書をインストールしてサーバーを安全に保つことが重要です。 これはオプションですが、強くお勧めします。 このガイドの過程で最終的にNginxサーバーブロックに変更を加えるため、このチュートリアルの2番目のステップの直後に Let’s Encrypt on CentOS7ガイドを完了してこのセキュリティを設定することをお勧めします。
サーバーでLet’sEncryptを構成する予定がある場合は、構成する前に次のことを行う必要があります。
-
完全修飾ドメイン名(FQDN)。 このチュートリアルでは、
example.com
全体を通して。 Namecheap でドメイン名を購入するか、 Freenom で無料でドメイン名を取得するか、選択したドメイン登録事業者を使用できます。 -
次の両方のDNSレコードがサーバー用に設定されています。 それらを追加する方法の詳細については、このDigitalOceanDNSの紹介に従ってください。
- とのAレコード
example.com
サーバーのパブリックIPアドレスを指します。 - とのAレコード
www.example.com
サーバーのパブリックIPアドレスを指します。
- とのAレコード
ステップ1—Elasticsearchのインストールと設定
Elastic Stackコンポーネントは、デフォルトではパッケージマネージャーからは利用できませんが、 yum
Elasticのパッケージリポジトリを追加します。
システムをパッケージのなりすましから保護するために、ElasticStackのすべてのパッケージはElasticsearch署名キーで署名されています。 キーを使用して認証されたパッケージは、パッケージマネージャーによって信頼されていると見なされます。 このステップでは、Elasticsearchをインストールするために、Elasticsearchの公開GPGキーをインポートし、Elasticリポジトリを追加します。
次のコマンドを実行して、Elasticsearchパブリック署名キーをダウンロードしてインストールします。
- sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
次に、Elasticリポジトリを追加します。 お好みのテキストエディタを使用してファイルを作成します elasticsearch.repo
の中に /etc/yum.repos.d/
ディレクトリ。 ここでは、viテキストエディタを使用します。
- sudo vi /etc/yum.repos.d/elasticsearch.repo
Elastic Stackのコンポーネントをダウンロードしてインストールするために必要な情報をyumに提供するには、を押して挿入モードに入ります。 i
次の行をファイルに追加します。
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
ここには、人間が読める形式が含まれています name
レポの baseurl
リポジトリのデータディレクトリの gpgkey
Elasticパッケージを検証するために必要です。
終了したら、を押します ESC
挿入モードを終了するには、 :wq
と ENTER
ファイルを保存して終了します。 テキストエディタviとその後継のvimの詳細については、クラウドサーバーへのVimテキストエディタのインストールと使用チュートリアルをご覧ください。
リポジトリを追加すると、ElasticStackをインストールできるようになります。 公式ドキュメントによると、他のコンポーネントの前にElasticsearchをインストールする必要があります。 この順序でインストールすると、各製品が依存するコンポーネントが正しく配置されます。
次のコマンドでElasticsearchをインストールします。
- sudo yum install elasticsearch
Elasticsearchのインストールが完了したら、メインの設定ファイルを開きます。 elasticsearch.yml
、エディタで:
sudo vi /etc/elasticsearch/elasticsearch.yml
注: Elasticsearchの構成ファイルはYAML形式です。つまり、インデントが非常に重要です。 このファイルを編集するときは、余分なスペースを追加しないでください。
Elasticsearchは、ポート上のあらゆる場所からのトラフィックをリッスンします 9200
. 部外者がRESTAPIを介してデータを読み取ったり、Elasticsearchクラスターをシャットダウンしたりするのを防ぐために、Elasticsearchインスタンスへの外部アクセスを制限する必要があります。 指定する行を検索します network.host
、コメントを外し、その値を次のように置き換えます localhost
したがって、次のようになります。
. . .
network.host: localhost
. . .
保存して閉じます elasticsearch.yml
. 次に、Elasticsearchサービスをで開始します systemctl
:
- sudo systemctl start elasticsearch
次に、次のコマンドを実行して、サーバーが起動するたびにElasticsearchを起動できるようにします。
- sudo systemctl enable elasticsearch
HTTPリクエストを送信することで、Elasticsearchサービスが実行されているかどうかをテストできます。
- curl -X GET "localhost:9200"
次のような、ローカルノードに関するいくつかの基本情報を示す応答が表示されます。
Output{
"name" : "8oSCBFJ",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "1Nf9ZymBQaOWKpMRBfisog",
"version" : {
"number" : "6.5.2",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "9434bed",
"build_date" : "2018-11-29T23:58:20.891072Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
Elasticsearchが稼働しているので、ElasticStackの次のコンポーネントであるKibanaをインストールしましょう。
ステップ2—Kibanaダッシュボードのインストールと構成
公式ドキュメントのインストール順序に従って、Elasticsearchの次のコンポーネントとしてKibanaをインストールする必要があります。 Kibanaを設定すると、そのインターフェースを使用して、Elasticsearchが保存するデータを検索して視覚化できるようになります。
前の手順でElasticリポジトリをすでに追加しているため、ElasticStackの残りのコンポーネントをインストールするだけで済みます。 yum
:
- sudo yum install kibana
次に、Kibanaサービスを有効にして開始します。
- sudo systemctl enable kibana
- sudo systemctl start kibana
Kibanaはリッスンするように構成されているため localhost
、外部アクセスを許可するには、リバースプロキシを設定する必要があります。 この目的のためにNginxを使用します。これは、サーバーにすでにインストールされているはずです。
まず、 openssl
KibanaWebインターフェースへのアクセスに使用する管理Kibanaユーザーを作成するコマンド。 例として、このアカウントに名前を付けます kibanaadmin
、ただし、セキュリティを強化するために、推測が難しい非標準の名前をユーザーに選択することをお勧めします。
次のコマンドは、管理用Kibanaユーザーとパスワードを作成し、それらをに保存します。 htpasswd.users
ファイル。 このユーザー名とパスワードを要求するようにNginxを構成し、このファイルを一時的に読み取ります。
- echo "kibanaadmin:`openssl passwd -apr1`" | sudo tee -a /etc/nginx/htpasswd.users
プロンプトでパスワードを入力して確認します。 Kibana Webインターフェースにアクセスするために必要になるため、このログインを覚えておくか、メモしてください。
次に、Nginxサーバーブロックファイルを作成します。 例として、このファイルを次のように参照します。 example.com.conf
、ただし、よりわかりやすい名前を付けると役立つ場合があります。 たとえば、このサーバーにFQDNとDNSレコードを設定している場合は、FQDNにちなんでこのファイルに名前を付けることができます。
- sudo vi /etc/nginx/conf.d/example.com.conf
次のコードブロックをファイルに追加します。必ず更新してください。 example.com
と www.example.com
サーバーのFQDNまたはパブリックIPアドレスと一致させます。 このコードは、サーバーのHTTPトラフィックをリッスンしているKibanaアプリケーションに転送するようにNginxを構成します localhost:5601
. さらに、Nginxが読み取りを行うように構成します htpasswd.users
ファイルし、基本認証が必要です。
前提条件のNginxチュートリアルを最後まで実行した場合は、このファイルを既に作成し、コンテンツを入力している可能性があることに注意してください。 その場合は、以下を追加する前に、ファイル内の既存のコンテンツをすべて削除してください。
server {
listen 80;
server_name example.com www.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;
}
}
終了したら、ファイルを保存して閉じます。
次に、構成に構文エラーがないか確認します。
- sudo nginx -t
出力にエラーが報告された場合は、戻って、構成ファイルに配置したコンテンツが正しく追加されていることを再確認してください。 あなたが見たら syntax is ok
出力で、先に進んでNginxサービスを再起動します。
- sudo systemctl restart nginx
デフォルトでは、SELinuxセキュリティポリシーが適用されるように設定されています。 次のコマンドを実行して、Nginxがプロキシされたサービスにアクセスできるようにします。
- sudo setsebool httpd_can_network_connect 1 -P
SELinuxの詳細については、チュートリアル CentOS7でのSELinuxの概要を参照してください。
これで、FQDNまたはElasticStackサーバーのパブリックIPアドレスを介してKibanaにアクセスできます。 次のアドレスに移動し、プロンプトが表示されたらログイン資格情報を入力することで、Kibanaサーバーのステータスページを確認できます。
http://your_server_ip/status
このステータスページには、サーバーのリソース使用状況に関する情報が表示され、インストールされているプラグインが一覧表示されます。
注:「前提条件」セクションで説明したように、サーバーでSSL/TLSを有効にすることをお勧めします。 このチュートリアルに従って、CentOS7でNginxの無料SSL証明書を取得できます。 SSL / TLS証明書を取得したら、戻ってこのチュートリアルを完了することができます。
Kibanaダッシュボードが構成されたので、次のコンポーネントであるLogstashをインストールしましょう。
ステップ3—Logstashのインストールと構成
BeatsがデータをElasticsearchデータベースに直接送信することは可能ですが、最初にLogstashを使用してデータを処理することをお勧めします。 これにより、さまざまなソースからデータを収集し、それを共通の形式に変換して、別のデータベースにエクスポートすることができます。
次のコマンドでLogstashをインストールします。
- sudo yum install logstash
Logstashをインストールした後、構成に進むことができます。 Logstashの構成ファイルはJSON形式で記述されており、 /etc/logstash/conf.d
ディレクトリ。 Logstashを構成するときは、Logstashを、一方の端でデータを取り込み、何らかの方法でデータを処理し、宛先(この場合はElasticsearch)に送信するパイプラインと考えると便利です。 Logstashパイプラインには、2つの必須要素があります。 input
と output
、および1つのオプション要素、 filter
. 入力プラグインはソースからのデータを消費し、フィルタープラグインはデータを処理し、出力プラグインはデータを宛先に書き込みます。
と呼ばれる構成ファイルを作成します 02-beats-input.conf
Filebeat入力を設定する場所:
- sudo vi /etc/logstash/conf.d/02-beats-input.conf
以下を挿入します input
構成。 これは、 beats
TCPポートでリッスンする入力 5044
.
input {
beats {
port => 5044
}
}
ファイルを保存して閉じます。 次に、という構成ファイルを作成します 10-syslog-filter.conf
、syslogsとも呼ばれるシステムログのフィルターを追加します。
- sudo vi /etc/logstash/conf.d/10-syslog-filter.conf
次のsyslogフィルター構成を挿入します。 このシステムログ構成の例は、公式のElasticドキュメントから取得したものです。 このフィルターは、着信システムログを解析して、事前定義されたKibanaダッシュボードで構造化されて使用できるようにするために使用されます。
filter {
if [fileset][module] == "system" {
if [fileset][name] == "auth" {
grok {
match => { "message" => ["%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} %{DATA:[system][auth][ssh][method]} for (invalid user )?%{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]} port %{NUMBER:[system][auth][ssh][port]} ssh2(: %{GREEDYDATA:[system][auth][ssh][signature]})?",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: %{DATA:[system][auth][ssh][event]} user %{DATA:[system][auth][user]} from %{IPORHOST:[system][auth][ssh][ip]}",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sshd(?:\[%{POSINT:[system][auth][pid]}\])?: Did not receive identification string from %{IPORHOST:[system][auth][ssh][dropped_ip]}",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} sudo(?:\[%{POSINT:[system][auth][pid]}\])?: \s*%{DATA:[system][auth][user]} :( %{DATA:[system][auth][sudo][error]} ;)? TTY=%{DATA:[system][auth][sudo][tty]} ; PWD=%{DATA:[system][auth][sudo][pwd]} ; USER=%{DATA:[system][auth][sudo][user]} ; COMMAND=%{GREEDYDATA:[system][auth][sudo][command]}",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} groupadd(?:\[%{POSINT:[system][auth][pid]}\])?: new group: name=%{DATA:system.auth.groupadd.name}, GID=%{NUMBER:system.auth.groupadd.gid}",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} useradd(?:\[%{POSINT:[system][auth][pid]}\])?: new user: name=%{DATA:[system][auth][user][add][name]}, UID=%{NUMBER:[system][auth][user][add][uid]}, GID=%{NUMBER:[system][auth][user][add][gid]}, home=%{DATA:[system][auth][user][add][home]}, shell=%{DATA:[system][auth][user][add][shell]}$",
"%{SYSLOGTIMESTAMP:[system][auth][timestamp]} %{SYSLOGHOST:[system][auth][hostname]} %{DATA:[system][auth][program]}(?:\[%{POSINT:[system][auth][pid]}\])?: %{GREEDYMULTILINE:[system][auth][message]}"] }
pattern_definitions => {
"GREEDYMULTILINE"=> "(.|\n)*"
}
remove_field => "message"
}
date {
match => [ "[system][auth][timestamp]", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
geoip {
source => "[system][auth][ssh][ip]"
target => "[system][auth][ssh][geoip]"
}
}
else if [fileset][name] == "syslog" {
grok {
match => { "message" => ["%{SYSLOGTIMESTAMP:[system][syslog][timestamp]} %{SYSLOGHOST:[system][syslog][hostname]} %{DATA:[system][syslog][program]}(?:\[%{POSINT:[system][syslog][pid]}\])?: %{GREEDYMULTILINE:[system][syslog][message]}"] }
pattern_definitions => { "GREEDYMULTILINE" => "(.|\n)*" }
remove_field => "message"
}
date {
match => [ "[system][syslog][timestamp]", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
}
終了したら、ファイルを保存して閉じます。
最後に、という構成ファイルを作成します 30-elasticsearch-output.conf
:
- sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf
以下を挿入します output
構成。 この出力は、で実行されているElasticsearchにBeatsデータを保存するようにLogstashを構成します。 localhost:9200
、使用されたビートにちなんで名付けられたインデックス。 このチュートリアルで使用されるビートはFilebeatです。
output {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
}
}
ファイルを保存して閉じます。
Filebeat入力を使用する他のアプリケーションにフィルターを追加する場合は、ファイルに名前を付けて、入力構成と出力構成の間でソートされるようにしてください。つまり、ファイル名は2桁の数字で始まる必要があります。 02
と 30
.
次のコマンドを使用して、Logstash構成をテストします。
- sudo -u logstash /usr/share/logstash/bin/logstash --path.settings /etc/logstash -t
構文エラーがない場合、出力は次のように表示されます。 Configruation OK
数秒後。 出力にこれが表示されない場合は、出力に表示されるエラーを確認し、構成を更新して修正してください。
構成テストが成功した場合は、Logstashを起動して有効にし、構成の変更を有効にします。
- sudo systemctl start logstash
- sudo systemctl enable logstash
Logstashが正しく実行され、完全に構成されたので、Filebeatをインストールしましょう。
ステップ4—Filebeatのインストールと構成
Elastic Stackは、Beatsと呼ばれるいくつかの軽量データシッパーを使用して、さまざまなソースからデータを収集し、LogstashまたはElasticsearchに転送します。 Elasticから現在入手可能なビートは次のとおりです。
- Filebeat :ログファイルを収集して送信します。
- Metricbeat :システムとサービスからメトリックを収集します。
- Packetbeat :ネットワークデータを収集して分析します。
- Winlogbeat :Windowsイベントログを収集します。
- Auditbeat :Linux監査フレームワークデータを収集し、ファイルの整合性を監視します。
- Heartbeat :アクティブプロービングを使用してサービスの可用性を監視します。
このチュートリアルでは、Filebeatを使用してローカルログをElasticStackに転送します。
を使用してFilebeatをインストールします yum
:
- sudo yum install filebeat
次に、Logstashに接続するようにFilebeatを構成します。 ここでは、Filebeatに付属している設定ファイルの例を変更します。
Filebeat構成ファイルを開きます。
- sudo vi /etc/filebeat/filebeat.yml
注: Elasticsearchと同様に、Filebeatの構成ファイルはYAML形式です。 これは、適切なインデントが重要であることを意味するため、これらの手順に示されているのと同じ数のスペースを使用するようにしてください。
Filebeatは多数の出力をサポートしていますが、通常はイベントを直接ElasticsearchまたはLogstashに送信して追加の処理を行うだけです。 このチュートリアルでは、Logstashを使用して、Filebeatによって収集されたデータに対して追加の処理を実行します。 FilebeatはElasticsearchに直接データを送信する必要がないので、その出力を無効にしましょう。 これを行うには、 output.elasticsearch
セクションを作成し、次の行の前にコメントを付けてコメントアウトします。 #
:
...
#output.elasticsearch:
# Array of hosts to connect to.
#hosts: ["localhost:9200"]
...
次に、 output.logstash
セクション。 行のコメントを解除します output.logstash:
と hosts: ["localhost:5044"]
を削除することによって #
. これにより、ポートでElasticStackサーバーのLogstashに接続するようにFilebeatが構成されます。 5044
、以前にLogstash入力を指定したポート:
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
ファイルを保存して閉じます。
Filebeatモジュールを使用してFilebeatの機能を拡張できるようになりました。 このチュートリアルでは、 system モジュールを使用します。このモジュールは、一般的なLinuxディストリビューションのシステムロギングサービスによって作成されたログを収集して解析します。
それを有効にしましょう:
- sudo filebeat modules enable system
次のコマンドを実行すると、有効なモジュールと無効なモジュールのリストが表示されます。
- sudo filebeat modules list
次のようなリストが表示されます。
OutputEnabled:
system
Disabled:
apache2
auditd
elasticsearch
haproxy
icinga
iis
kafka
kibana
logstash
mongodb
mysql
nginx
osquery
postgresql
redis
suricata
traefik
デフォルトでは、Filebeatはsyslogおよび許可ログにデフォルトのパスを使用するように構成されています。 このチュートリアルの場合、構成を変更する必要はありません。 モジュールのパラメータは、 /etc/filebeat/modules.d/system.yml
構成ファイル。
次に、インデックステンプレートをElasticsearchにロードします。 Elasticsearch index は、同様の特性を持つドキュメントのコレクションです。 インデックスは名前で識別されます。名前は、インデックス内でさまざまな操作を実行するときにインデックスを参照するために使用されます。 インデックステンプレートは、新しいインデックスが作成されるときに自動的に適用されます。
テンプレートをロードするには、次のコマンドを使用します。
- sudo filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["localhost:9200"]'
これにより、次の出力が得られます。
OutputLoaded index template
Filebeatには、KibanaでFilebeatデータを視覚化できるサンプルKibanaダッシュボードがパッケージ化されています。 ダッシュボードを使用する前に、インデックスパターンを作成し、ダッシュボードをKibanaにロードする必要があります。
ダッシュボードが読み込まれると、FilebeatはElasticsearchに接続してバージョン情報を確認します。 Logstashが有効になっているときにダッシュボードをロードするには、Logstash出力を手動で無効にし、Elasticsearch出力を有効にする必要があります。
- sudo filebeat setup -e -E output.logstash.enabled=false -E output.elasticsearch.hosts=['localhost:9200'] -E setup.kibana.host=localhost:5601
次のような出力が表示されます。
Output. . .
2018-12-05T21:23:33.806Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200
2018-12-05T21:23:33.811Z INFO elasticsearch/client.go:712 Connected to Elasticsearch version 6.5.2
2018-12-05T21:23:33.815Z INFO template/load.go:129 Template already exists and will not be overwritten.
Loaded index template
Loading dashboards (Kibana must be running and reachable)
2018-12-05T21:23:33.816Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200
2018-12-05T21:23:33.819Z INFO elasticsearch/client.go:712 Connected to Elasticsearch version 6.5.2
2018-12-05T21:23:33.819Z INFO kibana/client.go:118 Kibana url: http://localhost:5601
2018-12-05T21:24:03.981Z INFO instance/beat.go:717 Kibana dashboards successfully loaded.
Loaded dashboards
2018-12-05T21:24:03.982Z INFO elasticsearch/client.go:163 Elasticsearch url: http://localhost:9200
2018-12-05T21:24:03.984Z INFO elasticsearch/client.go:712 Connected to Elasticsearch version 6.5.2
2018-12-05T21:24:03.984Z INFO kibana/client.go:118 Kibana url: http://localhost:5601
2018-12-05T21:24:04.043Z WARN fileset/modules.go:388 X-Pack Machine Learning is not enabled
2018-12-05T21:24:04.080Z WARN fileset/modules.go:388 X-Pack Machine Learning is not enabled
Loaded machine learning job configurations
これで、Filebeatを起動して有効にできます。
- sudo systemctl start filebeat
- sudo systemctl enable filebeat
Elastic Stackを正しく設定すると、Filebeatはsyslogと認証ログのLogstashへの送信を開始し、LogstashはそのデータをElasticsearchにロードします。
Elasticsearchが実際にこのデータを受信していることを確認するには、次のコマンドでFilebeatインデックスをクエリします。
- curl -X GET 'http://localhost:9200/filebeat-*/_search?pretty'
次のような出力が表示されます。
Output{
"took" : 1,
"timed_out" : false,
"_shards" : {
"total" : 3,
"successful" : 3,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 3225,
"max_score" : 1.0,
"hits" : [
{
"_index" : "filebeat-6.5.2-2018.12.05",
"_type" : "doc",
"_id" : "vf5GgGcB_g3p-PRo_QOw",
"_score" : 1.0,
"_source" : {
"@timestamp" : "2018-12-05T19:00:34.000Z",
"source" : "/var/log/secure",
"meta" : {
"cloud" : {
. . .
出力に合計ヒット数が0と表示されている場合、Elasticsearchは検索したインデックスの下にログをロードしていないため、セットアップでエラーがないか確認する必要があります。 期待どおりの出力が得られたら、次のステップに進みます。このステップでは、Kibanaのダッシュボードのいくつかに慣れることができます。
ステップ5—Kibanaダッシュボードを探索する
以前にインストールしたWebインターフェイスであるKibanaを見てみましょう。
Webブラウザーで、ElasticStackサーバーのFQDNまたはパブリックIPアドレスに移動します。 手順2で定義したログイン資格情報を入力すると、Kibanaのホームページが表示されます。
左側のナビゲーションバーにあるDiscoverリンクをクリックします。 Discover ページで、事前定義された filebeat- *インデックスパターンを選択して、Filebeatデータを表示します。 デフォルトでは、これにより過去15分間のすべてのログデータが表示されます。 以下に、ログイベントといくつかのログメッセージを含むヒストグラムが表示されます。
ここでは、ログを検索および参照したり、ダッシュボードをカスタマイズしたりできます。 ただし、現時点では、Elastic Stackサーバーからsyslogを収集しているだけなので、それほど多くはありません。
左側のパネルを使用してダッシュボードページに移動し、 FilebeatSystemダッシュボードを検索します。 そこに到達したら、Filebeatに付属しているサンプルダッシュボードを検索できます system
モジュール。
たとえば、syslogメッセージに基づいて詳細な統計を表示できます。
また、どのユーザーが使用したかを表示することもできます sudo
コマンドといつ:
Kibanaには、グラフ化やフィルタリングなど、他にも多くの機能がありますので、お気軽に探索してください。
結論
このチュートリアルでは、システムログを収集して分析するためにElasticStackをインストールして構成しました。 Beats を使用して、ほぼすべてのタイプのログまたはインデックス付きデータをLogstashに送信できますが、Logstashフィルターを使用してデータを解析および構造化すると、データがさらに便利になります。 Elasticsearchで簡単に読み取れる一貫したフォーマット。