Nagios のログの日付を変換しながら読むには

監視ソフトウェア Nagios のログファイル「/var/log/nagios/nagios.log」は日付フォーマット(=最初のカラム)がエポック秒になっています。これを見やすいように変換する簡単なスクリプト nagioslogview.rb を書いたので、以下に公開しておきます。同様に小さなストレスを抱えている方の解決策になれば嬉しいです。(^-^)

■nagioslogview.rb

#!/usr/bin/env ruby

if (ARGV.size == 0)
  nagios_log_file="/var/log/nagios/nagios.log"
else
  nagios_log_file=ARGV[0]
end

File.open(nagios_log_file) do |f|
  while line = f.gets
    column = line.split
    column[0] = Time.at(column[0].slice(/\d+/).to_i)
    column[0] = column[0].to_s.split[0 .. 3].join(" ")
    column[0] = column[0].to_s.insert(0, "[").insert(-1, "]")
    puts column.join(" ")
  end
end

■使い方

 $ nagioslogview.rb /var/log/nagios/nagios.log

■変換前(エポック秒のため実際の時間がわかりづらい)

$ less /var/log/nagios/nagios.log
(... snip ...)
[1274194965] Auto-save of retention data completed successfully.
(... snip ...)

■変換後

$ nagioslogview.rb /var/log/nagios/nagios.log
(... snip ...)
[Wed May 19 00:02:45] Auto-save of retention data completed successfully.
(... snip ...)