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