はじめに
ELKスタックは、Elasticsearch、Logstash、およびKibanaで構成される人気のあるツールセットです。これらの3つのツールは、非常に強力な集中型ネットワークデータ分析およびサーバーログ視覚化ツールとして機能できるソフトウェアスタックを形成します。 ELKスタックは、負荷分散のために複数のサーバー間でスケールアウトできるようにも設計されています。このハウツーでは、ELKスタックのすべてのコンポーネントを単一のサーバーにインストールします。
前提条件
- Debian 8を実行しているサーバー。サーバーがまだない場合、Atlantic.netは、30秒以内に起動できる信頼性の高いVPSホスティングサーバーを提供します。
他のオペレーティングシステムもサポートされていますが、この記事ではDebian8に焦点を当てています。
Debian8へのELKスタックのインストール
Sudo
rootユーザーとして作業を行うことは、セキュリティの観点から一般的に推奨されていません。 sudo
を使用する root以外のユーザーからのroot権限を必要とするコマンドを実行できます。デフォルトでは、Debianにはsudo
は含まれていません パッケージなので、インストールします。
apt-get install sudo
次に、標準のユーザーアカウントをsudo
に追加する必要があります ルート権限コマンドを実行できるようにするグループ。 <username>
を置き換えます アカウントのユーザー名を使用します。
adduser <username> sudo
ログアウトして、新しいユーザーで再度ログインすると、続行できます。
初めて
sudo
を使用するとき セッションでは、現在のユーザーのパスワードの入力を求められます。
Elasticsearchのインストール
サーバーにJavaをインストールして、プロセスを開始しましょう。
ELKスタックのデータインデックス作成および検索コンポーネントであるElasticsearchを実行するには、Javaが必要です。 OpenJDK 7リリースをインストールしますが、Elasticsearchのサポートマトリックスにリストされている任意のJREをインストールできます。
まず、サーバー上のパッケージリストを更新する必要があります。
sudo apt-get update
これで、JREをインストールできます。
sudo apt-get install openjdk-7-jre
APTがソートするための依存関係がたくさんあるため、このインストールには時間がかかる場合があります。
それが完了したら、Elasticsearchをインストールできます。公式のDebianリポジトリにあるElasticsearchのバージョンは非常に古く、新しいバージョンのKibanaではサポートされていないため、elastic.coリポジトリをサーバーに追加し、そこからElasticsearchをインストールします。
Elastic.coのリポジトリ署名キーをダウンロードしてインストールします。
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
次に、リポジトリを/etc/apt/sources.list.d/
に追加できます。 ディレクトリ。
echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/Elasticsearch-2.x.list
この時点で、パッケージリストを再度更新する必要があります。これにより、Elasticsearchの新しいバージョンがelastic.coリポジトリからパッケージリストに追加されます。
sudo apt-get update
これで、Elasticsearchをインストールできます。
sudo apt-get install elasticsearch
また、システムの起動時に起動するようにElasticsearchサービスを構成する必要があります。
sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service
それでおしまい!これで、Elasticsearchサービスを開始できます。
sudo systemctl start elasticsearch.service
そして、それがアクティブであることを確認してください。
systemctl status elasticsearch.service
Elasticsearchの構成
この場合は必要ありませんが、KibanaとElasticsearchを異なるサーバーで実行する場合(多くのELKデプロイメントと同様)、Elasticsearch構成ファイル/etc/elasticsearch/elasticsearch.yml
Elasticsearchサーバーで、ファイルの任意の場所に次の2行を追加します。
http.cors.allow-origin: "/.*/" http.cors.enabled: true
同じファイルに、Elasticsearchクラスターに名前を付ける行を追加します。デフォルト名はelasticsearchです。
cluster.name: elasticcluster
Elasticsearch構成ファイルの編集
YAMLファイルは空白に敏感であるため、構成ファイルに空白行やスペースを追加しないでください。
次に、Elasticsearchデーモンを再起動します。
sudo systemctl restart elasticsearch.service
もう一度、デーモンが正常に実行されていることを確認します。
systemctl status elasticsearch.service
Elasticsearchサービスのステータス
Logstashのインストール
Elasticsearchとほぼ同じ方法で、ELKスタックのログ配布および変換コンポーネントであるLogstashをインストールできます。
このハウツーに従っている場合は、Elastic.coパッケージ署名キーがすでに追加されています。したがって、その部分をスキップして、Elastic.cologstashリポジトリを/etc/apt/sources.list.d/
にすぐに追加できます。 。
echo "deb http://packages.elastic.co/logstash/2.0/debian stable main" | sudo tee -a /etc/apt/sources.list
そしてもちろん、パッケージリストを更新します。
sudo apt-get update
次に、Logstashをインストールできます。
sudo apt-get install logstash
Elasticsearchと同様に、システムの起動時にLogstashを有効にする必要があります。
sudo systemctl daemon-reload sudo systemctl enable logstash.service
これで、Logstashを開始できます。
sudo systemctl start logstash.service
そして、それが実行されていることを確認してください。
systemctl status logstash.service
これで、構成に進むことができます!
ログスタッシュ構成
Logstashは、/etc/logstash/conf.d
にある構成ファイルを使用します 。デフォルト設定がないため、そのディレクトリに3つの新しいファイルを作成する必要があります。
cd /etc/logstash/conf.d sudo touch 01-input.conf 10-syslog.conf 30-lumberjack-output.conf
最初のファイル01-input.conf
を使用します 、Lumberjackが着信ログをリッスンする方法を指定します。
編集用にファイルを開きます(必要に応じて、必要に応じてテキストエディタに置き換えます)。
sudo editor 01-input.conf
次のブロックを追加します:
input { lumberjack { port => 5000 type => "logs" ssl_certificate => "/etc/ssl/certs/logstash-forwarder.crt" ssl_key => "/etc/ssl/logstash-forwarder.key" } }
ファイルを保存して閉じます。
まだSSL証明書について心配する必要はありません。間もなく生成されます。
次に、フィルター構成を10-syslog.conf
に追加する必要があります。 。フィルタは、着信メッセージ(ログ)と照合し、Elasticsearchでインデックスを作成する前にデータに変換を適用できます。
エディターでファイルを開きます
sudo editor 10-syslog.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形式に一致するすべての着信ログをインターセプトし、タイムスタンプとホスト名のフィールドを各メッセージに追加します。また、メッセージを生成したプログラムであるsyslogPIDやsyslogメッセージ自体などの情報をログメッセージから抽出します。
Logstash/Elasticsearchで使用する新しいタイプのログごとに新しいフィルターを作成する必要があります。
最後に、出力構成ファイル30-lumberjack-output.conf
に移動できます。 。このファイルには、インデックス付きメッセージをElasticsearchに送信するように指定する単純な出力ブロックとクラスター名が含まれます。
エディターでファイルを開きます。
sudo editor 30-lumberjack-output.conf
次のブロックを追加します:
output { elasticsearch { hosts => ["localhost"] } }
次に、ELKスタックのSSL証明書を生成します。
SSL証明書を生成する
Logstashがログメッセージの通信に使用するLumberjackプロトコルは、エンドツーエンドで安全になるように設計されており、SSLは厳しい要件です。ただし、証明書を生成するのは非常に簡単です。
servers
にホスト名ではなくIPアドレスを使用しているため /etc/logstash-forwarder.conf
のディレクティブ 、生成されたSSL証明書にIPSANフィールドを追加する必要があります。 subjectAltName
を追加して1つ含めます OpenSSL構成ファイル/etc/ssl/openssl.cnf
への行 。
sudo editor /etc/ssl/openssl.cnf
[ v3_ca ]
を含む行を見つけます 、その下に次の行を挿入します。 (127.0.0.1
を置き換えます Logstashが別のサーバーにインストールされている場合は、LogstashサーバーのIPアドレスを使用します。)
[ v3_ca ] subjectAltName = IP:127.0.0.1
ファイルを保存して閉じます。これでSSL証明書を生成できます。
sudo openssl req -x509 -batch -nodes -newkey rsa:2048 -keyout /etc/ssl/logstash-forwarder.key -out /etc/ssl/certs/logstash-forwarder.crt sudo chown logstash:logstash /etc/ssl/logstash-forwarder.key sudo chmod 600 /etc/ssl/logstash-forwarder.key
ここで、logstashを再起動し、正しく起動したかどうかを確認します。
sudo systemctl restart logstash.service systemctl status logstash.service
Logstashサービスのステータス
起動している場合でも、/var/log/logstash/logstash.*
にあるログファイルを確認してください。 起動時にエラーが発生しないようにします。
Logstash-Forwarderのインストール
Logstashのサーバー側コンポーネントをインストールしたので、ログを監視するすべてのサーバーにLogstash-Forwarderクライアントをインストールする必要があります。
このチュートリアルでは、残りのELKを実行している同じサーバーにLogstash-Forwarderをインストールしますが、通常はLogstash-Forwarderを他のサーバーで実行します。
まず、システムに新しいリポジトリをもう一度追加する必要があります。
echo "deb http://packages.elasticsearch.org/logstashforwarder/debian stable main" | sudo tee -a /etc/apt/sources.list.d/logstash-forwarder.list
そして、もう一度、パッケージリストを更新します。
sudo apt-get update
これで、Logstash-Forwarderをインストールできます。
sudo apt-get install logstash-forwarder
インストールが完了したら、Logstash-Forwarderの構成ファイルを開きます。
sudo editor /etc/logstash-forwarder.conf
既存のデフォルト構成を消去し、次のブロックを追加します。
{ "network": { "servers": [ "127.0.0.1:5000" ], "timeout": 15, "ssl ca": "/etc/ssl/certs/logstash-forwarder.crt" }, "files": [ { "paths": [ "/var/log/syslog", "/var/log/auth.log" ], "fields": { "type": "syslog" } } ] }
この構成では、/var/log/syslog
がチェックされます。 および/var/log/auth.log
新しいエントリの場合は、それらのファイルからの各送信メッセージにsyslog
のタグを付けます。 type
で フィールド。
Logstash-Forwarderを別のホストにインストールする場合は、必ず
servers
を変更してください。 リモートサーバーのIPアドレスを含めるディレクティブ。また、SSL証明書ファイルをリモートサーバーの正しい場所にコピーしてください。
次に、起動時にLogstash-Forwarderを有効にします。
sudo systemctl daemon-reload sudo systemctl enable logstash-forwarder.service
最後に、Logstash-Forwarderサービスを再起動して、構成の変更を適用できます。
sudo systemctl restart logstash-forwarder.service
デーモンが正常に起動したら、Kibanaのセットアップに進み、完全なELKスタックを起動して実行できます。
systemctl status logstash-forwarder.service
Logstash-forwarderサービスのステータス
logstash-forwarderが機能しているかどうかを確認するには、ログファイルで処理中のイベントを監視します。
tail -f /var/log/logstash-forwarder/*
Logstash-フォワーダーログファイル
Kibanaのインストール
残念ながら、この記事の執筆時点では、elastic.coはKibanaのパッケージバージョンを提供しておらず、デーモン管理はユーザーに任されています。 systemdサービスファイルを作成し、Kibanaを手動でインストールする必要があります。
/opt
に移動します ディレクトリを作成してKibanaをダウンロードします。
cd /opt wget -qO - https://download.elastic.co/kibana/kibana/kibana-4.3.0-linux-x64.tar.gz | sudo tar -xzf -
Kibanaを実行するための新しいユーザーを作成し、プログラムディレクトリの所有権を設定する必要があります。
sudo useradd kibana sudo chown kibana:kibana kibana-4.3.0-linux-x64/ -R
この手順に従って、systemdサービスファイルを作成できます。
sudo touch /usr/lib/systemd/system/kibana.service
ファイルにサービス定義を追加します。
sudo editor /usr/lib/systemd/system/kibana.service [Unit] Description=kibana Documentation=http://www.elastic.co Wants=network-online.target After=network-online.target [Service] User=kibana Group=kibana ExecStart=/opt/kibana-4.3.0-linux-x64/bin/kibana Restart=always StandardOutput=null # Connects standard error to journal StandardError=journal [Install] WantedBy=multi-user.targetに接続します
ここで、すべてのsystemdユニットをリロードしてから、Kibanaサービスを有効にする必要があります。
sudo systemctl daemon-reload sudo systemctl enable kibana.service
これで、Kibanaを起動できます。
sudo systemctl start kibana.service
実行されていることを再確認してください。オフになっています。
systemctl status kibana.service
Kibanaサービスステータス
Kibanaの構成
メインのKibana構成ファイルは、/opt/kibana-4.3.0-linux-x64/config/kibana.yml
にあります。 。このハウツーにはデフォルトのオプションで十分ですが、構成の必要に応じて設定を変更できます。
Webブラウザのポート5601でサーバーのIPアドレスに移動し、Kibana初期化ページにアクセスします。 Kibanaは、インデックスパターンを構成するように要求します。 received_at
を選択します 時間フィールド名を入力し、Create
を押します。 。
Kibanaでインデックスパターンを作成する
それでおしまい! ELKスタックコンポーネント(Elasticsearch、Logstash、Kibana)がインストールされ、操作可能です。
次のステップ
Debian 8へのELKスタックのインストールに関するこのチュートリアルを続けていただき、ありがとうございます。関連記事をもう一度確認し、超高速VPSサーバーの1つを試乗してください。