私は知っています $msec
logging parameter これは、ミリ秒の粒度でUnixエポック以降の要求時間を秒単位で示します。ただし、この形式にはピリオド「。」が含まれます。例えば「1407233265.472」。これは、ログファイルの解析に使用しているインポート機能の問題です。
リクエスト時間を合計ミリ秒で記録できるようにする方法(ログパラメータまたはプラグイン)はありますか?例えば「1407233265472」。必要に応じてnginxをコンパイルできます。
これを実現するには2つの方法があります。最初のものは汚れていて、私はそれをお勧めしません-しかしそれは最速の方法です:
if ($msec ~ "(.*)\.(.*)") {
set $Epoch_millis = "$1$2"
}
これははるかにクリーンですが、luaが必要です:
set_by_lua_block $Epoch_millis { return string.gsub(ngx.var.msec, "%.", "") }
次に、$ Epoch_millisをログに記録します
Sirkの回答を拡張すると、マップを使用して、10.3ミリ秒形式から小数点のない13桁のミリ秒エポック形式に変換することもできます。
map $msec $msec_no_decimal { ~(.*)\.(.*) $1$2; }
具体的には、DataDogは10.3形式を自動的に解析しませんが、13桁の形式を解析するため、このマップをnginx.confのhttp { ... }
ブロック内に配置する必要がありました。
(sanigoの懸念に対処するため。nginxは小数点以下にゼロを埋め込むため、これは常に13桁に変換されます。)