tr8
March 23, 2017, 5:47am
1
下記課題の解決方法を教えていただきたいです。
■やりたい事
もとのファイルの内容と完全一致でlogをS3へ出力する
■ステップ
1.filebeatでサーバAにあるlogをinputし、サーバBのlogstashへoutputする
2.サーバBのlogstashでサーバAからのinputをS3へoutputする
■課題
下記2点の観点でlogをうまくS3に出力できておりません。
1.logの順番が変わっている(timestampの順に出力したい)
2.timestampとホスト名がlogの前に出力されている
S3にあるべきlog(もとのlog)
[2017-03-05 19:35:00] [{LOGLEVEL}] [{LOGNAME}] {MESSAGE}
[2017-03-05 19:35:01] [{LOGLEVEL}] [{LOGNAME}] {MESSAGE}
[2017-03-05 19:35:11] [{LOGLEVEL}] [{LOGNAME}] {MESSAGE}
[2017-03-05 19:35:13] [{LOGLEVEL}] [{LOGNAME}] {MESSAGE}
S3にある現状のlog
2017-03-05T19:35:11.000Z {HOSTNAME} [2017-03-05 19:35:11] [{LOGLEVEL}] [{LOGNAME}] {MESSAGE}
2017-03-05T19:35:13.000Z {HOSTNAME} [2017-03-05 19:35:13] [{LOGLEVEL}] [{LOGNAME}] {MESSAGE}
2017-03-05T19:35:00.000Z {HOSTNAME} [2017-03-05 19:35:00] [{LOGLEVEL}] [{LOGNAME}] {MESSAGE}
2017-03-05T19:35:01.000Z {HOSTNAME} [2017-03-05 19:35:01] [{LOGLEVEL}] [{LOGNAME}] {MESSAGE}
よろしくお願いいたします。
st1t
(Shota Ito)
March 23, 2017, 5:16pm
2
1.logの順番が変わっている(timestampの順に出力したい)
WEBサーバへ人力リロードレベルだと再現しなかったのですが、
負荷かけたら変わる気がするので時間がある時にもう少し試してみようと思います。
2.timestampとホスト名がlogの前に出力されている
こちらに関しては、
Logstashのs3の設定にcodecのところに以下のようなformat設定を入れたら解決出来るようです。
output {
s3{
access_key_id => "XXXX"
secret_access_key => "XXXX"
region => "ap-northeast-1"
bucket => "bucket"
temporary_directory => "/tmp/out-s3"
time_file => 3
codec => line { format => "%{message}" }
canned_acl => "private"
}
}
余談ですがこちらの公式ドキュメントのUsageはformatの表記がこのままだと手元だと以下エラーでうまくいかないかも・・・?
[2017-03-24T01:05:07,823][ERROR][logstash.outputs.s3 ] Unknown setting 'format' for s3
もしもう少し見てみて変えたほうが良さそうでしたら、
来週にでもlogstash-output-s3のUsage表記はPR出してみようかと思います。
codecプラグインに関してはこの辺りを参照してもらえれば良いと思います。
tr8
March 24, 2017, 12:22am
3
ご回答ありがとうございます!
1.logの順番が変わっている(timestampの順に出力したい)
pipeline.workersを1にしてみるとうまく出力できている感じです。
2.timestampとホスト名がlogの前に出力されている
codecを試してみます!
system
(system)
Closed
April 21, 2017, 12:22am
4
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.