id:kazeburo さんの dstat + fluentd + Elasticsearch + kibana でサーバモニタリングする - blog.nomadscafe.jp を参考に自分のノートPCを dstat + fluentd + Elasticsearch + kibana でモニタリングできるようにした。
Kibana の設定が一番難しかった。GUIでポチポチ設定するだけだが、思うようなグラフにならず苦労した。もう少し使いこなせるようになったら、kibana の設定方法を書きたい。
環境
インストール&設定
- コマンドは"$"で始まるものは一般ユーザー、"#"で始まるものは root で実行しています
Elasticsearch
$ curl -L -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.1.noarch.rpm # rpm -ivh elasticsearch-1.4.1.noarch.rpm # service elasticsearch start $ curl -XPUT localhost:9200/_template/template_1 -d ' { "template" : "logstash-*", "mappings" : { "dstat": { "properties": { "host" : { "type" : "string", "index" : "not_analyzed" }, "value" : {"type" : "double"} } } } } '
Kibana
$ curl -L -O https://download.elasticsearch.org/kibana/kibana/kibana-3.1.2.tar.gz $ tar xfz kibana-3.1.2.tar.gz # mv kibana-3.1.2/* /var/www/html/
fluentd
- RPM をインストールする
# yum install libyaml-0.1.3-1.4.el6.x86_64 # yum install libyaml-devel-0.1.3-1.4.el6.x86_64 # yum update libcom_err-1.42.8-1.0.2.el6.x86_64 # yum install libtool-2.2.6-15.5.el6.x86_64 # yum install bison-2.4.1-5.el6.x86_64 # yum install libcom_err-devel-1.42.8-1.0.2.el6.x86_64 # yum install libss-1.42.8-1.0.2.el6.x86_64 # yum install keyutils-libs-devel-1.4-5.el6.x86_64 # yum install krb5-devel-1.10.3-33.el6.x86_64 # yum install krb5-libs-1.10.3-33.el6.i686 # yum install libffi-devel-3.0.5-3.2.el6.x86_64 # yum install openssl-devel-1.0.1e-30.el6_6.4.x86_64 # yum install krb5-libs-1.10.3-33.el6.x86_64 # yum -y install curl-devel
- RVM をインストールする
# gpg2 --keyserver hkp://keys.gnupg.net --recv-keys ... # curl -L https://get.rvm.io | bash -s stable
- Ruby をインストールする
# rvm install 1.9.3
- /etc/bashrc に以下を追記する。
source /etc/profile.d/rvm.sh
- fluentd をインストールする
# gem install fluentd --no-ri --no-rdoc
- fluentd のプラグインをインストールする
# gem install fluent-plugin-dstat # gem install fluent-plugin-map # gem install fluent-plugin-elasticsearch
- fluent.conf を作成する
# fluentd --setup /etc/fluent
- /etc/fluent/fluent.conf に以下を記述する
<source>
type dstat
tag dstat
option -lcn
delay 5
</source>
<match dstat>
type copy
<store>
type map
tag "map.dstat.loadavg-short"
time time
record {"value" => record["dstat"]["load avg"]["1m"], "stat" => "loadavg-short", "host" => record["hostname"]}
</store>
<store>
type map
tag "map.dstat.cpu-usr"
time time
record {"value" => record["dstat"]["total cpu usage"]["usr"], "stat" => "cpu-usr", "host" => record["hostname"]}
</store>
<store>
type map
tag "map.dstat.cpu-sys"
time time
record {"value" => record["dstat"]["total cpu usage"]["sys"], "stat" => "cpu-sys", "host" => record["hostname"]}
</store>
<store>
type map
tag "map.dstat.cpu-hiq"
time time
record {"value" => record["dstat"]["total cpu usage"]["hiq"], "stat" => "cpu-hiq", "host" => record["hostname"]}
</store>
<store>
type map
tag "map.dstat.cpu-siq"
time time
record {"value" => record["dstat"]["total cpu usage"]["siq"], "stat" => "cpu-siq", "host" => record["hostname"]}
</store>
<store>
type map
tag "map.dstat.net-recv"
time time
record {"value" => record["dstat"]["net/total"]["recv"], "stat" => "net-recv", "host" => record["hostname"]}
</store>
<store>
type map
tag "map.dstat.net-send"
time time
record {"value" => record["dstat"]["net/total"]["send"], "stat" => "net-send", "host" => record["hostname"]}
</store>
</match>
<match map.dstat.*>
type elasticsearch
type_name dstat
host localhost
port 9200
logstash_format true
logstash_prefix logstash
flush_interval 5s
</match>
- fluentd を起動する
# fluentd -c ./fluent/fluent.conf -vv &
- Apache を起動する
# service httpd start
