您在使用Logtail采集日志时,可以使用processor_log_to_sls_metric插件将采集到的日志转成SLS Metric。本文介绍processor_log_to_sls_metric插件的参数说明和配置示例。
功能入口
当您需要使用Logtail插件处理日志时,您可以在创建或修改Logtail采集配置时,添加插件配置。具体操作,请参见处理插件概述。
配置说明
Logtail 1.7.1及以上版本支持processor_log_to_sls_metric插件。
表单配置方式
配置处理器类型为Log转Metric,相关参数说明如下表所示。
- 参数说明 - 参数 - 说明 - MetricTimeKey - 指定日志中的时间字段,该字段将与时序数据中的 - __time_nano__字段映射。默认提取日志中- __time__字段的值。- 确保指定的字段是合法的、符合格式的时间戳。目前支持以second(10位长度)、millisecond(13位长度)、microsecond(16位长度)、nanosecond(19位长度)为单位的Unix时间戳。 - MetricLabelKeys - 指定 - __labels__字段的Key列表,Key需遵循正则表达式- ^[a-zA-Z_][a-zA-Z0-9_]*$。Value不能包含竖线(|)和- #$#。更多信息,请参见时序数据(Metric)。- 不支持在MetricLabelKeys参数中添加 - __labels__字段。如果原始字段中存在- __labels__字段,该值将被追加到新的- __labels__字段中。- MetricValues - 用于指定Metric名称和Metric值。 - Metric名称对应 - __name__字段,需遵循正则表达式- ^[a-zA-Z_:][a-zA-Z0-9_:]*$。
- Metric值对应 - __value__字段,需为Double类型。
 - 更多信息,请参见时序数据(Metric) 。 - CustomMetricLabels - 自定义的 - __labels__字段, Key需遵循正则表达式- ^[a-zA-Z_][a-zA-Z0-9_]*$,Value不能包含竖线(|)和- #$#。更多信息,请参见时序数据(Metric) 。- IgnoreError - 当没有匹配日志时是否输出Error日志。 
- 配置示例 - 原始日志 - { "script_md5":"8c6aebe9****c27f", "remote_addr":"123.XX.XX.123", "remote_user":"-", "time_local":"15/Aug/2023:12:03:20", "method":"GET", "url":"/www.a.com", "protocol":"HTTP/1.1", "status":"404", "body_bytes_sent":"4146", "http_referer":"-", "http_user_agent":"curl/7.74.0", "http_x_forwarded_for":"-", "__labels__":"field1#$#field1|field2#$#field2|tag1#$#tag1|tag2#$#tag2", "body_bytes_sent_name":"body_bytes_sent", "status_name":"status", "httptime":"1692101000", "__time__":"1692101000" }
- Logtail插件处理配置  
- 处理结果 - 第一条时序数据 - { "__labels__":"field1#$#field1|field2#$#field2|method#$#GET|nginx#$#test|tag1#$#tag1|tag2#$#tag2|url#$#/www.a.com", "__name__":"body_bytes_sent", "__value__":"4146", "__time_nano__":"1692101000000000000", "__time__":"1692101000" }
- 第二条时序数据 - { "__labels__":"field1#$#field1|field2#$#field2|method#$#GET|nginx#$#test|tag1#$#tag1|tag2#$#tag2|url#$#/www.a.com", "__name__":"status", "__value__":"404", "__time_nano__":"1692101000000000000", "__time__":"1692101000" }
 
 
JSON配置方式
配置type为processor_log_to_sls_metric,detail说明如下表所示。
- 参数说明 - 参数 - 类型 - 是否必选 - 说明 - MetricTimeKey - String - 否 - 指定日志中的时间字段,该字段将与时序数据中的 - __time_nano__字段映射。默认提取日志中- __time__字段的值。- 确保指定的字段是合法的、符合格式的时间戳。目前支持以second(10位长度)、millisecond(13位长度)、microsecond(16位长度)、nanosecond(19位长度)为单位的Unix时间戳。 - MetricLabelKeys - []String - 是 - 指定 - __labels__字段的Key列表,Key需遵循正则表达式- ^[a-zA-Z_][a-zA-Z0-9_]*$。Value不能包含竖线(|)和- #$#。更多信息,请参见时序数据(Metric)。- 不支持在MetricLabelKeys参数中添加 - __labels__字段。如果原始字段中存在- __labels__字段,该值将被追加到新的- __labels__字段中。- MetricValues - Map - 是 - 用于指定Metric名称和Metric值。 - Metric名称对应 - __name__字段,需遵循正则表达式- ^[a-zA-Z_:][a-zA-Z0-9_:]*$。
- Metric值对应 - __value__字段,需为Double类型。
 - 更多信息,请参见时序数据(Metric) 。 - CustomMetricLabels - Map - 否 - 自定义的 - __labels__字段, Key需遵循正则表达式- ^[a-zA-Z_][a-zA-Z0-9_]*$,Value不能包含竖线(|)和- #$#。更多信息,请参见时序数据(Metric) 。- IgnoreError - Boolean - 否 - 当没有匹配日志时是否输出Error日志。默认值为false,表示不输出。 
- 配置示例 - 原始日志 - { "script_md5":"8c6aebe9****c27f", "remote_addr":"123.XX.XX.123", "remote_user":"-", "time_local":"15/Aug/2023:12:03:20", "method":"GET", "url":"/www.a.com", "protocol":"HTTP/1.1", "status":"404", "body_bytes_sent":"4146", "http_referer":"-", "http_user_agent":"curl/7.74.0", "http_x_forwarded_for":"-", "__labels__":"field1#$#field1|field2#$#field2|tag1#$#tag1|tag2#$#tag2", "body_bytes_sent_name":"body_bytes_sent", "status_name":"status", "httptime":"1692101000", "__time__":"1692101000" }
- Logtail插件处理配置 - { "processors":[ { "detail":{ "CustomMetricLabels":{ "nginx":"test" }, "IgnoreError":false, "MetricLabelKeys":[ "url", "method" ], "MetricTimeKey":"httptime", "MetricValues":{ "body_bytes_sent_name":"body_bytes_sent", "status_name":"status" } }, "type":"processor_log_to_sls_metric" } ] }
- 处理结果 - 第一条时序数据 - { "__labels__":"field1#$#field1|field2#$#field2|method#$#GET|nginx#$#test|tag1#$#tag1|tag2#$#tag2|url#$#/www.a.com", "__name__":"body_bytes_sent", "__value__":"4146", "__time_nano__":"1692101000000000000", "__time__":"1692101000" }
- 第二条时序数据 - { "__labels__":"field1#$#field1|field2#$#field2|method#$#GET|nginx#$#test|tag1#$#tag1|tag2#$#tag2|url#$#/www.a.com", "__name__":"status", "__value__":"404", "__time_nano__":"1692101000000000000", "__time__":"1692101000" }
 
 
相关文档
- 通过API接口配置Logtail流水线: 
- 通过控制台配置处理插件: