GNU/Linux >> Linux の 問題 >  >> Cent OS

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

ELKスタックはElasticスタックとも呼ばれ、Elasticsearch、Logstash、およびKibanaで構成されます。すべてのログを1つの場所に保存し、特定の時間のイベントを相互に関連付けることで問題を分析するのに役立ちます。

このガイドは、ELKスタックのインストールに役立ちます CentOS 7 / RHEL 7

コンポーネント

ログスタッシュ –ビート(フォワーダー)によって送信された受信ログの処理(収集、エンリッチ、Elasticsearchへの送信)を行います。

Elasticsearch – Logstashからの受信ログを保存し、ログ/データをリアルタイムで検索する機能を提供します

キバナ –ログの視覚化を提供します。

ビート –クライアントマシンにインストールされ、beatsプロトコルを介してLogstashにログを送信します。

環境

フル機能のELKスタックを使用するには、ログの収集をテストするために2台のマシンが必要になります。

ELKスタック

Operating system : CentOS 7 Minimal
IP Address       : 192.168.1.10
HostName         : server.itzgeek.local

ファイルビート

Operating System : CentOS 7 Minimal
IP Address       : 192.168.1.20
HostName         : client.itzgeek.local

前提条件

Javaのインストール

ElasticsearchはJavaに基づいているため、OpenJDKまたはOracleJDKのいずれかがマシンにインストールされていることを確認してください。

読む CentOS 7 /RHEL7にOracleJava8をインストールする方法

ここでは、OpenJDK1.8を使用しています。

yum -y install java-1.8.0 wget

Javaのバージョンを確認してください。

java -version

出力:

java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

ELKリポジトリの構成

Elastic署名キーをインポートします。

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Elasticsearchリポジトリをセットアップしてインストールします。

vi /etc/yum.repos.d/elk.repo

以下のコンテンツをelk.repoに追加します ファイル。

[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

Elasticsearchをインストールする

Elasticsearchはオープンソースの検索エンジンであり、RESTfulWebインターフェースを使用してリアルタイムの分散検索と分析を提供します。 Elasticsearchは、Logstashによって送信されたすべてのデータを保存し、ユーザーの要求に応じてWebインターフェイス(Kibana)を介して表示します。

Elasticsearchをインストールします。

yum install -y elasticsearch

システムの起動中に開始するようにElasticsearchを構成します。

systemctl daemon-reload
systemctl enable elasticsearch
systemctl start elasticsearch

CURLを使用して、Elasticsearchがクエリに応答しているかどうかを確認します。

curl -X GET http://localhost:9200

出力:

 {
  "name" : "1DwGO86",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "xboS_6K5Q2OO1XA-QJ9GIQ",
  "version" : {
    "number" : "6.4.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "595516e",
    "build_date" : "2018-08-17T23:18:47.308994Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Logstashのインストール

Logstashは、イベントとログを管理するためのオープンソースツールであり、ログを収集して解析し、Elasticsearchに保存して検索します。 Logstashでは160以上のプラグインを利用でき、追加の作業なしでさまざまなタイプのイベントを処理する機能を提供します。

Logstashパッケージをインストールします。

yum -y install logstash

SSL証明書の作成(オプション)

Filebeat(Logstash Forwarder)は通常、クライアントサーバーにインストールされ、SSL証明書を使用して、安全な通信のためにLogstashサーバーのIDを検証します。

ホスト名またはIPSANのいずれかを使用してSSL証明書を作成します。

オプション1:(ホスト名FQDN)

ビート(フォワーダー)構成でLogstashサーバーのホスト名を使用する場合は、LogstashサーバーのAレコードがあることを確認し、クライアントマシンがLogstashサーバーのホスト名を解決できることも確認してください。

OpenSSLディレクトリに移動します。

cd /etc/pki/tls/

次に、SSL証明書を作成します。 を交換してください 1つは実際のLogstashサーバーのホスト名です。

openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt -subj /CN=server.itzgeek.local

オプション2:(IPアドレス)

ホスト名の代わりにIPアドレスを使用することを計画している場合は、手順に従ってIPSANのSSL証明書を作成してください。

IP SAN証明書を作成するには、LogstashサーバーのIPアドレスをOpenSSL構成ファイルのSubjectAltNameに追加する必要があります。

vi /etc/pki/tls/openssl.cnf

「[v3_ca]」セクションを探して、を置き換えます 1つはLogstashサーバーのIPです。

subjectAltName = IP:192.168.1.10

OpenSSLディレクトリに移動します。

cd /etc/pki/tls/

次に、次のコマンドを実行してSSL証明書を作成します。

openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
このlogstash-forwarder.crt Logstashサーバーにログを送信するすべてのクライアントマシンにコピーする必要があります。

Logstashの構成

Logstashの構成は、 /etc/logstash/conf.d/にあります。 。 Logstash構成ファイルは、入力、フィルター、および出力の3つのセクションで構成されています。 3つのセクションはすべて、1つのファイルにあるか、.confで終わる個別のファイルにあります。

入力、フィルター、出力セクションの配置には1つのファイルを使用することをお勧めします。

vi /etc/logstash/conf.d/logstash.conf

最初のセクションでは、入力構成のエントリを入力します。次の構成では、クライアントマシンにあるビート(フォワーダー)からの着信ログをポート5044でリッスンするようにLogstashを設定します。

また、安全な通信のために入力セクションにSSL証明書の詳細を追加します–オプション。

input {
 beats {
   port => 5044
   
   # Set to False if you do not use SSL 
   ssl => true

   # Delete below linesif you do not use SSL
   ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
   ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
   }
}

フィルタセクション。 Elasticsearchに送信する前に、Grokを使用してログを解析します。次のgrokフィルターは、 syslogを検索します ログにラベルを付け、それらを解析して構造化インデックスを作成しようとします。

filter {
if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGLINE}" }
    }

    date {
match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
  }

}

その他のフィルターパターンについては、grokdebuggerページをご覧ください。

出力セクションでは、ログを保存する場所を定義します。明らかに、Elasticsearchである必要があります。

output {
 elasticsearch {
  hosts => localhost
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
       }
stdout {
    codec => rubydebug
       }
}

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

systemctl start logstash
systemctl enable logstash

Logstashログを確認することで、問題のトラブルシューティングを行うことができます。

cat /var/log/logstash/logstash-plain.log

Kibanaのインストールと構成

Kibanaは、Elasticsearchに保存されているログの視覚化を提供します。次のコマンドを使用してKibanaをインストールします。

yum -y install kibana

kibana.ymlファイルを編集します。

vi /etc/kibana/kibana.yml

デフォルトでは、Kibanaはローカルホストでリッスンします。つまり、外部マシンからKibanaインターフェースにアクセスすることはできません。許可するには、以下の行をマシンのIPで編集します。

server.host: "192.168.1.10"

次の行のコメントを解除し、ElasticsearchインスタンスのURLで更新します。私の場合、ローカルホストです。

elasticsearch.url: "http://localhost:9200"

システムの起動時にkibanaを起動して有効にします。

systemctl start kibana
systemctl enable kibana

ファイアウォール

ELKスタックノードでファイアウォールを構成して、クライアントマシンからログを受信します。

5044 –Logstashがログを受信するための

5061 –外部マシンからKibanaインターフェースにアクセスするため。

firewall-cmd --permanent --add-port=5044/tcp
firewall-cmd --permanent --add-port=5601/tcp
firewall-cmd --reload

次に、ログをLogstashサーバーに送信するようにビートを構成します。

Filebeatのインストールと構成

利用可能な4つのビートクライアントがあります

  1. パケットビート –ネットワークパケットデータを分析します。
  2. ファイルビート –ログデータへのリアルタイムの洞察。
  3. トップビート –インフラストラクチャデータから洞察を得る。
  4. メトリックビート –メトリックをElasticsearchに送信します。

クライアントマシン(例:client.itzgeek.local)のシステムログを分析するには、filebeatをインストールする必要があります 。 beats.repoファイルを作成します。

vi /etc/yum.repos.d/beats.repo

以下のコンテンツを上記のリポジトリファイルに追加します。

[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

次に、次のコマンドを使用してFilebeatをインストールします。

yum -y install filebeat

ご使用の環境にDNSサーバーがない場合に備えて、クライアントマシンにホストエントリを設定します 。

vi /etc/hosts

クライアントマシンで以下のようなホストエントリを作成します。

 192.168.1.10 server.itzgeek.local server

Filebeat(beats)は、LogstashサーバーIDの検証にSSL証明書を使用するため、 logstash-forwarder.crtをコピーします。 Logstashサーバーからクライアントへ。

LogstashでSSLを使用していない場合は、この手順をスキップしてください。

scp -pr [email protected]:/etc/pki/tls/certs/logstash-forwarder.crt /etc/ssl/certs/

Filebeat構成ファイルはYAML形式であるため、インデントが非常に重要です。ガイドで使用されているのと同じ数のスペースを使用してください。

filebeat構成ファイルを開きます。

vi /etc/filebeat/filebeat.yml

上部に、プロスペクターセクションが表示されます。ここでは、Logstashに送信するログとその処理方法を指定する必要があります。各プロスペクターはで始まります キャラクター。

テストの目的で、 / var / log / messagesを送信するようにfilebeatを構成します Logstashサーバーへ。これを行うには、パスの下にある既存のプロスペクターを変更します セクション。

–/var/log/*.logをコメントアウトします すべての.logを送信しないようにするため そのディレクトリに存在するファイルをLogstashに送信します。

filebeat.inputs:
- type: log
 
      # Change to true to enable this input configuration. 
      enabled: true

      # Paths that should be crawled and fetched.
      paths:

        - /var/log/messages
        # - /var/log/*.log

.  .  .

セクションoutput.elasticsearch:をコメントアウトします ログをElasticsearchに直接保存することはないためです。

ここで、 output.logstashという行を見つけます。 以下のようにエントリを変更します。このセクションでは、ログをLogstashサーバー server.itzgeek.localに送信するためのfilebeatを定義します。 ポート5044 コピーされたSSL証明書が配置されるパスについて言及します

IP SANを使用している場合は、server.itzgeek.localをIPアドレスに置き換えてください

.   .   .

output.logstash:
  # The Logstash Server
  hosts: ["server.itzgeek.local:5044"]


  # Comment out this line if Logstash is not using SSL
  ssl.certificate_authorities: ["/etc/ssl/certs/logstash-forwarder.crt"]

.   .   .

サービスを再開します。

systemctl restart filebeat

Beatsログは通常syslogファイルにあります。

cat /var/log/filebeat/filebeat

Kibanaにアクセス

次のURLを使用してKibanaにアクセスします。

http:// your-ip-address:5601 /

Kibanaのホームページが表示されます。

最初のログイン時に、filebeatインデックスをマップする必要があります。 管理に移動します>>インデックスパターン

インデックスパターンに次のように入力します ボックス。

filebeat-*

上記のようなファイルビートインデックスが少なくとも1つ表示されます。 [次のステップ]をクリックします。

@timestampを選択します 次に、C reate をクリックします 。

@timestamp

インデックスパターンとそのマッピングを確認します。

次に、[検出]をクリックして、受信ログを表示し、検索クエリを実行します。

以上です。


Cent OS
  1. CentOS 7 / RHEL 7にElasticsearch、Logstash、Kibana4をインストールする方法

  2. CentOS 8 /RHEL8にElasticsearchをインストールする方法

  3. Elasticsearch、Logstash、Kibana4をUbuntu14.04/15.04にインストールする方法

  1. CentOS 7 /RHEL7にGraylog2をインストールする方法

  2. CentOS /RHEL8にElasticsearchをインストールする方法

  3. CentOS7にELKスタックをインストールする方法

  1. Ubuntu 18.04 / 20.04にELKスタック(Elasticsearch、Logstash、Kibana)をインストールする方法

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

  3. CentOS 7 /RHEL7にELKスタックをインストールする方法