0

カスタムの複数行ログ パーサーをセットアップして、読み取り可能なフィールドを使用して Stackdriver にログを取得しようとしています。現在、次のようになっています。

<source>
    type tail
    read_from_head true
    path /root/ansible.log
    pos_file /var/lib/google-fluentd/pos/ansible.pos
    time_format "%a %b %e %T %Z %Y"
    format multiline
    format_firstline /Started ansible run at/
    format1 /Started ansible run at (?<timestart>[^\n]+)\n(?<body>.*)/
    format2 /PLAY RECAP.*/
    format3 /ok=(?<ok>\d+)\s+changed=(?<changed>\d+)\s+unreachable=(?<unreachable>\d+)\s+failed=(?<failed>\d+).*/
    format4 /Finished ansible run at (?<timeend>[^\n]+)/
    tag ansible
</source>

これはhttp://docs.fluentd.org/v0.12/articles/parser_multilineの仕様に従って行われており、動作します。しかし、それは適切なタイムスタンプなしで機能します -timestartそしてtimeend、json の単純なフィールドです。したがって、この現在の状態では、正規表現の中に変数time_formatがないため、設定は役に立ちません。timeこれにより、必要なすべての変数が集約され、fluend サービスを実行するとログが Stackdriver に表示され、すべてがほぼ満足しています。

ただし、これらの時間変数の名前の 1 つを に変更するtimeと、実際に Stackdriver のタイムスタンプをエントリに割り当てようとしても機能しません。マシンの fluentd ログには、ワーカーが開始してすべてを解析したことが示されていますが、ログは Stackdriver コンソールにまったく表示されません。

timestartそれらの線に沿って、または何かのようにtimeend見えます。Fri Jun 2 20:39:58 UTC 2017時刻形式の仕様はhttp://ruby-doc.org/stdlib-2.4.1/libdoc/time/rdoc/Time.html#method-c-strptimeにあり、何度もチェックして再確認しましたが、何が間違っているのかわかりません。

編集: 別の詳細: 変数を解析しようとするとtime、Stackdriver コンソールにログが表示されず、適切なタグ (この場合ansibleは ) がタグのリストに表示されます。結果が空であるというだけです。

4

1 に答える 1