kibana4セットアップ

忘備録

【OS】
今回はCentOS6.6_x86_64版を使用。詳細は以下を参照。
http://centos.server-manual.com/
事前準備
セットアップに必要なパッケージを事前に設定しておく必要がある。以下を全て設定する。
システム変更が発生するので管理者権限が必須。rootにsuしておく事。

【YUMパッケージ管理】
yum -y install yum-plugin-fastestmirror
yum -y update
yum -y groupinstall "Base" "Development tools" "Japanese Support"
[RPMforgeリポジトリ追加]
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
rpm -ivh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
[EPELリポジトリ追加]
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[ELRepoリポジトリ追加]
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
[Remiリポジトリ追加]
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

【SELinux無効化】
getenforce
Enforcing ←SELinux有効
setenforce 0
getenforce
Permissive ←SELinux無効
vi /etc/sysconfig/selinux
SELINUX=enforcing 
SELINUX=disabled ←変更(起動時に無効にする)

【iptablesでHTTPを許可】
vi /etc/sysconfig/iptables
<pre>
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5601 -j ACCEPT ←追加
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
</pre>
Iptables再起動
service iptables restart

【JAVA】
<table border=1>
CentOS構築時にデフォルトでインストールされたバージョンをアンインストール。
yum erase java*
最新版をネットより入手(rpm版)しインストール
rpm –ivh jdk-8u45-linux-x64.rpm
バージョン確認
java –version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
■JAVA_HOME設定
vi /etc/profile
<pre>
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
</pre>
</table>

【前提条件】
Elasticsearchは既にインストール済とします

【Kibana4】
cd /usr/local/src
wget https://download.elastic.co/kibana/kibana/kibana-4.1.1-linux-x64.tar.gz
tar -zxvf kibana-4.1.1-linux-x64.tar.gz
chown -R root:root kibana-4.1.1-linux-x64
mv kibana-4.1.1-linux-x64 ../kibana
■起動スクリプト作成
vi /etc/init.d/kibana
<pre>
"#!/bin/sh"
 
"### BEGIN INIT INFO"
"# Provides:          kibana"
"# Required-Start:    $local_fs $remote_fs $network"
"# Should-Start:      $time"
"# Required-Stop:     $local_fs $remote_fs $network"
"# Default-Start:     3 5"
"# Default-Stop:      0 1 2 6"
"# Short-Description: Kibana 4"
"# Description:       Service controller for Kibana 4"
"### END INIT INFO"
 
INSTALLED_DIR=/usr/local/kibana
EXEC_SCRIPT="$INSTALLED_DIR/bin/kibana"
LOG_DIR=/var/log/kibana
PID_DIR=/var/run
PID_FILE="$PID_DIR"/kibana.pid
LOG_FILE="$LOG_DIR"/kibana.log
 
test -d $LOG_DIR || mkdir $LOG_DIR
 
"# Source function library."
. /etc/init.d/functions
 
RETVAL=0
 
case "$1" in
    start)
        if [ ! -f "$PID_FILE" ]; then
          echo -n "Starting Kibana"
          nohup $EXEC_SCRIPT 0<&- &> $LOG_FILE &
          echo $! > $PID_FILE
          success
        else
          echo -n "Kibana is already running"
          RETVAL=1
          failure
        fi
        echo
        ;;
    stop)
        if [ -f "$PID_FILE" ]; then
          echo -n "Stopping Kibana"
          test -f $PID_FILE && cat $PID_FILE | xargs kill -s SIGKILL && rm -f $PID_FILE
          success
        else
          echo -n "Kibana is not running"
          RETVAL=1
          failure
        fi
        echo
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    reload)
        $0 restart
        ;;
    status)
        status kibana
        RETVAL=$?
        ;;
*)
echo "Usage: $0 {start|stop|status|restart|reload}"
exit 1
;;
esac
exit $RETVAL
</pre>
実行権限付与
chmod +x /etc/init.d/kibana
Kibana4スタート
/etc/init.d/kibana start
自動起動設定
chkconfig --add kibana

■事前準備
Elasticsearch内のデータが空だと、上手く起動しませんでした。事前にダミーデータを登録しておきます。
下記のサイトよりshakespeare.json・logs.jsonl.gz・accounts.zipをダウンロード
https://www.elastic.co/guide/en/kibana/current/getting-started.html

ダウンロードしたファイルを解凍
unzip accounts.zip
gunzip logs.jsonl.gz

bulk APIを使用してElasticsearchにロード
<pre>
curl -XPOST 'localhost:9200/accounts/account/_bulk?pretty' --data-binary @accounts.json
curl -XPOST 'localhost:9200/shakespeare/_bulk?pretty' --data-binary @shakespeare.json
curl -XPOST 'localhost:9200/_bulk?pretty' --data-binary @logs.jsonl
</pre>
確認
<pre>
curl 'localhost:9200/_cat/indices?v'
</pre>
<pre>
health status index               pri rep docs.count docs.deleted store.size pri.store.size
yellow open   accounts              5   1       1000            0    418.2kb        418.2kb
yellow open   shakespeare           5   1     111396            0     17.6mb         17.6mb
yellow open   logstash-2015.05.18   5   1       4631            0     15.6mb         15.6mb
yellow open   logstash-2015.05.19   5   1       4624            0     15.7mb         15.7mb
yellow open   logstash-2015.05.20   5   1       4750            0     16.4mb         16.4mb
</pre>

■動作確認
ブラウザで以下にアクセス
http://localhost:5601
![image](https://qiita-image-store.s3.amazonaws.com/0/55845/ed8c5c43-c7fe-d853-d075-82faf1395390.png)
以下の項目を設定
<pre>
Index contains time-based events：チェック（デフォルト）
Index name or pattern：logstash-*（デフォルト）
Time-field name：@timestamp（選択）
</pre>
「Create」実行

画面左上の「Discover」選択
![image](https://qiita-image-store.s3.amazonaws.com/0/55845/5d5b93c1-9b1d-abde-487e-d9d18b5aa330.png)
後は本家サイトの例題通りに進めれば、サクサクとグラフを作成してくれます
https://www.elastic.co/guide/en/kibana/current/index.html