NGINX,从 http header 中提取 url 路径
NGINX, Extracting url path from http header
所以我将我的 Nginx 访问日志发送到 Datadog(一种 APM 解决方案)。
我的日志格式是这样的
log_format json_custom
'{'
'"http.version":"$request",'
'"http.status_code":$status,'
'"http.method":"$request_method",'
'"http.referer":"$http_referer",'
'"http.useragent":"$http_user_agent",'
'"time_local":"$time_local",'
'"remote_addr":"$remote_addr",'
'"remote_user":"$remote_user",'
'"body_bytes_sent":"$body_bytes_sent",'
'"request_time":$request_time,'
'"response_content_type":"$sent_http_content_type",'
'"X-Forwarded-For":"$proxy_add_x_forwarded_for",'
'"custom_key":"custom_value"'
'}';
我可以从 referrer
字段中提取 url,它看起来像这样
http://example.com/foo/bar
虽然我只想要/foo/bar
。这是我必须在 log_format
中修改的内容吗?
我从 datadog 文档中看到了一个示例,他们可以在其中提取 url 路径属性,但没有示例配置。
Datadog 可以通过其管道过滤功能处理日志
如果您已经有一个包含 url 的属性,一个真正简单的方法是对这些日志使用 processing pipelines and add a processor of the "url parser" 类型。您只需插入属性包含 url 和一个属性路径,您希望包含它的所有输出(通常是 http.url_details
),然后所有新日志都将应用额外的 url 解析。
如果您的日志应用了 "source:nginx"(在日志传送器中配置),那么您将已经拥有 Datadog 用于构建标准 Nginx 的开箱即用的 Nginx 处理管道语法日志。您可以克隆它,然后在其中添加新的 url 解析器。或者,如果您的语法类似于标准语法,您可以只修改它们的默认建议解析器(在克隆的管道中)。无论如何,值得查看默认管道以获取 url 解析之外的其他有价值的事情的灵感。
所以我将我的 Nginx 访问日志发送到 Datadog(一种 APM 解决方案)。
我的日志格式是这样的
log_format json_custom
'{'
'"http.version":"$request",'
'"http.status_code":$status,'
'"http.method":"$request_method",'
'"http.referer":"$http_referer",'
'"http.useragent":"$http_user_agent",'
'"time_local":"$time_local",'
'"remote_addr":"$remote_addr",'
'"remote_user":"$remote_user",'
'"body_bytes_sent":"$body_bytes_sent",'
'"request_time":$request_time,'
'"response_content_type":"$sent_http_content_type",'
'"X-Forwarded-For":"$proxy_add_x_forwarded_for",'
'"custom_key":"custom_value"'
'}';
我可以从 referrer
字段中提取 url,它看起来像这样
http://example.com/foo/bar
虽然我只想要/foo/bar
。这是我必须在 log_format
中修改的内容吗?
我从 datadog 文档中看到了一个示例,他们可以在其中提取 url 路径属性,但没有示例配置。
Datadog 可以通过其管道过滤功能处理日志
如果您已经有一个包含 url 的属性,一个真正简单的方法是对这些日志使用 processing pipelines and add a processor of the "url parser" 类型。您只需插入属性包含 url 和一个属性路径,您希望包含它的所有输出(通常是 http.url_details
),然后所有新日志都将应用额外的 url 解析。
如果您的日志应用了 "source:nginx"(在日志传送器中配置),那么您将已经拥有 Datadog 用于构建标准 Nginx 的开箱即用的 Nginx 处理管道语法日志。您可以克隆它,然后在其中添加新的 url 解析器。或者,如果您的语法类似于标准语法,您可以只修改它们的默认建议解析器(在克隆的管道中)。无论如何,值得查看默认管道以获取 url 解析之外的其他有价值的事情的灵感。