エルク フル機能のデータ分析スタックであり、 Elasticsearchで構成されています 、Logstash、およびKibanaは、ログを一元的に保存および管理するのに役立ち、特定の時間のイベントを相互に関連付けることで問題を分析する機能を提供します。
このガイドは、ELKスタックをUbuntu16.04にインストールするのに役立ちます。
コンポーネント
Logstash –ビート(フォワーダー)によって送信された受信ログの処理(収集、エンリッチ、Elasticsearchへの送信)を行います。
Elasticsearch – Logstashからの受信ログを保存し、ログ/データをリアルタイムで検索する機能を提供します
Kibana –ログの視覚化を提供します。
Beats –クライアントマシンにインストールされ、beatsプロトコルを介してLogstashにログを送信します。
前提条件
rootユーザーに切り替えます。
su -
または
sudo su -
ElasticsearchはJavaに基づいているため、 OpenJDKが必要です。 または、マシンにインストールされているOracleJDK。
読む : Ubuntu 16.04 /LinuxMint18にOracleJava8をインストールする方法
ここでは、OpenJをインストールすることを選択します D K 。
apt-get update apt-get install -y openjdk-8-jdk wget
JAVAのバージョンを確認してください。
java -version
出力:
openjdk version "1.8.0_131" OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11) OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
Elasticsearchをインストールする
Elasticsearchはオープンソースの検索サーバーであり、RESTfulWebインターフェースを使用してリアルタイムの分散検索と分析を提供します。
Elasticsearchは、logstashによって送信されたすべてのデータを保存し、ユーザーの要求に応じてkibanaを介して表示します。
このトピックでは、ELKに必要な構成設定について説明します。 CentOS 7 / Ubuntu 16.04 / LinuxMint18にElasticsearchをインストールすることもできます。 詳細については
Elasticsearchリポジトリをセットアップします。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elk.list
Elasticsearchをインストールします。
apt-get update apt-get install -y elasticsearch
システムの起動中に開始するようにElasticsearchを構成します。
systemctl enable elasticsearch systemctl start elasticsearch
Elastisearchは、HTTPリクエストを処理するために9200をリッスンしているはずです。 CURLを使用して応答を取得できます。
curl -X GET http://localhost:9200
出力:
{ "name" : "gf5QYAn", "cluster_name" : "elasticsearch", "cluster_uuid" : "S6gZNkMERpSr-MGXqEFUJw", "version" : { "number" : "5.5.2", "build_hash" : "b2f0c09", "build_date" : "2017-08-14T12:33:14.154Z", "build_snapshot" : false, "lucene_version" : "6.6.0" }, "tagline" : "You Know, for Search" }
Logstashのインストール
Logstashはオープンソースツールであり、ログを収集し、解析してElasticsearchに保存して検索します。 Logstashには160以上のプラグインが用意されており、追加の作業なしでさまざまなタイプのイベントを処理する機能を提供します。
apt-getコマンドを使用してLogstashをインストールします。
apt-get install -y logstash
SSL証明書を作成する
クライアントサーバーにインストールされるフォワーダー(filebeat)は、SSL証明書を使用して、安全な通信のためにLogstashサーバーのIDを検証します。
ホスト名またはIPSANのいずれかを使用してSSL証明書を作成します。
オプション1:(ホスト名FQDN)
beats(フォワーダー)構成でホスト名を使用する場合は、logstashサーバーのAレコードがあることを確認してください。クライアントマシンがlogstashサーバーのホスト名を解決できることを確認してください。
ご使用の環境にネームサーバーがない場合。 logstashサーバーだけでなくクライアントマシンにもlogstashサーバーのホストエントリを追加してください。
sudo nano /etc/hosts 192.168.12.10 server.itzgeek.local
OpenSSLディレクトリに移動します。
cd /etc/ssl/
次に、SSL証明書を作成します。 「緑」を置き換えます 」1つは実際のlogstashサーバーのホスト名です。
openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout logstash-forwarder.key -out logstash-forwarder.crt -subj /CN=server.itzgeek.local
オプション2:(IPアドレス)
ホスト名の代わりにIPアドレスを使用する場合は、手順に従ってIPSANのSSL証明書を作成してください。
前提条件として、OpenSSL構成ファイルのSubjectAltNameにlogstashサーバーのIPアドレスを追加する必要があります。
nano /etc/ssl/openssl.cnf
「[v3_ca]」セクションを探し、「 green」を置き換えます 」1つはlogstashサーバーのIPです。
subjectAltName = IP:192.168.12.10
OpenSSLディレクトリに移動します。
cd /etc/ssl/
次に、次のコマンドを実行してSSL証明書を作成します。
openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout logstash-forwarder.key -out logstash-forwarder.crt
このlogstash-forwarder.crtは、logstashサーバーにログを送信するすべてのクライアントサーバーにコピーする必要があります。
Logstashの構成
Logstashの構成は、/ etc / logstash /conf.d/にあります。ファイルが存在しない場合は、新しいファイルを作成します。 logstash構成ファイルは、入力、フィルター、および出力の3つのセクションで構成されています。 3つのセクションすべてが単一のファイルに含まれているか、各セクションに.confで終わる個別のファイルがあります。
入力、フィルター、出力セクションの配置には1つのファイルを使用することをお勧めします。
nano /etc/logstash/conf.d/logstash.conf
最初のセクションでは、入力構成のエントリを入力します。次の構成では、クライアントマシンにあるビート(フォワーダー)からの着信ログをポート5044でリッスンするようにLogstashを設定します。また、安全な通信のために、入力セクションにSSL証明書の詳細を追加します。
input { beats { port => 5044 ssl => true ssl_certificate => "/etc/ssl/logstash-forwarder.crt" ssl_key => "/etc/ssl/logstash-forwarder.key" congestion_threshold => "40" } }
フィルタセクション。 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
以下のログを確認することで、問題のトラブルシューティングを行うことができます。
cat /var/log/logstash/logstash-plain.log
次に、ログをlogstashサーバーに送信するようにビートを構成します。
利用可能なビートクライアントは4つあります。
- Packetbeat –ネットワークパケットデータを分析します。
- Filebeat –ログデータへのリアルタイムの洞察。
- トップビート–インフラストラクチャデータから洞察を得る。
- Metricbeat –メトリックをElasticsearchに送信します。
クライアントマシンの場合:
システムログを分析するために、ここではfilebeatを使用します。 filebeatは公式ウェブサイトからダウンロードできます。 、または次のコマンドを使用してインストールできます。
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/beats.list
Filebeatをインストールします。
apt-get update apt-get install -y filebeat
Filebeat(beats)は、logstashサーバーのIDを検証するためにSSL証明書を使用するため、logstash-forwarder.crtをlogstashサーバーからクライアントにコピーします。
$ scp -pr [email protected]:/etc/ssl/logstash-forwarder.crt /etc/ssl
ファイルビートの構成
次に、filebeatをLogstashに接続します。以下の手順に従って、ELKスタックでfilebeatを構成します。
Filebeat構成ファイルはYAML形式であるため、インデントが非常に重要です。ガイドで使用されているのと同じ数のスペースを使用してください。
filebeat構成ファイルを開きます。
nano /etc/filebeat/filebeat.yml
一番上に、Filebeatプロスペクターが表示されます。 ここでは、logstashに送信するファイルとその処理方法を指定する必要があります。各プロスペクターは–で始まります キャラクター。
テストの目的で、 / var / log / syslogを送信するようにfilebeatを構成します Logstashサーバーへ。これを行うには、パスの下にある既存のプロスペクターを変更します セクション。 –/var/log/*.logをコメントアウトします すべての.logを送信しないようにするため そのディレクトリにあるファイルをLogstashに送信します。
. . . paths: - /var/log/syslog # - /var/log/*.log . . .
[出力]セクション 、セクション output.elasticsearch:をコメントアウトします ログをElasticsearchに直接保存することはないためです。
ここで、「 output.logstash:」という行を見つけます。 」と入力し、以下のようにエントリを変更します。このセクションでは、ログをlogstashサーバー「 server.itzgeek.local」に送信するためのfilebeatを定義します。 」ポート「5044 」と入力し、コピーされたSSL証明書が配置されるパスを指定します。
注:「 server.itzgeek.local」を置き換えます 」IPSANを使用している場合は、IPアドレスを指定します。
. . . output.logstash: # The Logstash hosts hosts: ["server.itzgeek.local:5044"] # Optional SSL. By default is off. # List of root certificates for HTTPS server verifications ssl.certificate_authorities: ["/etc/ssl/logstash-forwarder.crt"] . . .
サービスを再開します。
systemctl restart filebeat systemctl enable filebeat
Beatsログは通常、ログファイルにあります。
cat /var/log/filebeat/filebeat
Kibanaのインストールと構成
Kibanaは、elasticsearchに保存されているログの視覚化を提供し、公式ウェブサイトからダウンロードします。 または、次のコマンドを使用してリポジトリを設定します。
apt-get install -y kibana
kibana.ymlファイルを編集します。
nano /etc/kibana/kibana.yml
デフォルトでは、Kibanaはローカルホストでリッスンします。つまり、外部マシンからKibanaインターフェースにアクセスすることはできません。有効にするには、マシンのIPで以下の行を編集します。
server.host: "192.168.12.10"
次の行のコメントを解除し、ElasticsearchインスタンスのURLで更新します。私の場合、ローカルホストです。
elasticsearch.url: "http://localhost:9200"
システムの起動時にkibanaを起動して有効にします。
systemctl start kibana systemctl enable kibana
次のURLを使用してKibanaにアクセスします。
http:// your-ip-address:5601 /または
http:// your-serve-name:5601最初のログイン時に、ファイルビートインデックスをマップする必要があります。
インデックス名またはパターンに次のように入力します ボックス。
filebeat-*
@timestampを選択します 次に、[作成]をクリックします。
@timestamp
インデックスパターンとそのマッピングを確認します。
検出をクリックします 左側のナビゲーションで、クライアントマシンからの受信ログを表示します。
それで全部です。 Ubuntu16.04でELKスタックを正常にセットアップしました