munin-node → Fluentd → GrowthForecast でオレオレモニタリングツールへの道?

できるかなと思って、とりあえず繋げてみたのでメモ。中途半端。

munin-node → Fluentd

munin-ruby で取得した値をまるごと fluentd に送信するスクリプトをcronで1分ごとに実行。

#!/usr/bin/env ruby
require "munin-ruby"
require "fluent-logger"
host = "localhost"
node = Munin::Node.new(host)
logger = Fluent::Logger::FluentLogger.new("munin")
node.list.each do |key|
   values = node.fetch(key)
   logger.post("#{key}.#{host}", values[key])
end

このようなメッセージが飛びます。

2012-06-12T08:45:25Z	munin.iostat.localhost	{"dev252_0_read":"839706","dev252_0_write":"3115548"}

Fluentd → GrowthForecast

fluentd.conf

<match munin.*.localhost>
  type          growthforecast
  gfapi_url     http://127.0.0.1:5125/api/
  service       localhost
  tag_for       section
  remove_prefix munin
  name_key_pattern .
</match>

name_key_pattern . で、すべての値を送信。

GrowthForecast

自動的にずらりと項目が並びます。

複合グラフを作ってみた。

ということで、値の送信からグラフ化までは簡単にできちゃいますが……

  • 単一の値のグラフは自動的に作れるものの、値ごとに差分でみるのか即値でみるのかを手で設定しないといけない
  • 複合グラフも自分で定義する必要があって、ここを自動化できないとさすがに辛い

ひとまずここまで。