文档

Log转为Metric

更新时间:

您在使用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插件处理配置

      image

    • 处理结果

      • 第一条时序数据

        {
            "__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配置方式

配置typeprocessor_log_to_sls_metricdetail说明如下表所示。

  • 参数说明

    参数

    类型

    是否必选

    说明

    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"
        }