Elasticsearch、Fluentd、およびKibana:オープンソースのログ検索と視覚化
Fluentdからの記事
概要
Elasticsearch、Fluentd、およびKibana(EFK)を使用すると、ログデータの収集、インデックス作成、検索、および視覚化を行うことができます。 これは、無料で開始できるプロプライエタリソフトウェアSplunkの優れた代替手段ですが、データ量が増えると有料ライセンスが必要になります。
このチュートリアルでは、 Elasticsearch 、 Fluentd 、Kibanaの3つのオープンソースソフトウェアコンポーネントを使用してログソリューションを構築する方法を示します。
前提条件
- Ubuntu14.04のドロップレット
- sudo権限を持つユーザー
Elasticsearchのインストールと設定
Javaの入手
ElasticsearchにはJavaが必要なため、最初のステップはJavaをインストールすることです。
sudo apt-get update
sudo apt-get install openjdk-7-jre-headless --yes
Javaが実際にインストールされていることを確認してください。 走る:
java -version
出力は次のようになります。
java version "1.7.0_55"
OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
Elasticsearchを取得する
次に、Elasticsearchのdebパッケージを次のようにダウンロードしてインストールします。
sudo wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.2.deb
sudo dpkg -i elasticsearch-1.2.2.deb
Elasticsearchの保護
バージョン1.2までは、Elasticsearchの動的スクリプト機能がデフォルトで有効になっていました。 このチュートリアルでは、パブリックインターネットからアクセスできるようにKibanaダッシュボードを設定しているため、最後に次の行を追加して動的スクリプトを無効にしましょう。 /etc/elasticsearch/elasticsearch.yml
:
script.disable_dynamic: true
Elasticsearchを開始する
次のコマンドでElasticsearchの実行を開始します。
sudo service elasticsearch start
Kibanaのインストールと構成
Kibanaを入手する
ホームディレクトリに移動します。
cd ~
Kibanaを次のようにダウンロードします。
curl -L https://download.elasticsearch.org/kibana/kibana/kibana-3.1.0.tar.gz | tar xzf -
sudo cp -r kibana-3.1.0 /usr/share/
Kibanaの構成
Kibanaはデフォルトのポート9200ではなくポート80を使用してElasticsearchと通信するため、Kibanaは config.js
更新する必要があります。
開ける /usr/share/kibana-3.1.0/config.js
次の行を探します。
elasticsearch: "http://"+window.location.hostname+":9200",
次の行に置き換えます。
elasticsearch: "http://"+window.location.hostname+":80",
Nginx(プロキシサーバー)のインストールと構成
Nginxをプロキシサーバーとして使用して、パブリックインターネットからダッシュボードにアクセスできるようにします(基本認証を使用)。
次のようにNginxをインストールします。
sudo apt-get install nginx --yes
Kibanaは、適切なデフォルトのnginx.confを提供しますが、これを少し変更します。
まず、次のように構成ファイルをインストールします。
wget https://assets.digitalocean.com/articles/fluentd/nginx.conf
sudo cp nginx.conf /etc/nginx/sites-available/default
注:元のファイルは、このKibanaGitHubリポジトリからのものです。
次に、編集します /etc/nginx/sites-available/default
次のように(赤でマークされた変更):
#
# Nginx proxy for Elasticsearch + Kibana
#
# In this setup, we are password protecting the saving of dashboards. You may
# wish to extend the password protection to all paths.
#
# Even though these paths are being called as the result of an ajax request, the
# browser will prompt for a username/password on the first request
#
# If you use this, you'll want to point config.js at http://FQDN:80/ instead of
# http://FQDN:9200
#
server {
listen *:80 ;
server_name localhost;
access_log /var/log/nginx/kibana.log;
location / {
root /usr/share/kibana-3.1.0;
index index.html index.htm;
}
最後に、次のようにnginxを再起動します。
$ sudo service nginx restart
これで、お気に入りのブラウザを使用して、サーバーのIPアドレスまたはドメインで汎用のKibanaダッシュボードを表示できるようになります。
Fluentdのインストールと構成
最後に、Fluentdをインストールしましょう。 Treasure Data によって構築および保守されている、Fluentdのパッケージバージョンであるtd-agentを使用します。
td-agentパッケージを介したFluentdのインストール
次のコマンドを使用してFluentdをインストールします。
wget http://packages.treasuredata.com/2/ubuntu/trusty/pool/contrib/t/td-agent/td-agent_2.0.4-0_amd64.deb
sudo dpkg -i td-agent_2.0.4-0_amd64.deb
プラグインのインストール
いくつかのプラグインが必要です。
- out_elasticsearch:このプラグインにより、FluentdはデータをElasticsearchにストリーミングできます。
- out_record_reformer:このプラグインを使用すると、データをより便利な形式に処理できます。
次のコマンドは両方のプラグインをインストールします(最初のapt-getはout_elasticsearch用です:必要です make
と libcurl
)
sudo apt-get install make libcurl4-gnutls-dev --yes
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-record-reformer
次に、syslogメッセージをリッスンしてElasticsearchに送信するようにFluentdを構成します。 開ける /etc/td-agent/td-agent.conf
ファイルの先頭に次の行を追加します。
<source>
type syslog
port 5140
tag system
</source>
<match system.*.*>
type record_reformer
tag elasticsearch
facility ${tag_parts[1]}
severity ${tag_parts[2]}
</match>
<match elasticsearch>
type copy
<store>
type stdout
</store>
<store>
type elasticsearch
logstash_format true
flush_interval 5s #debug
</store>
</match>
Fluentdの開始
次のコマンドでFluentdを起動します。
sudo service td-agent start
rsyslogトラフィックをFluentdに転送する
Ubuntu14.04にはrsyslogdが付属しています。 Fluentdがリッスンするポート(この例ではポート5140)にsyslogイベントを転送するように再構成する必要があります。
開ける /etc/rsyslog.conf
(必要がある sudo
)そして上部に次の行を追加します
*.* @127.0.0.1:5140
エディターを保存して終了した後、次のようにrsyslogdを再起動します。
sudo service rsyslog restart
Kibanaダッシュボードパネルのセットアップ
Kibanaのデフォルトのパネルは非常に一般的であるため、カスタマイズすることをお勧めします。 ここでは、2つの方法を示します。
方法1:テンプレートを使用する
Fluentdチームは、デフォルトのセットアップよりもこのセットアップでうまく機能する代替のKibana構成を提供します。 この代替構成を使用するには、次のコマンドを実行します。
wget -O default.json https://assets.digitalocean.com/articles/fluentd/default.json
sudo cp default.json /usr/share/kibana-3.1.0/app/dashboards/default.json
注:元の構成ファイルは、作成者の GitHubgistからのものです。
サーバーのURLでKibanaダッシュボードのホームページを更新すると、syslogの重大度と機能、およびテーブル内の最近のログ行ごとにヒストグラムが表示されるようにKibanaを構成する必要があります。
方法2:手動で構成する
サーバーのIPアドレスまたはドメインに移動して、Kibanaダッシュボードを表示します。
スターターテンプレートはいくつかありますが、空白のダッシュボードと呼ばれる空白のテンプレートを選択しましょう。ウェルカムテキストの下部に表示されているを自分で構成しても問題ありません。
次に、ダッシュボードの右側にある + ADD AROWボタンをクリックします。 新しい行の構成画面(行は1つ以上のパネルで構成されています)が表示されます。 タイトルを入力し、行の作成ボタンを押してから、保存を押します。 これにより、行が作成されます。
空の行が作成されると、Kibanaは左側の空の行にパネルを追加というプロンプトを表示します。 このボタンをクリックします。 設定画面に移動して、新しいパネルを追加します。 ドロップダウンメニューからヒストグラムを選択します。 ヒストグラムはタイムチャートです。 詳細については、Kibanaのドキュメントを参照してください。
新しいヒストグラム用に設定するパラメータはたくさんありますが、下にスクロールして保存ボタンを押すだけです。 これにより、新しいパネルが作成されます。
さらに詳しい情報
Kibanaの構成の詳細については、Kibanaのドキュメントページを参照してください。