阅读160 返回首页    go 英雄联盟


数据模型__公共资源说明_API-Reference_日志服务-阿里云

为方便理解整个Log Service服务并顺利使用,这里首先介绍其中的几个基本概念。

地域(Region)

地域为阿里云的服务节点。用户通过在不同的阿里云Region部署服务,让自己的服务距离客户更近,获得更低的访问延时及更好的用户体验。目前阿里云在全国各地拥有多个Region。

项目(Project)

项目为Log Service中的基本管理单元,用于资源隔离和控制。用户可以通过项目来管理某一个应用的所有日志及相关的日志源。

日志库(Logstore)

日志库为Log Service中日志数据的收集、存储和消费单元。每个日志库隶属于一个项目,每个项目可以创建多个日志库。用户可以根据实际需求为某一个项目生成多个日志库,其中常见的做法是为一个应用中的每类日志创建一个独立的日志库。例如,假如用户有一个“big-game”游戏应用,服务器上有三种日志:操作日志(operation_log),应用程序日志(application_log)以及访问日志(access_log),用户可以首先创建名为“big-game”的项目,然后在该项目下面为这三种日志创建三个日志库,分别用于它们的收集、存储和消费。

日志(Log)

日志为Log Service中处理的最小数据单元。Log Service采用半结构数据模式定义一条日志,具体数据模型如下:

  • 主题(Topic):用户自定义字段,用以标记一批日志(例如:访问日志根据不同的站点进行标记)。默认该字段为空字符串(空字符串也为一个有效的主题)。
  • 时间(Time):日志中保留字段,用以表示日志产生的时间(精度为秒,从1970-1-1 00:00:00 UTC计算起的秒数),一般由日志中的时间直接生-。
  • 内容(Content):用以记录日志的具体内容。内容部分由一个或多个内容项组成,每一个内容项由Key、Value对组成。
  • 来源(Source):日志的来源地,例如产生该日志机器的IP地址。默认该字段为空。

与此同时,Log Service对日志各字段的取值有不同要求,具体如下表描述:

数据域 要求
time 整型,Unix标准时间格式,最小单位为秒
topic 任意不超过128字节的UTF-8编码字符串
source 任意不超过128字节的UTF-8编码字符串
content 一个或多个Key-Value对。其中Key为仅包含字母、下划线、数字,不以数字开头,不超过128字节的UTF-8编码字符串。Value为不超过1024*1024字节的任意UTF-8编码字符串

上表content中的key不可以使用如下关键字:__time____source____topic__, __partition_time___extract_others_, __extract_others__

日志主题(Topic)

一个日志库内的日志可以通过日志主题(Topic)来划分。用户可以在写入时指定日志主题。例如,一个平台用户可以使用用户编号作为日志主题写入日志。如果不需要划分一个日志库内日志,让所有日志使用相同的日志主题即可。

注意:空字符串是一个有效的日志主题(Topic),默认的日志主题都是空字符串。

下图描述了日志库、日志主题和日志之间的关系:

实际使用场景中,日志的格式多样。为了帮助理解,以下以一条nginx原始访问日志如何映射到Log Service日志数据模型为例说明。假设用户nginx服务器的IP地址为10.249.201.117,下面为其上的一条原始日志:

10.1.168.193 - - [01/Mar/2012:16:12:07 +0800] "GET /Send?AccessKeyId=8225105404 HTTP/1.1" 200 5 "-" "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2"

把该条原始日志映射到Log Service日志数据模型,如下:

数据域 内容 说明
topic "" 沿用默认值(空字符串)
time 1330589527 日志产生的精确时间(精确到秒),从原始日志中的时间戳转换而来。
source "10.249.201.117" 使用服务器IP地址作为日志源
content Key-Value对 日志具体内容

用户可以自己决定如何提取日志原始内容并组合成Key-Value对,例如下表:

key value
ip "10.1.168.193"
method "GET"
status "200"
length "5"
ref_url "-"
browser "Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0.2) Gecko/20100101 Firef

Logs

由多条日志产生的集合。

LogGroup

一组日志的集合。

LogGroupList

一组LogGroup集合,用于结果返回。

编码方式

系统目前支持以下内容编码方式(将来可扩展),Restful API层通过Content-Type表示。

含义 Content-Type
ProtoBuf ProtoBuf对数据模型进行编码 application/x-protobuf

以下PB定义了数据模型中的对象:

message Log
{
    required uint32 Time = 1;// UNIX Time Format
    message Content
    {
        required string Key = 1;
        required string Value = 2;
    }  
    repeated Content Contents= 2;

}
message LogGroup
{
    repeated Log Logs= 1;
    optional string Reserved = 2; // reserved fields
    optional string Topic = 3;
    optional string Source = 4;
}
message LogGroupList
{
    repeated LogGroup logGroupList = 1;
}

注意:

  1. 由于PB对KeyValue对不要求唯一性,因此需要避免出现该情况,否则行为为未定义。

最后更新:2016-11-23 16:04:03

  上一篇:go 鉴权规则__RAM子用户访问_API-Reference_日志服务-阿里云
  下一篇:go 数据编码方式__公共资源说明_API-Reference_日志服务-阿里云