fluent-formatを使ってtd-agent.confのパース
fluent-formatという、td-agent.confの内容をパースしてくれる
便利gemがあるという話をインターネッツ経由で@sonotsさん(作者様)より教えていただいた。
で、td-agentのpidファイルが変更される度に
(つまり、service td-agent restartが行われるなど)
idobataに向けて通知が走るスクリプトを書いてみた。
pidファイルの状態監視にfssmを使った。
Gemfile
source 'https://rubygems.org/'
gem 'fssm'
gem 'fluent-format'
include先のファイルも含めた形でパース結果を得たい場合は、
formatメソッドにfile pathを文字列で指定する。
{{ idobata endpoint url }}は適宜自分の環境に合わせて欲しい。
monitor.rb
# !/usr/bin/env ruby
require "fssm"
require "fluent-format"
monitor = FSSM::Monitor.new
IDOBATA = "{{ idobata endpoint url }}"
PROCESS_DIR = "/var/run/td-agent"
PROCESS_PID = "td-agent.pid"
TD_CONF = "/etc/td-agent/td-agent.conf"
monitor.path PROCESS_DIR do
glob PROCESS_PID
puts "Start Monitoring..."
notify = Proc.new do |base, relative|
system("curl --data-urlencode 'source=#{Fluent::Format.format(TD_CONF).to_s}' #{IDOBATA}")
end
update ¬ify
create ¬ify
end
monitor.run
IRCやメーリングリストへ投げるなど色々と使えそうだ。