読者です 読者をやめる 読者になる 読者になる

Ohaiの出力結果をfluent-catに食わせたい

ohaiコマンドの実行結果は人が見やすいprettifyされたjsonなので、そのままfluent-catにパイプで渡すとparseエラーになる。(恐らくここで一行ずつ読み込んでparseしているから)

$ ohai | fluent-cat ohai.hostA
parse error: unallowed token at this point in JSON text
                            "languages": {
                     (right here) ------^

じゃあminifyしてあげればいいはずと思ったものの、ohaiにそんなオプションないし、一発で変換してくれそうなものはtd-agentのパッケージに入っていなかったので、一度ハッシュにしてjsonに変換し直すというかなり無駄な方法で対応した。

$ ohai | ruby -r json -e 'puts JSON.parse(STDIN.read).to_json' | fluent-cat ohai.hostA

よくよく考えると1行にすればいいんだから、空白は無視して改行だけ消せばいいんじゃ?と思って試したらいけた。

$ ohai | tr -d '\n' | fluent-cat ohai.hostA

めでたしめでたし。