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

プラグインのインストール

いくつかのプラグインが必要です。

  1. out_elasticsearch:このプラグインにより、FluentdはデータをElasticsearchにストリーミングできます。
  2. out_record_reformer:このプラグインを使用すると、データをより便利な形式に処理できます。

次のコマンドは両方のプラグインをインストールします(最初のapt-getはout_elasticsearch用です:必要です makelibcurl)

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のドキュメントページを参照してください。