ablog

不器用で落着きのない技術者のメモ

dstat + fluentd + Elasticsearch + kibana でノートPCをモニタリングする

id:kazeburo さんの dstat + fluentd + Elasticsearch + kibana でサーバモニタリングする - blog.nomadscafe.jp を参考に自分のノートPCを dstat + fluentd + Elasticsearch + kibana でモニタリングできるようにした。

Kibana の設定が一番難しかった。GUIでポチポチ設定するだけだが、思うようなグラフにならず苦労した。もう少し使いこなせるようになったら、kibana の設定方法を書きたい。

使用感

dstat で取得したCPU使用率をグラフにしたものです。

環境

インストール&設定

  • コマンドは"$"で始まるものは一般ユーザー、"#"で始まるものは 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
# 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 &
# service httpd start

使ってみる