質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Fluentd

Fluentdは、オープンソースのログ収集ツールです。ログの収集方法、ログの記録先などのログデータ処理を柔軟にカスタマイズでき、インプットおよびアウトプットが全てプラグインとして実装されています。

Q&A

解決済

1回答

989閲覧

Windows版td-agent(Fluentd) 時刻が取得できない

taharasan

総合スコア55

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Fluentd

Fluentdは、オープンソースのログ収集ツールです。ログの収集方法、ログの記録先などのログデータ処理を柔軟にカスタマイズでき、インプットおよびアウトプットが全てプラグインとして実装されています。

0グッド

0クリップ

投稿2022/11/02 03:19

編集2022/11/02 03:30

質問内容

Windows版td-agent(Fluentd)にて、ルーターからSyslogを受信し、年月日時別のファイルへ出力しようとした際
時刻「%H」の値が「00」とゼロで取得されてしまう。

実現したいこと

下記期待結果の様に、ファイル名にYYYYMMDDHH形式の日付時刻を出力したいのですが
実際にはYYYYMMDDは正常に取得しているが、HHの箇所が「00」で出力されてしまう。

【期待結果ファイル名】
(例:2022/11/02 10時処理時)
C:/SyslogFile/202211/syslog-2022110210-192.168.1.2.log

(例:2022/11/02 11時処理時)
C:/SyslogFile/202211/syslog-2022110211-192.168.1.2.log

【実結果ファイル名】
(例:2022/11/02 10時処理時)
C:/SyslogFile/202211/syslog-2022110200-192.168.1.2.log

(例:2022/11/02 11時処理時)
C:/SyslogFile/202211/syslog-2022110200-192.168.1.2.log

該当のソースコード

<source> @type syslog source_hostname_key "client_host" source_address_key "client_addr" port 514 bind "0.0.0.0" @label @syslog.all tag "syslog" <parse> @type "none" </parse> </source> <label @syslog.all> <filter syslog.**> @type record_transformer <record> message ${record["client_addr"]} ${time} ${tag_suffix[1]} ${record["message"]} </record> </filter> <match syslog.**> @type copy <store> @type "file" append true path "C:/SyslogFile/%Y%m/syslog-%Y%m%d%H-${client_host}" <buffer client_host,time> flush_mode interval flush_interval 60s chunk_limit_records 1 path "c:/SyslogFile/buffer/%Y%m/syslog-%Y%m%d%H-${client_host}" </buffer> <format> @type "single_value" </format> </store> <store> @type "relabel" @label @errorSyslog </store> </match> </label> <label @errorSyslog> リラベルしたあとの処理は省略します。 </label>

試したこと

path "C:/SyslogFile/%Y%m/syslog-%Y%m%d%H-${client_host}"

行の下に

path "C:/SyslogFile/%Y%m/syslog-%Y%m%d%H-${client_host}" time_slice_format %Y%m%d%H%M%s

の様に追加する事で、ファイル名末尾にも年月日付時刻が付加されますが、%H%M%s も全てゼロで取得されてしまいます。
■結果(例 2022/11/02 11時実行時)
C:/SyslogFile/202211/syslog-2022110200-192.168.1.2.20221102000000.log

補足情報(FW/ツールのバージョンなど)

OS:Windows10
td-agent-4.4.1-x64.msi

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

とりあえず解決した方法として、buffer タグ内に timekey を設定することで、%Hの時刻が取得でき、希望通りファイル名にYYYYMMDDHHが付加できました。

理由がよくわかっていないのですが、
timekey を 3600以下にするとFluentd起動時に下記エラーで落ちる為、1時間以上を指定する事で、バッファーのタイミングも1時間となり、プレイスフォルダーの%Hも値も取得できる。
ということなのでしょうか?

■起動時エラーメッセージ例
2022-11-02 16:13:36 +0900 [error]: fluent/log.rb:372:error: config error file="C:\opt\td-agent\bin\\..\etc\td-agent\td-agent.conf" error_class=Fluent::ConfigError error="insufficient timestamp placeholders in path"

Fluentdはググっても旧バージョン情報とごちゃまぜになっているので、ご教授願います。

<buffer client_host,time> timekey 3600 flush_mode interval 以下略

投稿2022/11/02 07:47

編集2022/11/02 07:50
taharasan

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問