年中アイス

いろいろつらつら

fluentdから出力されたJSONを読みやすい形式でコンソールに表示するコマンド

fluentdを使い始めました。便利ですね。fluentdの使い方はまた今度にでも。

出力されたログはJSON1行になり、コンソール上でぱっと確認したいときに、人の目ではちょっと見づらいので、コマンドで整形して表示確認できる方法を調べてみました。

調べてみたらpythonjson.toolを利用するのが簡単だったので紹介します。

python -m json.toolに任意のJSONを渡すことで整形表示されます。

$ echo '{"key":"value","obj":{"count":100}}' | python -m json.tool
{
    "key": "value", 
    "obj": {
        "count": 100
    }
}

fluentdのログ渡すときは、タブ区切りの3フィールド目がJSONなので、cutを使います。
catやzcatなどとパイプで組み合わせます。

$ zcat versions.20130120_0.log.gz | cut -f3 | python -m json.tool
{
    "ver1.0.0_count": 0,
    "ver1.0.0_percentage": 0.0,
    "ver1.0.0_rate": 0.0,
    "ver1.0.1_count": 0,
    "ver1.0.1_percentage": 0.0,
    "ver1.0.1_rate": 0.0,
    "ver1.1.0_count": 0,
    "ver1.1.0_percentage": 0.0,
    "ver1.1.0_rate": 0.0,
    "ver1.1.1_count": 0,
    "ver1.1.1_percentage": 0.0,
    "ver1.1.1_rate": 0.0,
    "ver1.2.0_count": 0,
    "ver1.2.0_percentage": 0.0,
    "ver1.2.0_rate": 0.0,
    "unmatched_count": 0,
    "unmatched_percentage": 0.0,
    "unmatched_rate": 0.0
}

fluentd以外でも、JSONで返してくるAPIの簡易確認などに使えます。

参考:JSONを見やすく表示する
http://d.hatena.ne.jp/yutakikuchi/20120711/1341963530