更新时间:2024-09-19 GMT+08:00

设置LTS日志索引配置

索引是一种存储结构,用于对日志数据进行查询。通过配置索引后,可对日志进行查询和分析操作。不同的索引配置,则会产生不同的查询和分析结果,请根据您的需要,合理配置索引。

索引类型

云日志服务LTS支持全文索引和字段索引,详细请参考表1

表1 索引类型

索引类型

说明

全文索引

开启全文索引后,日志服务根据您设置的分词符将整条日志所有字段值拆分成多个词并构建索引。

说明:
  • 用户上传的自定义标签(label)字段,不包含在全文索引中,如果您需要搜索自定义标签字段,请添加对应的字段索引。
  • LTS内置保留字段,不包含在全文索引中,您需要通过字段索引Key:Value的方式进行搜索,请参考内置保留字段

字段索引

配置字段索引后,您可以指定字段名称和字段值(Key:Value)进行查询,缩小查询范围。

说明:
  • 日志服务默认为部分内置保留字段创建字段索引,请参考内置保留字段
  • 如果您的某个字段单独配置了字段索引,那么该字段值的分词符以字段索引配置为准。
  • 结构化配置中的快速分析列已被移除,如果您要使用快速分析功能,则必须配置字段索引且开启对应字段的快速分析按钮。

关于日志示例有两种情况:

  • 在日志示例中,配置了level和status两个字段索引,其中level是string类型,字段值是error,单独配置了分词符,status是long类型,不需要配置分词符;您可以使用level : error的方式精确搜索level字段值为error的所有日志。
  • 在日志示例中,云日志服务LTS会默认为hostName、hostIP、pathFile这些内置保留字段创建字段索引。

注意事项

  • 全文索引属性和字段索引属性必须至少启用一种。
  • 创建索引会产生索引流量和索引存储空间,费用说明请参见价格计算器
  • 关闭索引后,历史索引的存储空间将在当前日志流的数据保存时间到期后,自动被清除。
  • 云日志服务默认已为部分内置保留字段创建字段索引,请参见内置保留字段
  • 不同的索引配置,会产生不同的查询和分析结果,请根据您的需求,合理创建索引。全文索引和字段索引互不影响。
  • 索引配置修改后,对新写入的日志数据生效,历史日志数据不会生效。
  • 在字段索引功能上线前,SQL分析支持的字段来自于云端结构化解析;在字段索引功能上线后,只要用户配置了字段索引,SQL分析支持的字段将来自于字段索引,因此修改字段索引可能对现有的可视化图表、仪表盘、SQL告警、定时SQL、Grafana接入中的查询结果产生影响,请谨慎操作!
  • 字段索引配置为JSON数据类型时,在“日志搜索”页面不支持对JSON子字段使用快速分析、跳转图表,不支持可视化;在“搜索分析”页面下支持JSON子字段使用快速分析和SQL可视化功能。
  • 字段索引配置为JSON数据类型时,对JSON父字段查询时支持对命中结果高亮,对JSON子字段查询时不支持对命中结果高亮。

配置全文索引

  1. 登录云日志服务控制台,进入“日志管理”页面。
  2. 单击目标日志组和日志流名称。
  3. 在日志流详情页面,单击右上角,在弹出页面中,选择“索引配置”,进入索引配置页面。
  4. 在索引配置页面中,默认开启“全文索引”按钮,参考表3 自定义全文索引配置参数配置各参数信息。

    • 在索引配置页面选择自动配置时,默认获取最近15分钟的原始日志和内置字段的交集,LTS自动将原始日志和内置字段的交集、当前结构化字段、tag字段一起组成字段索引下方的表格数据。
    • 若15分钟内没有原始日志,则获取hostIP、hostName、pathFile、结构化字段、tag字段结合共同组成字段索引下方的表格数据。
    • ECS接入选择结构化配置时,进入索引配置页面,则会自动加上如下字段:category、 hostName、hostId、 hostIP、 hostIPv6、 pathFile,添加字段时,若某个字段已存在于索引配置,则不会重复添加。
    • CCE接入选择结构化配置时,进入索引配置页面,则会自动加上如下字段:category、 clusterId、 clusterName、 nameSpace、 podName、 containerName、 appName、 hostName、 hostId、 hostIP、 hostIPv6、 pathFile,添加字段时,若某个字段已存在于索引配置,则不会重复添加。

    表2 自定义全文索引配置参数

    参数

    说明

    全文索引

    打开全文索引开关,表示创建全文索引。

    大小写敏感

    查询时是否区分英文字母的大小写。

    • 打开大小写敏感开关,则查询时区分大小写。例如示例日志含有Know,那么您只能使用Know才能查询到该日志。
    • 关闭大小写敏感开关,则查询时不区分大小写。例如示例日志含有Know,那么您使用关键字KNOWknow都能查到该日志。

    包含中文

    查询时是否区分中英文。

    • 打开包含中文开关后,如果日志中包含中文,默认按照一元分词法拆分中文内容,按照分词符的设置拆分英文内容。
      说明:
      • 一元分词是指将中文字符串拆分为单个独立的中文字。
      • 使用一元分词符的优点是对海量日志分词效率高,其他中文分词方法对写入速度影响大。
      • 打开包含中文功能,会对中文使用一元分词(每个汉字单独分词),如果需要更精确的搜索结果,请用短语搜索,语法为:#"待搜索的短语"。
    • 关闭包含中文开关后,按照分词符的设置拆分所有内容。

    例如示例日志内容为:

    error,400,I Know 今天是星期一

    • 关闭包含中文开关后,按照分词符的设置拆分英文内容,日志会被拆分为error400IKnow今天是星期一,您可以通过error今天是星期一查找该日志。
    • 打开包含中文开关后,日志服务后台分词器将日志拆分为error400IKnow,您通过error今天等词都可以查找到该日志。

    分词符

    根据指定分词符,将日志内容拆分成多个词。当默认设置不能满足您的需求时,您可以自定义设置分词符。所有的ASCII码包括中文都可被定义为分词符。

    如果设置分词符为空,则字段值将被当成一个整体,您只能通过完整字符串或模糊查询查找对应的日志。

    单击“预览”,查看分词预览效果。

    例如示例日志内容为:

    error,400,I Know 今天是星期一

    • 如果不设置任何分词符,整条日志被作为一个词error,400,I Know 今天是星期一,您只能通过完整字符串error,400,I Know 今天是星期一或模糊查询error,400,I K*查找该日志。
    • 如果设置分词符为逗号(,),则原始日志被拆分为error400I Know 今天是星期一3个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如error400I Kn*今天是*
    • 如果设置分词符为逗号(,)和空格,则原始日志被拆分为error400IKnow今天是星期一5个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如Know今天是*

    特殊分词符

    单击“添加特殊分词符”,参考ASCII码对照表输入ASCII值。

  5. 完成后,单击“确定”。

配置字段索引

创建字段索引时,最多支持添加500个字段。其中JSON类型字段,最多支持添加100个子字段。

字段索引的自定义分词符和特殊分词符仅支持白名单用户提交工单申请使用。详细操作请参考提交工单

  1. 配置全文索引后,在索引配置页面的日志分析下方,单击开启可视化后,配置的字段索引支持SQL可视化分析,否则无法查询到ICAgent结构化的可视化数据。
  2. 在索引配置页面的字段索引下方,单击“添加字段”,配置字段索引。具体的参数配置请参考表5 自定义字段索引配置参数

    • 字段索引的参数配置仅对该字段生效。
    • 当添加的字段在日志内容中不存在时,则配置的该索引字段无效。
    • 更多内置字段请参考内置保留字段
    • 自动配置字段索引:单击“自动配置”,云日志服务会根据采集时预览数据中的第一条内容或常见内置保留字段(例如hostIP、hostName、pathFile)自动生成字段索引,您可以根据自己的需要增加或者删除字段。
    • 批量配置字段索引:批量勾选字段,单击“批量配置”,进行批量配置字段索引。
    表3 自定义字段索引配置参数

    参数

    说明

    字段名称

    日志字段名称,例如示例日志中的level。

    字段名称只能包括字母、数字或下划线(_),且只能以字母或下划线(_)开头,字段名称中不能含有双下划线。

    说明:
    • 双下划线(__)在LTS不对用户呈现的内置保留字段中使用,用户自定义日志字段名中不能使用双下划线__,否则无法配置字段索引名称。
    • 日志服务默认会对部分内置保留字段开启字段索引,请参见内置保留字段
    • 若是内置字段,在字段名称后会显示“内置”字眼,方便用户识别。

    执行操作

    显示字段的添加状态:新增、不修改、修改、删除。索引字段有变动后,单击“修改对比”,即可查看原配置内容与修改后配置内容的差异。

    • 显示新增的字段不支持修改执行操作。
    • 修改类型、大小写敏感、自定义分词符、特殊分词符、包含中文、快速分析时,会与原索引配置中的字段进行对比,若任意一项不同,则执行操作变为“修改”。
    • 索引配置单击确定后,不会保存执行操作为“删除”的字段。

    类型

    • 日志字段值(Value)的数据类型,可选值为string、long、float、json。
      说明:

      字段json类型只对ICAgent结构化解析生效,对云端结构化解析不生效。

    • long类型和float类型不支持设置大小写敏感、包含中文和分词符。

    大小写敏感

    查询时是否区分英文字母的大小写。

    • 打开大小写敏感开关,则查询时区分大小写。例如示例日志message字段中含有Know,那么您只能使用message:Know才能查询到该日志。
    • 关闭大小写敏感开关,则查询时不区分大小写。例如示例日志message字段中含有Know,那么您使用关键字message:KNOWmessage:know都能查到该日志。

    自定义分词符

    根据指定分词符,将日志内容拆分成多个词。当默认设置不能满足您的需求时,您可以自定义设置分词符。所有的ASCII码包括中文都可被定义为分词符。

    如果设置分词符为空,则字段值将被当成一个整体,您只能通过完整字符串或模糊查询查找对应的日志。

    例如示例日志message字段内容为:I Know 今天是星期一

    • 如果不设置任何分词符,整条日志被作为一个词I Know 今天是星期一,您只能通过完整字符串message:I Know 今天是星期一或模糊查询message:I Know 今天是*查找该日志
    • 如果设置分词符为空格,则原始日志被拆分为IKnow今天是星期一3个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如message:Knowmessage:今天是星期一

    特殊分词符

    单击“添加特殊分词符”,参考ASCII码对照表输入ASCII值。

    包含中文

    查询时是否区分中英文。

    • 打开包含中文开关后,如果日志中包含中文,默认按照一元分词法拆分中文内容,按照分词符的设置拆分英文内容。
      说明:
      • 一元分词是指将中文字符串拆分为单个独立的中文字。
      • 使用一元分词符的优点是对海量日志分词效率高,其他中文分词方法对写入速度影响大。
      • 打开包含中文功能,会对中文使用一元分词(每个汉字单独分词),如果需要更精确的搜索结果,请用短语搜索,语法为:#"待搜索的短语"。
    • 关闭包含中文开关后,按照分词符的设置拆分所有内容。

    例如示例日志message字段内容为:I Know 今天是星期一

    • 关闭包含中文开关后,按照分词符的设置拆分英文内容,日志会被拆分为IKnow今天是星期一,您可以通过message:Knowmessage:今天是星期一查找该日志。
    • 打开包含中文开关后,日志服务后台分词器将日志拆分为IKnow,您通过message:Knowmessage:今天等词都可以查找到该日志。

    快速分析

    默认为开启状态,开启后,可以对字段值做采样统计,请参见11.6.4-快速分析

    说明:
    • 快速分析的原理是对搜索命中的日志采样10万条进行数据统计,不是全量统计。
    • 快速分析的字段长度最大为2000字节。
    • 快速分析字段展示前100条数据。

    操作

    单击,删除添加的自定义字段。

    图1 批量配置

  3. 完成后,单击“确定”。

内置保留字段

在采集日志时,云日志服务会将采集时间、日志类型、主机IP等信息以Key-Value对的形式添加到日志中,这些字段是云日志服务的内置字段。

  • 使用API写入日志数据或添加ICAgent配置时,请不要将字段名称设置为内置保留字段,否则可能会造成字段名称重复、查询不精确等问题。
  • 日志服务为日志数据增加的内置保留字段当前免费,后续会按照按量付费方式正常收费(为其开启索引时也会产生少量索引流量及存储费用)。更多信息请参见价格计算器
  • 用户自定义日志字段名称中不能使用双下划线__,否则无法配置索引。
表4 内置保留字段说明

内置保留字段

数据格式

索引与统计设置

说明

collectTime

整型,Unix时间戳(毫秒)

索引设置:开启索引后,日志服务默认为collectTime创建字段索引,索引数据类型为long类型。

查询时输入collectTime : xxx。

采集时间,指日志被采集器ICAgent采集时的时间。

例如示例中的"collectTime":"1681896081334",转换成标准时间是2023-04-19 17:21:21

__time__

整型,Unix时间戳(毫秒)

索引设置:开启索引后,日志服务默认为time创建字段索引,索引数据类型为long类型。该字段不支持查询。

日志时间,指的是日志在控制台页面展示的日志时间。

例如示例中的"__time__":"1681896081334",转换成标准时间是2023-04-19 17:21:21

日志时间默认使用采集时间,也支持自定义日志时间。

lineNum

整型

索引设置:开启索引后,日志服务默认为lineNum创建字段索引,索引数据类型为long类型。

行号(偏移量),用来排序日志。

非高精度日志会根据collectTime生成,默认是collectTime * 1000000 + 1,高精度日志就是用户上报的纳秒值。

例如示例中的"lineNum":"1681896081333991900"。

category

字符串

索引设置:开启索引后,日志服务默认为category创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入category: xxx。

日志类型,表示该日志的来源。

例如ICAgent采集的日志该字段为LTS,某云服务例如DCS上报的日志该字段为DCS。

clusterName

字符串

索引设置:开启索引后,日志服务默认为clusterName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入clusterName: xxx。

集群名称,k8s场景下集群名称。

例如示例中的"clusterName":"epstest"。

clusterId

字符串

索引设置:开启索引后,日志服务默认为clusterId创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入clusterId: xxx。

集群ID,k8s场景下集群ID。例如示例中的"clusterId":"c7f3f4a5-xxxx-11ed-a4ec-0255ac100b07"。

nameSpace

字符串

索引设置:开启索引后,日志服务默认为nameSpace创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入nameSpace: xxx。

命名空间,k8s场景下命名空间。

例如示例中的"nameSpace":"monitoring"。

appName

字符串

索引设置:开启索引后,日志服务默认为appName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入appName: xxx。

组件名称,k8s场景下工作负载的名称。

例如示例中的"appName":"alertmanager-alertmanager"。

serviceID

字符串

索引设置:开启索引后,日志服务默认为serviceID创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入serviceID: xxx。

工作负载ID,k8s场景下工作负载ID。

例如示例中的"serviceID":"cf5b453xxxad61d4c483b50da3fad5ad"。

podName

字符串

索引设置:开启索引后,日志服务默认为podName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入podName: xxx。

POD名称,k8s场景下POD名称。

例如示例中的"podName":"alertmanager-alertmanager-0"。

podIp

字符串

索引设置:开启索引后,日志服务默认为podIp创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入podIp: xxx。

pod的ip,k8s场景下pod的IP地址。

例如示例中的"podIp":"10.0.0.145"。

containerName

字符串

索引设置:开启索引后,日志服务默认为containerName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入containerName: xxx。

容器名称,k8s场景下容器名称。

例如示例中的"containerName":"config-reloader"。

hostName

字符串

索引设置:开启索引后,日志服务默认为hostName创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostName: xxx。

主机名称,ICAgent所在主机的名称。

例如示例中的"hostName":"epstest-xx518"。

hostId

字符串

索引设置:开启索引后,日志服务默认为hostId创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostId: xxx。

主机ID,ICAgent所在主机的id,该id由ICAgent生成。例如示例中的"hostId":"318c02fe-xxxx-4c91-b5bb-6923513b6c34"。

hostIP

字符串

索引设置:开启索引后,日志服务默认为hostIP创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostIP: xxx。

主机IP,日志采集器所在主机的ip(适用于ipv4场景)

例如示例中的"hostIP":"192.168.0.31"。

hostIPv6

字符串

索引设置:开启索引后,日志服务默认为hostIPv6创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入hostIPv6: xxx。

主机IP,日志采集器所在主机的ip(适用于ipv6场景)

例如示例中的"hostIPv6":""。

pathFile

字符串

索引设置:开启索引后,日志服务默认为pathFile创建字段索引,索引数据类型为string类型,分词字符为空。查询时输入pathFile: xxx。

文件路径,采集的日志文件的路径。

例如示例中的"pathFile":"stdout.log"。

content

字符串

索引设置:开启全文索引后,会使用全文索引定义的分词符对content字段的value进行分词;不支持将content字段配置到字段索引中。

日志原文,

例如示例中的"content":"level=error ts=2023-04-19T09:21:21.333895559Z"

__receive_time__

整型,Unix时间戳(毫秒)

索引设置:开启索引后,日志服务默认为__receive_time__创建字段索引,索引数据类型为long类型。

上报日志的服务端时间,相当于LTS采集端接收到日志的时间。

__client_time__

整型,Unix时间戳(毫秒)

索引设置:开启索引后,日志服务默认为__client_time__创建字段索引,索引数据类型为long类型。

端侧日志的客户端上报时间。

_content_parse_fail_

字符串

索引设置:开启索引后,日志服务默认为_content_parse_fail_创建字段索引,索引数据类型为string类型,分词字符为默认分词符。查询时输入_content_parse_fail_: xxx。

上报日志解析失败的日志内容。

__time

整型,Unix时间戳(毫秒)

不支持将__time字段配置到字段索引中。

不涉及。

logContent

字符串

不支持将logContent字段配置到字段索引中。

不涉及。

logContentSize

整型

不支持将logContentSize字段配置到字段索引中。

不涉及。

logIndexSize

整型

不支持将logIndexSize字段配置到字段索引中。

不涉及。

groupName

字符串

不支持将groupName字段配置到字段索引中。

不涉及。

logStream

字符串

不支持将logStream字段配置到字段索引中。

不涉及。

ASCII码对照表

表5 ASCII码对照表

ASCII值

控制字符

ASCII值

控制字符

ASCII值

控制字符

ASCII值

控制字符

0

NUL(空字符)

32

空格

64

@

96

`

1

SOH(标题开始)

33

!

65

A

97

a

2

STX(正文开始)

34

"

66

B

98

b

3

ETX(正文结束)

35

#

67

C

99

c

4

EOT(传输结束)

36

$

68

D

100

d

5

ENQ(询问字符)

37

%

69

E

101

e

6

ACK(确认回应)

38

&

70

F

102

f

7

BEL(响铃)

39

'

71

G

103

g

8

BS(退格)

40

(

72

H

104

h

9

HT(水平定位符号,制表符)

41

)

73

I

105

i

10

LF(换行)

42

*

74

J

106

j

11

VT(垂直定位符号)

43

+

75

K

107

k

12

FF(换页键)

44

,

76

L

108

l

13

CR(归位键)

45

-

77

M

109

m

14

SO(取消变换)

46

.

78

N

110

n

15

SI(启用变换)

47

/

79

O

111

o

16

DLE(跳出数据通讯)

48

0

80

P

112

p

17

DC1(设备控制1)

49

1

81

Q

113

q

18

DC2(设备控制2)

50

2

82

R

114

r

19

DC3(设备控制3)

51

3

83

S

115

s

20

DC4(设备控制4)

52

4

84

T

116

t

21

NAK(确认失败回应)

53

5

85

U

117

u

22

SYN(同步用暂停)

54

6

86

V

118

v

23

ETB(区块传输结束)

55

7

87

W

119

w

24

CAN(取消)

56

8

88

X

120

x

25

EM(连接介质中断)

57

9

89

Y

121

y

26

SUB(替换)

58

:

90

Z

122

z

27

ESC(跳出)

59

;

91

[

123

{

28

FS(文件分割符)

60

<

92

\

124

|

29

GS(组群分隔符)

61

=

93

]

125

}

30

RS(记录分隔符)

62

>

94

^

126

~

31

US(单元分隔符)

63

?

95

_

127

DEL(删除)