さくらVPS fluentd + elasticsearch + kibana3

さくらVPS fluentd + elasticsearch + kibana3

ElasticSearch インストール

公式サイト: http://www.elasticsearch.org/blog/apt-and-yum-repositories/

yum リポジトリ追加

1
rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch

elasticsearch リポジトリ設定ファイル追加

1
2
3
4
5
6
7
8
cat >> /etc/yum.repos.d/elasticsearch.repo <<'EOF'
[elasticsearch-1.0]
name=Elasticsearch repository for 1.0.x packages
baseurl=http://packages.elasticsearch.org/elasticsearch/1.0/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1
EOF

java と elasticsearch インストール

1
yum install elasticsearch java-1.7.0-openjdk

サーバ起動時モジュール自動起動設定

1
chkconfig elasticsearch on

elasticsearch 起動

1
service elasticsearch start

動作テスト

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
curl -X GET http://localhost:9200/

// response
{
"status" : 200,
"name" : "Hydron",
"version" : {
"number" : "1.0.3",
"build_hash" : "61bfb72d845a59a58cd9910e47515665f6478a5c",
"build_timestamp" : "2014-04-16T14:43:11Z",
"build_snapshot" : false,
"lucene_version" : "4.6"
},
"tagline" : "You Know, for Search"
}

Kibana インストール

kibana ユーザ追加

1
useradd kibana

パスワード設定

1
2
3
4
5
6
passwd kibana
ユーザー kibana のパスワードを変更。
新しいパスワード: [パスワード入力]
よくないパスワード: 辞書の単語に基づいています
新しいパスワードを再入力してください: [もう一度パスワード入力]
passwd: 全ての認証トークンが正しく更新できました。

kibana のパーミッション設定

1
chmod +x /home/kibana

kibana

1
su - kibana

kibana3 ダウンロード

1
curl -LO https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0milestone5.tar.gz

モジュール解凍

1
tar zxvf kibana-3.0.0milestone5.tar.gz

シンボリックリンク設定

1
ln -s /home/kibana/kibana-3.0.0milestone5 ./kibana

kibana config 編集

  • /home/kibana/kibana/config.js
1
2
// 以下のように設定
elasticsearch: "http://(ドメイン)/es/",

kibana ユーザ解除

1
exit

Elasticsearch への接続用に/es/をリバースプロキシ構成

1
2
3
4
htdigest -c /etc/httpd/conf/htdigest "Required authentication" (Basic認証の設定したいID)
Adding password for okochang in realm Required authentication.
New password: [パスワード入力] (Basic認証の設定したいPW)
Re-type new password: [パスワード入力] (Basic認証の設定したいPW)

vim /etc/httpd/conf.d/vhosts.conf

設定ファイルのシンタックスチェック

1
httpd -t

▼ 実行結果

1
Syntax OK

httpd 再起動

1
service httpd restart

kibana 管理画面

1
http://(ドメイン)/#/dashboard/file/default.json

以下のように表示されたら成功


  • fluent-plugin-elasticsearch

gcc, gcc-c インストール

1
yum install gcc gcc-c++ libcurl-devel

fluent-plugin-elasticsearch インストール

1
/usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-elasticsearch --no-ri --no-rdoc
1
vim /etc/td-agent/td-agent.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
## Input
<source>
type tail
path /var/log/httpd/access_log
format /^(?<date>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2} \w{3}) (?<processing_time>[^ ]*) (?<remote>[^ ]*) (?<user>[^ ]*) \[(?<method>.*)\] (?<status>[^ ]*) (?<size>[^ ]*) \[(?<referer>[^ ]*)\] \[(?<agent>.*)\]/
pos_file /var/log/td-agent/tmp/apache.access.log.pos
tag apache.access
</source>

## Output
<match apache.access>
type copy
<store>
type file
path /var/log/td-agent/apache.access
time_slice_format %Y%m%d
time_format %Y%m%dT%H%M%S%z
</store>
<store>
type forward
send_timeout 60s
recover_wait 10s
heartbeat_interval 1s
<server>
name (fluentdサーバ)
host (fluentdサーバIP)
port (Port)
</server>
</store>
<store>
type elasticsearch
host (elasticsearchサーバIP)
port (Port)
type_name access_log
logstash_format true
logstash_prefix apache_access
logstash_dateformat %Y%m
flush_interval 10s
</store>
</match>

fluentd インストール事前準備

  • ユーザ毎のリソース制限ファイル修正
  • /etc/security/limits.conf

以下追記

1
2
root soft nofile 65536
root hard nofile 65536

▼ リソース属性

noproc最大プロセス数
nofileオープンできる最大ファイル数
maxlogin最大ログイン数
data最大データサイズ
fsize最大ファイルサイズ
as最大メモリ空間サイズ
priorityユーザ実行の優先度
stackユーザ実行の最大スタック
rssユーザ実行プロセスのメモリサイズ
coreコアファイルの最大値

カーネルパラメータ設定

  • /etc/sysctl.conf
1
2
3
4
// 以下追記
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535

再起動

1
reboot

Apatch 設定

テスト用のログファイルとして Apache のアクセスログを使用

1
grep "custom" /etc/httpd/conf/httpd.conf

▼ 実行結果

1
2
LogFormat "%{%Y-%m-%d %T %Z}t %D %a %u [%r] %s %b [%{Referer}i] [%{User-Agent}i]" custom
CustomLog logs/access_log custom

td-agent にアクセス出来る様にログディレクトリ権限修正

1
chmod 755 /var/log/httpd

td-agent のインストール

1
curl -L http://toolbelt.treasuredata.com/sh/install-redhat.sh | sh

td-agent 設定

  • /etc/td-agent/td-agent.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<match log.**>
# fluentd-plugin-elasticsearch利用
type elasticsearch

# Kibanaで利用するためにindexの形式整備
logstash_format true

# index の prefix 指定
logstash_prefix demo-log

# 転送先の Elasticsearch
hosts localhost:9200

# Elasticsearchに書き込む際、ドキュメントtype指定
type_name application-log

# buffer設定 - メモリバッファ利用
buffer_type memory

# チャンクサイズ 1MB
buffer_chunk_limit 1m

# チャンクキュー最大サイズ 128
buffer_queue_limit 128

# 指定秒毎にバッファをflush - 指定秒数毎にElasticsearchへの書き込みリクエスト発

flush_interval 2s

# flush失敗時、最大リトライ回数
retry_limit 17
</match>
1
2
3
4
5
6
7
8
// tmpディレクトリ作成
mkdir /var/log/td-agent/tmp
// 所有者修正
chown td-agent.td-agent /var/log/td-agent/tmp
// サーバ起動時設定
chkconfig td-agent on
// 起動
service td-agent start

参考サイト

Author

Kenzo Tanaka

Posted on

2015-03-01

Licensed under

コメント