fluentd forest のログ形式
td-agent をいれたのも設定したのも自分ではなくてほとんど分かってないレベルで申し訳ありません
FuelPHP が /var/log/ にはいたログを fluentd で s3 に転送していて
Fuel から fluentd に送ってる部分はおそらくこれで
class Log extends \Fuel\Core\Log
{
public static function _init() {
parent::_init();
$logSetting = \Config::load("logging","logging");
$logHost = \Config::get("logging.api.host");
$logPort = \Config::get("logging.api.port");
$logTag = \Config::get("logging.api.name");
static::$monolog->pushHandler(new FluentHandler(null, $logHost, $logPort, $logTag));
}
}
fluentd の設定もおそらく以下で type forest というプラグイン?で処理されてます
<match api.**>
type forest
id api_match
subtype s3
<template>
aws_key_id XXXXXXXXXXXX
aws_sec_key XXXXXXXXXXXXXXXXXXXXXXXX
s3_bucket api.serverlog
s3_region ap-northeast-1
check_apikey_on_start false
buffer_path /var/log/td-agent/${tag}
path server_logs/%Y/%m/%d/${hostname}/${tag}/
s3_object_key_format %{path}%{time_slice}_%{index}.%{file_extension}
time_slice_format %Y-%m-%d-%H
flush_interval 10m
retry_wait 10s
retry_limit 3
buffer_chunk_limit 16m
utc
</template>
</match>
いずれもログのフォーマットを決めるような記述はなさそうなのですが
/var/log/api/YYYY/MM/DD.php にはかれたログは
INFO - 2019-08-30 02:52:46 --> Fuel\Core\Request::__construct - Creating a new main Request with URI = "/user"
という形式なのですがS3に転送されたログの中身が
2019-08-30T02:30:17Z api.log {"text":"Fuel\\Core\\Request::__construct - Creating a new main Request with URI = \"/user\"","level":"INFO"}
という時刻とタグが付与されてログの中身は JSON 形式になってしまいます
このログの形式はどこで決まっているのでしょうか
/var/log 以下の形式は Fuel 内でフォーマットで決められるみたいなので
そこを CSV 形式にして S3 にも CSV のまま保存して Athena で見たいと思っていいるのですが
どこを変更すれば /var/log と同じ内容のS3ファイルを作れるでしょうか
追記:
https://github.com/tagomoris/fluent-plugin-forest
公式のドキュメントも呼んでみたのですがフォーマットを設定できるような箇所はなさそうに見えます