初心者向けインフラ構築(Fluentd + Elasticsearch + Kibana)

Pocket

転職してアプリ開発よりもインフラ周りの知識が必要になったので、
備忘録して色々とサーバ周りについて書いていきます。

今回はVagrant環境でFluentd、Elasticsearch、Kibana)の環境を作っていきます。

事前準備

・Vagrant 1.7.4
・VirtualBox 5.0.6

手順(ホスト側)

仮想環境を作っていく中でホスト側やゲスト側という単語が出てきますが、
ホストは仮想環境を動かしているOSを指し、ゲストは仮想環境のOSを指しています。
今回、私の環境ではMAC上で仮想環境のCentOSを動かすので、
ホスト側がMAC、ゲスト側がCentOSになります。

早速、vagrantで作業を進めていきます。
*vagrant、VirtualBoxのインストールは省略します。

仮想環境の構築

まず、vagrantコマンドで仮想環境を作成します。

# 作業用ディレクトリの作成
mkdir /vagrant/centos
cd /vagrant/centos

# Boxイメージのダウンロード
vagrant box add centos6.6 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.0.0/centos-6.6-x86_64.box

# Vagrantfileファイルの作成 
vagrant init

# Vagrantfileを書き換える
vim Vagrantfile
# 仮想マシンの起動
vagrant up

はいこれで仮想環境が出来たので、vagrant sshもしくは、
ssh vagrant@localhost -p2222
でゲストOSに接続することができます。

今回の環境

・Fluentd
・Elasticsearch
・Kibana

Fluentdはログ等のデータを収集、転送するもの
Elasticsearchは全文検索エンジンでログを検索して解析することが出来るもの
Kibanaはデータを可視化出来るもの。
つまり今回やりたいことは、FluentdでApacheのデータを収集し、Elasticsearchで解析して
Kibanaで可視化するということ。

事前準備(ゲストOS)

・git
・Ruby (>= 1.9.3)
・Java
・http (Apache)

既存の仮想環境ではRubyのバージョンが1.8の為、Fluentdがインストールできません。
なのでRubyをバージョンアップさせます。
せっかくなので、rbenvを用いて新しいバージョンをインストールします。
rbenvをインストールする為にまずはgitをインストールします。

su -
# gitのインストール
yum install git

# rbenv,ruby-buildのインストールインストール
yum install zlib zlib-devel openssl-devel sqlite-devel gcc-c++ glibc-headers libyaml-devel readline readline-devel zlib-devel libffi-devel

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

# rbenvの設定
vi ~/.bash_profile
# 設定の反映
source ~/.bash_profile
# 設定の確認
rbenv -v      #rbenv 0.4.0-169-g0f44c57のように表示されればOK

# rubyインストール
rbenv install 2.2.3
rbenv rehash
rbenv global 2.2.3

# Javaのインストール
# elasticsearchのインストールに必要
yum install java-1.8.0-openjdk-devel

# Apacheのインストール
yum install httpd

手順(ゲストOS)

# elasticsearchのインストール
mkdir /opt/elasticsearch  
cd /opt/elasticsearch
wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.2.noarch.rpm  
rpm -ivh elasticsearch-1.7.2.noarch.rpm

# クロスドメイン対応
vim /etc/elasticsearch/elasticsearch.yml
# elasticsearchを起動
service elasticsearch start

# 動作の確認
curl 127.0.0.1:9200

下記のような結果があればOK

# fluentdのインストール
# 実際にはtd-agentというfluentdのラッパーで動作させる
# サイトにOS別のインストール方法がある
# http://docs.fluentd.org/articles/install-by-rpm
curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

# 設定ファイルの編集
vim /etc/td-agent/td-agent.conf
# service で起動した際に権限でエラーになるので、実行ユーザを変更
vim /etc/init.d/td-agent
# 起動
service td-agent start

# 起動の確認
service td-agent status # td-agent (pid  5695) is running... のように表示されれば問題ない。

# fluentdとelasticsearchを連携させるplaginのインストール
yum install libcurl-devel
gem install fluentd

# fluent-gem install fluent-plugin-elasticsearchでインストールを行うと
# 起動時にエラーが発生することがある。これは、fluent-gemが他のgemに影響がないように
# fluent用にgemのPathを変えている為、正しいPathでのインストールが必要
# 正しいPathは /etc/init.d/td-agent ファイルの TD_AGENT_RUBY のbinまでを見れば良い
/opt/td-agent/embedded/bin/fluent-gem i fluent-plugin-elasticsearch

# Kibanaのインストール
# 最新はkibana4ですが仕事でも使っている3をインストールします
cd /var/www/html  
wget https://download.elastic.co/kibana/kibana/kibana-3.1.2.tar.gz  
tar xvf kibana-3.1.2.tar.gz  
ln -s kibana-3.1.2 kibana  

はい。とりあえずこれで完成です。
http://localhost:8080/kibana/index.html
にアクセスすればKibanaでApacheのアクセス情報が見れます。

全て一つのサーバで構築しましたが、Apacheのアクセス情報をFluentdが収穫し、Elasticsearchで解析、Kibanaで
可視化しています。

今回はあまり詳細の設定について説明していませんが、今後もう少し実践的な内容を書く際に
色々解説できればと思います。

あぁ疲れた。



Post Footer automatically generated by Add Post Footer Plugin for wordpress.

びのっち

関東圏で活動しているとてもマイペースなSEです。

タグ: , ,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*