ELKスタック はフル機能のデータ分析プラットフォームであり、3つのオープンソースツール Elasticsearch で構成されています 、 Logstash 、および Kibana 。このスタックは、ログを一元的に保存および管理するのに役立ち、特定の時間のイベントを相互に関連付けることで問題を分析する機能を提供します。
この投稿では、ELKスタックを Ubuntu 18.04にインストールする方法について説明します。 / Ubuntu 16.04 。
コンポーネント
Elasticsearch – Logstashからの受信ログを保存し、ログ/データをリアルタイムで検索する機能を提供します
ログスタッシュ –ビート(フォワーダー)によって送信された受信ログの処理(収集、強化、Elasticsearchへの送信)。
キバナ –イベントとログの視覚化を提供します。
ビート –クライアントマシンにインストールされ、beatsプロトコルを介してLogstashまたはElasticsearchにログを送信します。
前提条件
Javaのインストール
ElasticsearchにはOpenJDKのいずれかが必要です またはOracleJDK お使いのマシンで利用できます。
ここで、このデモでは、OpenJDKを使用しています。以下のコマンドとAPTのwgetおよびHTTPSサポートパッケージを使用してJavaをインストールします。
sudo apt update sudo apt install -y openjdk-8-jdk wget apt-transport-https
Javaのバージョンを確認してください。
java -version
出力:
openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.18.04.1-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
Oracle Java JDKを使用する場合は、以下をお読みください。
読む :Ubuntu16.04にOracleJavaJDK8をインストールします
ELKリポジトリの構成
ELKスタックパッケージは、 Elastic COから簡単に入手できます。 公式リポジトリを設定する 。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Elasticsearchをインストールする
Luceneをベースにしたオープンソースの検索エンジンであるElasticsearchサーバーをインストールします。リアルタイムの分散型マルチテナント対応全文検索エンジンに、Webインターフェイス(HTTP)とスキーマフリーのJSONドキュメントを提供します。
この記事の執筆時点では、次のコマンドv6.4を使用してElasticsearchをインストールします。
sudo apt update sudo apt install -y elasticsearch
Elasticsearchサービスを開始します。
sudo systemctl start elasticsearch sudo systemctl enable elasticsearch
数分待ってから以下のコマンドを実行して、ElasticsearchRESTインターフェースのステータスを確認します。
curl -X GET http://localhost:9200
出力:
{ "name" : "nqS7TFZ", "cluster_name" : "elasticsearch", "cluster_uuid" : "vERyh1VpR46G9T21H_3gKQ", "version" : { "number" : "6.4.0", "build_flavor" : "default", "build_type" : "deb", "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" }
上記の出力は、Elasticsearchが正常に稼働していることを確認しています。
Logstashのインストール
Logstashは、オープンソースのデータ収集およびログ解析エンジンです。ログを収集し、解析してElasticsearchに保存して検索します。 Logstashでは160以上のプラグインを利用でき、追加の作業なしでさまざまなタイプのイベントを処理する機能を提供します。
sudo apt install -y logstash
LogstashのSSL証明書を作成する(オプション)
ログの安全な送信のためにSSL証明書を使用するようにクライアントマシンにインストールするフォワーダー(Filebeat)を設定することはオプションです。
ホスト名またはIPSANのいずれかを使用してSSL証明書を作成します。
オプション1:(ホスト名またはFQDN)
OpenSSLディレクトリに移動します。
cd /etc/ssl/
次に、OpenSSLを使用してSSL証明書を作成します。 server.itzgeek.localを置き換えます Logstashサーバーのホスト名を使用します。
sudo openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout logstash-forwarder.key -out logstash-forwarder.crt -subj /CN=server.itzgeek.local
このlogstash-forwarder.crt logstashサーバーにログを送信するすべてのクライアントサーバーにコピーする必要があります。
オプション2:(IPアドレス)
以下の手順に従って、IPSANのSSL証明書を作成します。
前提条件として、LogstashサーバーのIPアドレスをOpenSSL構成ファイルのSubjectAltNameに追加します。
sudo nano /etc/ssl/openssl.cnf
[v3_ca]を探します セクションを作成してsubjectAltNameを更新します LogstashサーバーのIPアドレスを使用します。
subjectAltName = IP:192.168.1.10
OpenSSLディレクトリに移動します。
cd /etc/ssl/
次に、次のコマンドを実行してSSL証明書を作成します。
sudo openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout logstash-forwarder.key -out logstash-forwarder.crt
このlogstash-forwarder.crt logstashサーバーにログを送信するすべてのクライアントサーバーにコピーする必要があります。
SSLの変換
Logstashが正しく機能するように、現在のキーをPKCS8形式に変換します。
sudo openssl pkcs8 -in logstash-forwarder.key -topk8 -nocrypt -out logstash-forwarder.key.pem
ファイルのアクセス許可を誰でも読み取り可能なものに変更します。
sudo chmod 644 /etc/ssl/logstash-forwarder.key.pem
Logstashの構成
Logstash構成は、入力、フィルター、および出力の3つのセクションで構成されます。すべてのセクションを1つのファイルに入れることも、セクションごとに別々のファイルに入れることもできます。末尾は .confです。 。
ここでは、入力、フィルター、出力セクションを配置するために単一のファイルを使用します。 /etc/logstash/conf.d/の下に構成ファイルを作成します ディレクトリ。
sudo nano /etc/logstash/conf.d/logstash.conf
入力セクションでは、クライアントマシン上にあるビート(Forwarder)からの着信ログをポート5044でリッスンするようにLogstashを構成します。
また、安全な通信のために、入力セクションにSSL証明書の詳細を追加します。
input { beats { port => 5044 # Set to False if you do not SSL ssl => true # Delete below lines if no SSL is used ssl_certificate => "/etc/ssl/logstash-forwarder.crt" ssl_key => "/etc/ssl/logstash-forwarder.key.pem" } }
フィルタセクション。 Grokを使用して、ログをElasticsearchに送信する前に解析し、保存します。
次のgrokフィルタは、 syslogというラベルの付いたログを検索します そして、それらを解析して構造化インデックスを作成しようとします。
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
その他のGROKフィルターパターンについては、こちらをご覧ください。 。
出力セクションでは、ログを保存する場所を定義します。ELKスタックの場合は明らかにElasticsearchです。
output { elasticsearch { hosts => localhost index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
次に、Logstashサービスを開始して有効にします。
sudo systemctl restart logstash sudo systemctl enable logstash
Logstashログ:
sudo cat /var/log/logstash/logstash-plain.log
Kibanaのインストールと構成
Kibanaは、Elasticsearchに保存されているデータの視覚化を提供します。次のコマンドを使用してKibanaをインストールします。
sudo apt install -y kibanaデフォルトでは、Kibanaはローカルホストでリッスンします。つまり、外部マシンからKibanaWebインターフェイスにアクセスすることはできません。
アクセスを有効にするには、 /etc/kibana/kibana.ymlを編集します ファイル。
sudo nano /etc/kibana/kibana.yml
サーバーのIPアドレスを使用して以下の行に変更を加えます。
server.host: "192.168.1.10"
また、ElasticsearchとKibanaが異なるマシンで実行される場合もあります 、したがって、以下の行をElasticsearchサーバーのIPアドレスで更新します。
elasticsearch.url: "http://localhost:9200"
マシンの起動時にKibanaを起動して有効にします。
sudo systemctl restart kibana sudo systemctl enable kibana
Beatsのインストール
利用可能なビートクライアントは4つあります。
パケットビート– ネットワークパケットデータを分析します。
ファイルビート– ログデータへのリアルタイムの洞察。
トップビート– インフラストラクチャデータから洞察を得る。
Metricbeat – メトリックをElasticsearchに送信します。
クライアントマシンがLogstashサーバーのホスト名を解決できることを確認します。ご使用の環境にDNSサーバーがない場合 、次に、クライアントマシンにLogstashサーバーのホストエントリを追加する必要があります。
sudo nano /etc/hosts
以下のようなエントリを作成します。
192.168.1.10 server.itzgeek.local
Filebeatのインストール
Filebeatは、リモートクライアントマシンで実行されるソフトウェアエージェントであり、ログをLogstashサーバーに送信して解析するか、Elasticsearchを送信して保存します。
aptのHTTPSサポートをインストールします。
sudo apt update sudo apt install -y apt-transport-https
FilebeatはElasticリポジトリで利用できるため、Filebeatをインストールするためにセットアップする必要があります。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
次のコマンドを使用してFilebeatをインストールします。
sudo apt update sudo apt install -y filebeat
ファイルビートの構成
まず、logstash-forwarder.crtファイルをリモートクライアントマシンにコピーします。
安全な通信のためにLogstashでSSLを使用していない場合は、この手順をスキップしてください。scp -pr [email protected]:/etc/ssl/logstash-forwarder.crt /etc/ssl
filebeat構成ファイルを編集します/etc/filebeat/filebeat.yml ログをLogstashサーバーに送信します。
sudo nano /etc/filebeat/filebeat.yml
以下の構成は、システムログ( / var / log / syslog )を送信するためのものです。 )Logstashサーバーに。このデモでは、/var/log/*.logをコメントアウトしました すべてのログがLogstashサーバーに送信されないようにします。
. . . filebeat.inputs: # Each - is an input. Most options can be set at the input level, so # you can use different inputs for various configurations. # Below are the input specific configurations. - type: log # Change to true to enable this input configuration. enabled: true # Paths that should be crawled and fetched. Glob based paths. paths: - /var/log/syslog #- /var/log/*.log . . .[出力]セクションで、 output.elasticsearch:セクションをコメントアウトします ログオンをElasticsearchに保存しないためです。
ここで、 output.logstash:という行を見つけます。 エントリを変更して、システムログをLogstashに送信し、SSL証明書の場所も記載します。
server.itzgeek.localを置き換えます IPアドレス IP SANを使用している場合は、Logstashサーバーの. . . output.logstash: hosts: ["server.itzgeek.local:5044"] # Comment out this line if you are not using SSL on Logstash server ssl.certificate_authorities: ["/etc/ssl/logstash-forwarder.crt"] . . .
Filebeatサービスを再起動します。
sudo systemctl restart filebeat
Filebeatのログは通常、ログファイルにあります。
sudo cat /var/log/filebeat/filebeat
Kibanaインターフェイスへのアクセス
次のURLにアクセスして、KibanaWebインターフェイスにアクセスします。
http:// your-ip-address:5601 /または
http:// your-serve-name:5601Kibanaのホームページが表示されます。
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042711551936.jpg)
最初のアクセス時に、ファイルビートインデックスをマップする必要があります。 管理に移動します>>インデックスパターン 。
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042711551971.jpg)
インデックスパターンに次のように入力します ボックス。
filebeat-*
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042711552051.jpg)
上記のようなfilebeatインデックスが表示されるはずです。 次のステップをクリックします 。
@timestampを選択します 次に、[インデックスパターンの作成]をクリックします 。
@timestamp
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042711552002.jpg)
インデックスパターンとそのマッピングを確認してください。
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042711552122.jpg)
検出をクリックします 左側のナビゲーションで、クライアントマシンからの受信ログを表示します。
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042711552232.jpg)
以上です。