今回はこちらで構築したCentOS7環境にKibana4を導入します!
※別途AmazonLinuxなEC2インスタンスでも試してみましたが、同様の手順で導入できました。
ほんと、導入するまでです!fluentdの設定とか、グラフ表示とかは後編(予定)に期待です。。
1. 仮想環境にログインする
まずはログインしましょう。
おさらいですが、ホストは"192.168.33.10"でSSH、TCPポートは22番でした。
そしてユーザ名、パスフレーズは"vagrant"です。
2. システムのバージョンアップ
まずは"yum update"でシステムの各パッケージのバージョンアップをしましょう。
$ sudo yum -y update
3. JDKの導入
ElasticsearchはJavaで動作するので、事前に導入します。
今回は"java-1.8.0-openjdk"を使う事にします。
$ sudo yum -y install java-1.8.0-openjdk
4. Elasticsearchの導入
現時点で最新版の1.5.1を使う事にします。何事も最新最新。。。
4.1. wgetでrpmパッケージをDL
$ sudo wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.5.1.noarch.rpm
4.2. rpmパッケージをインストール
$ sudo rpm -ivh ./elasticsearch-1.5.1.noarch.rpm
4.3. Elasticsearch起動
$ sudo service elasticsearch start
4.4. Elasticsearchを自動起動するように設定
ついでに、環境起動時に勝手に立ち上がるようにしちゃいましょう。
$ sudo chkconfig elasticsearch on
5. td-agent(fluetnd)の導入
5.1. td-agentのインストール
td-agentは一言でいうとfluentdのステイブル版ということらしいので、同じものと思っておけば良いと思います。
今回はtd-agent2を導入します。
導入が簡単な様に公式からシェルスクリプトが提供されているので、それを使って導入します。
$ sudo curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
5.2. libcurl-develのインストール
今回はfluentdを使ってElasticsearchにデータをつっこむのでElasticsearch用のプラグインを導入しますが、
その際に必要なので事前にいれます。
$ sudo yum -y install gcc libcurl-devel
5.3. Elasticsearchプラグインのインストール
$ sudo td-agent-gem install fluent-plugin-elasticsearch
5.4. td-agentの起動
$ sudo service td-agent start
5.5. td-agentを自動起動するように設定
Elasticsearch同様、こちらも自動起動するように設定しちゃいましょう。
$ sudo chkconfig td-agent on
6. Kibana4の導入
いよいよKibanaです!今回は最新版で真っ白なKibana4を導入します。
6.1. Kibana4をDL
$ sudo wget https://download.elastic.co/kibana/kibana/kibana-4.0.1-linux-x64.tar.gz
6.2. DLしたKibana4を解凍
$ tar xvzf kibana-4.0.1-linux-x64.tar.gz
6.3. Kibana4の起動
とりあえず単純にバックグラウンドで起動します。
とはいえそのままだとログがコンソールに流れてきてウザイので適当にファイルにリダイレクトします。
$ sudo ./kibana-4.0.1-linux-x64/bin/kibana > ./kibana.log &
7. 穴あけ
さて、Kibanaまで導入して完了!・・・と思いきや、そのままではアクセスできません。
試しにホストOS側のブラウザから
http://192.168.33.10:5601/
にアクセスしてみてください。長時間またされてイラっとして終わりです!
firewallが立ちはだかっているため、許可されてないポートへはアクセスできないのです。
なのでfirewallの設定をいじって、必要なポートの穴あけをしてやりましょう。
ちなみにCentOS6までは"iptables"を使ってアクセス制限をしていたのですが、CentOS7からは"firewalld"を使います。
"iptables"は設定が全てのNICに適用されましたが、"firewalld"はNIC毎に設定を用意する点が少々異なります。
7.1. firewalld設定を変更する
テキストエディタ(vi, vim等)で編集します。
$ sudo vim /etc/firewalld/zones/public.xml
以下のように開けたいポートの設定を追加します。
Kibanaの5601に加えて9200も開けておくとElasticsearchが叩けますので、今回はそちらも追加します。
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="dhcpv6-client"/>
<service name="ssh"/>
<service name="http"/>
<port protocol="tcp" port="5601"/> <!-- Kibanaポート追加 -->
<port protocol="tcp" port="9200"/> <!-- Elasticsearchポート追加 -->
</zone>
7.2. firewalldの設定を反映させる
$ sudo systemctl restart firewalld
8. Kibanaアクセス再チャレンジ
さて、再度ホストOS側から5601ポートにアクセスしてみましょう。
http://192.168.33.10:5601/
アクセスできましたか!?(以下のように表示されればOK)
ちなみに9200にアクセスすると、Elasticsearchのサンプルが表示されます。
http://192.168.33.10:9200/
{
"status": 200,
"name": "Oblivion",
"cluster_name": "elasticsearch",
"version": {
"number": "1.5.1",
"build_hash": "5e38401bc4e4388537a615569ac60925788e1cf4",
"build_timestamp": "2015-04-09T13:41:35Z",
"build_snapshot": false,
"lucene_version": "4.10.4"
},
"tagline": "You Know, for Search"
}
今回はここまで。
後編ではElasticsearchにデータをつっこんで
視覚化するところまでやっていますので、興味がある方は是非!