この投稿では、Ubuntu 14.04 / 15.04にElasticsearch、Logstash、Kibana4をインストールする方法を見ていきます。このELKスタックは、ログを一元化された場所に保存および管理するのに役立ちます。 ELKスタックは、特定の時間のイベントを相互に関連付けることで問題を分析するための素晴らしいスタックを作成する4つの重要なコンポーネントで構成されています。
ログを一元化することで、システム管理者は、ログを各マシンに移動することなく問題や問題を分析し、ビジネス要件の管理者にそれらのログを視覚化することが容易になります。
コンポーネント:
Logstash –受信ログの処理(収集、解析、Elasticsearchへの送信)を行います。
Elasticsearch –Logstashからのログを保存します。
Kibana 4 –ログを視覚化するためのWebインターフェイス(独自のインターフェイスがあります)。上記の3つはサーバーにインストールされています。
Logstash-forwarder –クライアントマシンにインストールされ、ランバージャックプロトコルを介してログをLogstashに送信します。
アプリケーションのバージョン:
この記事では、ELKスタック用の以下のバージョンのソフトウェアを使用しています。
Elastisearch 1.7.0
logstash-1.5.3
Kibana 4.1.1
logstash-forwarder-0.4.0
前提条件:
1.openJDKまたはOracleJDKのいずれかをインストールする必要があります。OracleJDKをインストールすることをお勧めします。次のコマンドを使用して、Javaのバージョンを確認します。
$ java -version java version "1.8.0_11" Java(TM) SE Runtime Environment (build 1.8.0_11-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)>
2.wgetをインストールします。
$ sudo su - # apt-get update # apt-get install wget
Elasticsearchのインストール:
Elasticsearchはオープンソースの検索サーバーであり、RESTfulWebインターフェースを使用してリアルタイムの分散検索と分析を提供します。 Elasticsearchは、logstashサーバーによって送信されたすべてのログを保存し、kibana4がWebインターフェースを介して完全なユーザー要求を要求したときにメッセージを表示します。
このトピックでは、ELKに必要な構成設定について説明します。詳細な手順については、CentOS 7 / Ubuntu 14.10 / LinuxMint17.1へのElasticsearchのインストールも参照してください。
Elasticsearchをインストールしましょう。公式ウェブサイトからダウンロードできます。リポジトリをセットアップし、Elasticsearchの最新バージョンをインストールします。
# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - # echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.list # apt-get update && apt-get install elasticsearch
システムの起動中に開始するようにElasticsearchを構成します。
# systemctl daemon-reload # systemctl enable elasticsearch.service # systemctl start elasticsearch.service
Elasticsearchが完全に再起動するまで、少なくとも1分待ってください。そうしないと、テストが失敗します。 ElastisearchはHTTPリクエストの処理を9200でリッスンする必要があります。これで、CURLを使用してレスポンスを取得できます。
# curl -X GET http://localhost:9200 { "status" : 200, "name" : "Thermo", "cluster_name" : "elasticsearch", "version" : { "number" : "1.7.0", "build_hash" : "929b9739cae115e73c346cb5f9a6f24ba735a743", "build_timestamp" : "2015-07-16T14:31:07Z", "build_snapshot" : false, "lucene_version" : "4.10.4" }, "tagline" : "You Know, for Search" }
Logstashのインストール:
Logstashはオープンソースツールであり、ログの収集、解析、および検索の保存に使用されます。はい、logstashにはログを視覚化するためのWebインターフェイス(kibana3が組み込まれています)が付属していますが、ここでは説明しませんが、代わりにkibana4を使用します。プラグインを追加することで、さまざまな種類のイベントの処理を拡張できます。現在、160を超えるプラグインが利用可能です。インストールに直接行きましょう。
# echo "deb http://packages.elasticsearch.org/logstash/1.5/debian stable main" | sudo tee -a /etc/apt/sources.list # apt-get update && apt-get install logstash
logstashサーバーがインストールされたら、次のセクションに進みましょう
SSL証明書を作成する:
ログを送信するためにクライアントサーバーにインストールされるLogstash-forwarderには、logstashサーバーのIDを検証するためのSSL証明書が必要です。 SSL証明書を作成するには2つのオプションがあり、logstash-forwarderの構成によって異なります。ホスト名(「servers」:[「server.itzgeek.local:5050」])を使用する場合、SSLのサブジェクト名は「server.itzgeek.local」と一致する必要があります。 ("servers":["192.168.12.10:5050"])IPアドレスを使用する場合は、値192.168.12.10のIPSANを使用してSSL証明書を作成する必要があります。
いずれかの方法に従ってSSL証明書を作成します。
オプション1:(ホスト名FQDN)
証明書を作成する前に、logstashサーバーのAレコードがあることを確認してください。クライアントサーバーがlogstashサーバーのホスト名を解決できることを確認します。 DNSがない場合は、logstashサーバーのホストエントリを追加してください。ここで、192.168.12.10はlogstashサーバーのIPアドレスであり、itzgeekはlogstashサーバーのホスト名です。
# vi /etc/hosts 192.168.12.10 server.itzgeek.local
SSl証明書を作成しましょう。 OpenSSLディレクトリに移動します。
# cd /etc/ssl/
次のコマンドを実行してSSL証明書を作成し、「赤」の証明書を実際の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アドレス)
SSL証明書を作成する前に、LogstashサーバーのIPアドレスをOpenSSL構成ファイルのSubjectAltNameに追加する必要があります。
# vi /etc/pki/tls/openssl.cnf
「[v3_ca]」セクションに移動し、「red」セクションを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である個別のファイルになります。
ここでは、単一のファイルを使用して、入力、フィルター、および出力セクションを配置します。
# vi /etc/logstash/conf.d/logstash.conf
最初のセクションでは、入力構成のエントリを入力します。次の構成では、lumberjackがポート5050で、クライアントサーバーにあるlogstash-forwarderからの着信ログをリッスンするように設定します。また、以前に作成したSSL証明書を使用します。
input { lumberjack { port => 5050 type => "logs" ssl_certificate => "/etc/ssl/logstash-forwarder.crt" ssl_key => "/etc/ssl/logstash-forwarder.key" } }
2番目のセクションでは、フィルター構成のエントリーを作成します。 Grokはlogstashのフィルターであり、保存のためにElasticsearchに送信する前にログの解析を行います。次のgrokフィルターは、「syslog」というラベルの付いたログを検索し、それらを解析して構造化インデックスを作成しようとします。
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
フィルタパターンについては、grokdebuggerにアクセスすることを検討してください。
3番目のセクションでは、出力構成のエントリを配置します。このセクションでは、ログが保存される場所を定義します。明らかにElasticsearchである必要があります。
output { elasticsearch { host => localhost index => "logstash-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
次に、logstashサービスを開始します。
# systemctl start logstash.service
Logstashサーバーのログは次のファイルに保存されており、問題のトラブルシューティングに役立ちます。
# cat /var/log/logstash/logstash.log
次に、ログをlogstashサーバーに送信するようにlogstash-forwarderを構成します。
Logstash-forwarderを構成します。
Logstash-forwarderは、ログをlogstashサーバーに送信するクライアントソフトウェアであり、すべてのクライアントサーバーにインストールする必要があります。 Logstash-forwarderは、公式Webサイトからダウンロードするか、次のコマンドを使用してターミナルにダウンロードしてインストールできます。
# wget https://download.elastic.co/logstash-forwarder/binaries/logstash-forwarder_0.4.0_amd64.deb # dpkg -i logstash-forwarder_0.4.0_amd64.deb
Logstash-forwaderはSSL証明書を使用してlogstashサーバーのIDを検証するため、前に作成したlogstash-forwarder.crtをlogstashサーバーからクライアントにコピーします。
# scp -pr [email protected]://etc/ssl/logstash-forwarder.crt /etc/ssl
構成ファイルを開きます。
# vi /etc/logstash-forwarder.conf
「ネットワーク」セクションで、ポート番号とlogstashサーバーからコピーしたlogstash-forwarder証明書へのパスを含むlogstashサーバーについて説明します。
このセクションでは、ログをポート5050のlogstashサーバー「server.itzgeek.local」に送信するlogstash-forwarderを定義し、クライアントはSSL証明書を使用してサーバーIDを検証します。注:IP SANを使用している場合は、「server.itzgeek.local」をIPアドレスに置き換えてください。
"servers": [ "server.itzgeek.local:5050" ], "ssl ca": "/etc/ssl/logstash-forwarder.crt", "timeout": 15
「ファイル」セクションで、出荷するファイルをすべて構成します。この記事では、「syslog」をタイプとしてlogstashサーバーにログ(/ var / log / syslog)を送信するようにlogstash-forwarderを構成します。
{ "paths": [ "/var/log/syslog" ], "fields": { "type": "syslog" } }
サービスを再開します。
# systemctl start logstash-forwarder.service
問題が発生した場合は、ログファイルを確認できます。
# cat /var/log/logstash-forwarder/logstash-forwarder.err
Kibana 4の構成:
Kidbanaはログの視覚化を提供し、公式Webサイトからダウンロードします。次のコマンドを使用して、ターミナルにダウンロードします。
# wget https://download.elastic.co/kibana/kibana/kibana-4.1.1-linux-x64.tar.gz
抽出して/opt/
に移動します# tar -zxvf kibana-4.1.1-linux-x64.tar.gz # mv kibana-4.1.1-linux-x64 /opt/kibana4
KibanaのPIDファイルを有効にします。これはsystemdinitファイルを作成するために必要です。
# sed -i 's/#pid_file/pid_file/g' /opt/kibana4/config/kibana.yml
/ opt / kibana4 / bin / kibanaを実行することで、Kibanaを起動できます。サーバーとしてkibanaを実行するには、systemdファイルを作成します。
# vi /etc/systemd/system/kibana4.service [Unit] Description=Kibana 4 Web Interface After=elasticsearch.service After=logstash.service [Service] ExecStartPre=/bin/rm -rf /var/run/kibana.pid ExecStart=/opt/kibana4/bin/kibana ExecReload=/bin/kill -9 $(cat /var/run/kibana.pid) && /bin/rm -rf /var/run/kibana.pid && /opt/kibana4/bin/kibana ExecStop=/bin/kill -9 $(cat /var/run/kibana.pid) [Install] WantedBy=multi-user.target
システムの起動時にkibanaを起動して自動的に起動できるようにします。
# systemctl start kibana4.service # systemctl enable kibana4.service
次のリンクにアクセスして、kibanaポータルにアクセスします
http://your-ip-address:5601/
kibanaを使用するには、logstashインデックスをマップする必要がある次のページが表示されます。時間フィールド名を下にスクロールして、
を選択します。@timestamp
選択すると、kibanaメインページにリダイレクトされます。
Kibanaには、パスワードで保護されたポータルへのアクセスは含まれていません。 Nginxを使用すると、ユーザーがポータルに入る前に認証メカニズムを実行するように構成できます。
これで、ログを一元管理するためのELKスタックが正常に構成されました。