$msec
logging parameter,它以毫秒为粒度给出了请求时间,从Unix纪元开始计算的秒数。然而,这个格式包含一个句点'.',例如'1407233265.472',这对于我正在使用的导入函数来解析日志文件是个问题。
有没有一种方法(日志参数或插件)可以让请求时间以总毫秒数记录?例如'1407233265472'。我愿意根据需要编译nginx。
$msec
logging parameter,它以毫秒为粒度给出了请求时间,从Unix纪元开始计算的秒数。然而,这个格式包含一个句点'.',例如'1407233265.472',这对于我正在使用的导入函数来解析日志文件是个问题。
有没有一种方法(日志参数或插件)可以让请求时间以总毫秒数记录?例如'1407233265472'。我愿意根据需要编译nginx。
if ($msec ~ "(.*)\.(.*)") {
set $epoch_millis = "$1$2"
}
这个更干净,但需要使用lua。
set_by_lua_block $epoch_millis { return string.gsub(ngx.var.msec, "%.", "") }
然后只需记录$epoch_millis
map $msec $msec_no_decimal { ~(.*)\.(.*) $1$2; }
具体来说,我需要将这张地图放在nginx.conf的http { ... }
块中,因为DataDog不会自动解析10.3格式,但会解析13位数字格式。
(为了解决sanigo的担忧;nginx会在小数点后面填充零,所以这将始终转换为13位数字。)
sed
进行处理。 - Sven