文档

将Logstore中的日志字段转换MetricStore中的度量指标

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

如果您需要监控日志库(Logstore)的日志中某字段的指标变化趋势,可以使用数据加工函数e_to_metric将日志字段转换为时序库(MetricStore)中的度量指标(Metric),然后通过时序库查看该指标的变化趋势。本文以Nginx访问日志为例介绍操作步骤。

背景信息

应用程序的运行数据,主要有Log、Trace和Metric这三大类数据。Log是离散的事件,Trace可以认为是带请求追踪的事件,Metric是带统计量的事件。Log、Trace、Metric本质上都是事件,满足事件存储的系统都可以用来存储这三类数据。日志服务提供两种存储:

  • Logstore

    日志服务中Log的采集、存储和查询单元。更多信息,请参见日志库(Logstore)

  • MetricStore

    日志服务中Metric的采集、存储和查询单元。日志服务MetricStore针对Metric做了大量优化,提供PromQL查询能力,支持Prometheus协议。更多信息,请参见时序库(MetricStore)

很多应用的Log数据往往比Metric全面,Metric可以认为是特定格式的Log,因此在日志服务中可以将Log转换为Metric。常见的Log转Metric的方法如下:

  • 使用日志服务的定时SQL功能聚合日志产生指标。更多信息,请参见从Logstore到MetricStore

  • 使用数据加工e_to_metric函数将Logstore中的日志字段转换为时序数据的Metric。

场景描述

某企业在华东1(杭州)地域创建了名为nginx-demo的Logstore,用于存储Nginx服务的访问日志。

该企业需要监控后端服务器(Host)的每次请求耗时request_time和响应耗时upstream_response_time变化情况,并通过仪表盘展示变化趋势。为实现需求,您需要将Logstore中request_timeupstream_response_time字段转换为Metric,并加上Host标签。

body_bytes_sent:1750
host:www.example.com
http_referer:www.guide.example.com
http_user_agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; it-it) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
http_x_forwarded_for:203.0.113.10
remote_addr:203.0.113.10
remote_user:p288
request_length:13741
request_method:GET
request_time:71
request_uri:/request/path-1/file-1
status:200
time_local:11/Aug/2021:06:52:27
upstream_response_time:0.66

前提条件

已采集到日志数据。更多信息,请参见数据采集

步骤一:创建时序库

创建名称为service-metric的时序库,用于保存数据加工后的时序数据。

  1. 登录日志服务控制台

  2. 在Project列表区域,单击目标Project。

    image

  3. 时序存储 > 时序库页签中,单击+图标。

  4. 创建MetricStore面板,配置如下参数,单击确定

    参数

    说明

    MetricStore名称

    MetricStore名称在其所属Project内必须唯一,创建后不能修改。

    数据保存时间

    日志服务采集的时序数据在MetricStore中的保存时间。

    • 选择数据保存模式为限定天数保存,并按需设置数据保存时间。单位为天,取值范围:1~3000。

      警告
      • 当日志保存时间达到您所设置的保存时间后,日志将被删除。

      • 缩短数据保存时间后,日志服务将在1小时内删除所有已超过保存时间的数据。但日志服务控制台首页的用量明细将于次日更新。例如您原本的数据保存时间为5天,现修改为1天,则日志服务将在1小时内删除前4天的日志。

    • 选择数据保存模式为永久保存时,日志服务将永久保存采集到的时序数据。

      说明

      通过SDK方式获取数据保存时间时,如果对应值为3650则表示永久保存。

    Shard数目

    日志服务使用Shard读写数据。一个Shard提供的写入能力为5 MB/s、500次/s,读取能力为10 MB/s、100次/s。每个MetricStore中最多创建10个Shard,每个Project中最多创建200个Shard。更多信息,请参见分区(Shard)

    自动分裂Shard

    打开自动分裂Shard开关后,如果您写入的数据量超过已有Shard服务能力,日志服务会自动根据数据量增加Shard数量。更多信息,请参见管理Shard

    最大分裂数

    打开自动分裂shard开关后,最多支持自动分裂至256个readwrite状态的Shard。

步骤二:创建数据加工任务

使用e_to_metric函数创建数据加工任务,将加工结果输出到步骤一中创建的时序库。

  1. 进入数据加工页面

  2. 在数据加工页面右上角,选择数据的时间范围,确保页面下方原始日志页签中有目标日志。

    image

  3. 在编辑框中,输入数据加工语句。将Logstore中的request_timeupstream_response_time字段转换为Metric,将host字段重命名为hostname后作为新增的labels字段。

    e_to_metric(
        names=[("request_time", "RequestTime"), ("upstream_response_time", "ResponseTime")],
        labels=[("host", "hostname")],
    )
  4. 单击预览数据,查看加工结果页签。

    image

  5. 创建数据加工任务。

    1. 单击保存数据加工

    2. 创建数据加工任务面板,配置如下信息,然后单击确定。更多参数说明,请参见创建数据加工任务

      参数

      说明

      任务名称、显示名称

      任务名称唯一。显示名称由用户自定义,例如log2metric。

      授权方式

      选择默认角色读取源Logstore数据。

      存储目标

      目标名称

      存储目标的名称。例如log2metric。

      目标Region

      选择目标Project所在地域。例如华东1(杭州)。

      目标Project

      用于存储数据加工结果的目标Project名称。

      目标库

      用于存储数据加工结果的目标MetricStore名称。例如service-metric。

      授权方式

      选择默认角色将数据加工结果写入目标时序库service-metric。

      加工范围

      时间范围

      时间范围选择所有

  1. 查看数据加工任务的进度。

    image

步骤三:查询时序数据

  1. 在左侧导航栏,选择时序存储 > 时序库,然后选择目标时序库。

    image

  2. 在页面右上角,单击15分钟(相对),设置查询和分析的时间范围。

    说明

    查询和分析结果相对于指定的时间范围,有1min以内的误差。

  3. 单击预览原始数据,然后在右侧面板选择时间范围,查看目标日志是否上传成功。

    image

  4. 通过如下方式输入查询和分析语句。查询时序数据的具体步骤,请参见查询和分析时序数据

    • 直接输入PromQL语句,单击立即执行

      日志服务支持添加多个查询和分析操作以及在时序图中叠加展示多个查询和分析结果。

    • Metrics探索框中,单击目标监控项对应的加号图标,日志服务将自动生成查询和分析语句。

      您也可以在Metrics探索框中,单击目标监控项对应的继续探索,设置标签值。日志服务将根据您的设置,自动生成查询和分析语句。具体操作,请参见指标探索

    • 每个Host的请求时间RequestTime变化趋势RequestTime

    • 每个Host的响应时间ReponseTime变化趋势ReponseTime