本文介绍如何通过日志服务将日志数据投递到TSDB,并映射为时间点进行时序存储,以满足其他应用场景需求。

背景信息

日志作为一种特殊的数据,对处理历史数据、诊断问题以及了解系统活动等有着非常重要的作用,对数据分析人员、开发人员以及运维人员而言,日志也是其工作过程中必不可缺的数据来源。

阿里云日志服务考虑到不同的应用场景,提供了从各种云产品进行日志采集并深度处理的完善服务,TSDB支持从日志服务导入日志记录,并映射为时间点进行时序存储。

前提条件

  • 已开通日志服务和TSDB。
  • 日志服务和TSDB必须在同一个区域(region),目前暂不支持跨区域数据交互。

创建投递任务

按照如下步骤演示进行任务创建过程。

  1. 登录日志服务控制台,单击选择需要导出的Project和LogStore。
  2. 日志库列表中,单击目标Logstore名称前的>,然后依次单击数据处理 > 导出 > TSDB
    创建
  3. 单击TSDB后的,将会跳转到单独的导出任务配置页,请您在配置页继续完成导出任务的创建。
    说明 如果日志库尚未做任何数据加工, 日志服务会提示是否先完成日志的数据加工再进行投递,如果日志记录很规范,也可以选择不经加工直接投递到TSDB。
  4. 根据参数信息填写任务配置项。
    配置项

    请您参见如下参数信息表进行配置:

    参数 说明
    投递名称 自定义一个投递名称,便于后续管理。
    投递描述 为投递任务填写有意义的描述,便于后续管理。
    TSDB实例 当前Region中已购TSDB列表,选中需要导出数据的实例。
    度量名称 导出到哪一个TSDB度量(metric),度量不存在时会自动创建。
    AccessKeyID 当前登录账号的AK ID(供TSDB访问)。
    AccessKeySecret 当前登录账号的AK Secret(供TSDB访问)。
    时间点映射
    将日志记录中的时间戳映射到TSDB时间戳,默认将日志发生时间作为TSDB时间戳( ${logTag:time} ),该字段支持用表达式( ${logTag:xx} )与( ${logColumn:xx})做数值替换,表达式替换失败的情况下,时间戳会采用SLS日志记录时间( ${logTag:time} )。表达式所引用的字段必须可以转换为数值(Epoch seonc/milli-second)。由于SLS日志时间戳(time)精度只采集到秒, 如果您的日志在一秒内有可能出现多条,那么您需要指定哪些SLS日志信息作为TSDB的目标时间戳。支持使用表达式来引用一些上下文信息,表达式语法为:
    ${context:variable}
    更多SLS日志上下文变量信息,请参见上下文查询

    表达式中logColumn:前缀表示引用原始SLS日志中所属column的值作为映射值。

    表达式中logTag:前缀表示引用原始SLS日志中所属tag的值作为映射值。常见Tag:
    • __topic__:整个LogGroup(一条或多条日志)的业务标记(表达式引用格式${logTag:__topic__)。
    • __source__:产生该条日志记录的机器IP地址(表达式引用格式${__source__} )。
    • __time__:日志记录的时间戳(秒级)(表达式引用格式${__time__} )。
    字段映射 配置哪些日志字段为TSDB字段,依次填写日志字段名称与TSDB字段名称。 当只存在单个字段映射时,导出为TSDB单值模型(TSDB字段名称只能是value),当存在多个字段映射时,导出为TSDB多值模型。
    标签映射 为导出的数据记录设置TSDB标签,依次填写标签名称与标签值,该配置项的标签名称与标签值支持使用表达式来引用一些上下文信息,表达式语法为:
    ${context:variable}

    更多SLS日志上下文变量信息,请参见上下文查询

    投递时间 从什么时间开始数据投递(小于该时间范围的数据不会被投递)。
  5. 当所有参数填写完毕后, 单击提交即可创建数据投递任务。

相关操作

  • TSDB导出任务在创建完成后立即启动,如果您需要暂停或者查看服务状态,可以在导出任务创建完毕后, 在SLS控制面板单击任务名称,进入任务管控面板进行操作。
  • 任务创建完毕后,您也可以修改任务配置,其中配置参数说明请参见创建投递任务