LoginSignup
6

More than 5 years have passed since last update.

fluent-formatを使ってidobataにtd-agent.confの内容を送る

Posted at

fluent-formatを使ってtd-agent.confのパース

fluent-formatという、td-agent.confの内容をパースしてくれる
便利gemがあるという話をインターネッツ経由で@sonotsさん(作者様)より教えていただいた。

で、td-agentのpidファイルが変更される度に
(つまり、service td-agent restartが行われるなど)
idobataに向けて通知が走るスクリプトを書いてみた。

スクリーンショット 2014-03-05 14.16.47.png

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 &notify

  create &notify

end

monitor.run

IRCやメーリングリストへ投げるなど色々と使えそうだ。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6