fluent-format을 사용하여 idobata에 td-agent.conf의 내용을 보냅니다.

3808 단어 FluentdIdobata루비

fluent-format을 사용하여 td-agent.conf 구문 분석



fluent-format 라는 td-agent.conf의 내용을 파싱해준다.
편리 gem이 있다는 이야기를 인터넷을 통해 @sonots씨(작가님)로부터 가르쳐 주셨다.

td-agent의 pid 파일이 변경 될 때마다
(즉, 서비스 td-agent restart가 수행되는 등)
idobata를 향해 통지가 달리는 스크립트를 써 보았다.



pid 파일의 상태 감시에 fssm 를 사용했다.

Gemfile
source 'https://rubygems.org/'

gem 'fssm'
gem 'fluent-format'

include처의 파일도 포함한 형태로 퍼스 결과를 얻고 싶은 경우는,
format 메소드에 파일 경로를 문자열로 지정 .

{{ 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나 메일링 리스트에 던지는 등 여러가지 사용할 수 있을 것 같다.

좋은 웹페이지 즐겨찾기