索引是一种存储结构,用于对日志数据进行查询。通过配置索引后,可对日志进行查询和分析操作。不同的索引配置,则会产生不同的查询和分析结果,请根据您的需要,合理配置索引。
日志示例
以下是一条典型日志,content字段值是日志原文,使用分隔符逗号将原始日志解析成3个字段level、status、message;
示例日志中的hostName、hostIP、pathFile是常见的内置保留字段,详细内置字段请参考内置保留字段。
{
"hostName":"epstest-xx518",
"hostIP":"192.168.0.31",
"pathFile":"stdout.log",
"content":"error,400,I Know XX",
"level":"error",
"status":400,
"message":"I Know XX"
}
索引类型
云日志服务的索引类型如下:
表 1 索引类型表
索引类型 | 说明 |
---|---|
全文索引 | 开启全文索引后,日志服务根据您设置的分词符将整条日志所有字段值拆分成多个词并构建索引。用户上传的自定义标签(label)字段,不包含全文索引中,如果您需要搜索自定义标签字段,请添加对应的字段索引。LTS内置保留字段,不包含全文索引中,您需要通过字段索引Key:Value的方式进行搜索,请参考内置保留字段。 |
字段索引 | 配置字段索引后,您可以指定字段名称和字段值(Key:Value)进行查询,缩小查询范围。日志服务默认为部分内置保留字段创建字段索引,请参考内置保留字段。如果您的某个字段单独配置了字段索引,那么该字段值的分词符以字段索引配置为准。结构化配置中的的快速分析列已被移除,如果您要使用快速分析功能,则必须配置字段索引且开启对应字段的快速分析按钮。关于日志示例有两种情况:在日志示例中,配置了level和status两个字段索引,其中level是string类型,字段值是error,单独配置了分词符,status是long类型,不需要配置分词符;您可以使用level : error的方式精确搜索level字段值为error的所有日志。在日志示例中,云日志服务LTS会默认为hostName、hostIP、pathFile这些内置保留字段创建字段索引。 |
注意事项
- 全文索引属性和字段索引属性必须至少启用一种。
- 索引配置(新增、编辑、删除字段,修改配置项等操作)只对新写入的日志生效,历史日志不会生效。当前不支持对历史日志重建索引。
- 关闭索引后,历史索引的存储空间将在当前日志流的数据保存时间到期后,自动被清除。
- 日志服务默认已为部分内置保留字段创建字段索引,请参见内置保留字段。
- 不同的索引配置,会产生不同的查询和分析结果,请根据您的需求,合理创建索引。全文索引和字段索引互不影响。
- 索引配置修改后,对新写入的日志数据生效,历史日志数据不会生效。
配置全文索引
-
登录云服务日志控制台,单击“日志管理”。
-
在日志组列表中,单击日志组名称左侧的,选择日志流,进入日志流管理界面。
-
在日志流详情页面,单击右上角,进入索引配置页面。
-
在索引配置页面中,默认开启“全文索引”按钮。
说明在索引配置页面选择自动配置时,默认获取最近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配置参数信息。
表 2 自定义全文索引配置参数
参数 | 说明 |
---|---|
全文索引 | 打开全文索引开关,表示创建全文索引。 |
大小写敏感 | 查询时是否区分英文字母的大小写。打开大小写敏感开关,则查询时区分大小写。例如示例日志含有Know,那么您只能使用Know才能查询到该日志。关闭大小写敏感开关,则查询时不区分大小写。例如示例日志含有Know,那么您使用关键字KNOW和know都能查到该日志。 |
包含中文 | 查询时是否区分中英文。打开包含中文开关后,如果日志中包含中文,默认按照一元分词法拆分中文内容,按照分词符的设置拆分英文内容。一元分词是指将中文字符串拆分为一个个独立的中文字。使用一元分词符的优点是对海量日志分词效率高,其他中文分词方法对写入速度影响大。关闭包含中文开关后,按照分词符的设置拆分所有内容。例如示例日志内容为:error,400,I Know 今天是星期一。关闭包含中文开关后,按照分词符的设置拆分英文内容,日志会被拆分为error、400、I、Know、今天是星期一,您可以通过error或今天是星期一查找该日志。打开包含中文开关后,日志服务后台分词器将日志拆分为error、400、I、Know、今、天、是、星、期、一,您通过error或今天等词都可以查找到该日志。 |
分词符 | 根据指定分词符,将日志内容拆分成多个词。日志服务的默认分词符为, '";=()[]{}@&<>/:\n\t\r。当默认设置不能满足您的需求时,您可以自定义设置分词符。所有的ASCII码包括中文都可被定义为分词符。如果设置分词符为空,则字段值将被当成一个整体,您只能通过完整字符串或模糊查询查找对应的日志。例如示例日志内容为:error,400,I Know 今天是星期一。如果不设置任何分词符,整条日志被作为一个词error,400,I Know 今天是星期一,您只能通过完整字符串error,400,I Know 今天是星期一或模糊查询error,400,I K查找该日志。如果设置分词符为逗号(,),则原始日志被拆分为error*、400、I Know 今天是星期一3个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如error、400、Kn*、今天是*。如果设置分词符为逗号(,)和空格,则原始日志被拆分为error、400、I、Know、今天是星期一5个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如Know、今天是*。 |
特殊分词符 | 单击“添加特殊分词符”,参考ASCII码对照表输入ASCII值。 |
- 完成后,单击确定。
配置字段索引
创建字段索引时,最多支持添加500个字段。其中JSON类型字段,最多支持添加100个子字段。
说明字段索引的自定义分词符和特殊分词符仅支持白名单用户提交工单申请使用。详细操作请参考。
-
在索引配置页面的字段索引下方,单击“添加字段”,参考表3设置字段信息。
-
或者勾选字段,单击批量配置,在批量配置页面设置参数。
-
参考表3配置字段索引。
说明字段索引的参数配置仅对该字段生效。
当添加的字段在日志内容中不存在时,则配置的该索引字段无效。
表 3 自定义字段索引配置参数
参数 | 说明 |
---|---|
字段名称 | 日志字段名称,例如示例日志中的level。字段名称只能包括字母、数字或下划线(),且只能以字母或下划线()开头,字段名称中不能含有双下划线。 双下划线()在LTS不对用户呈现的内置保留字段中使用,用户自定义日志字段名中不能使用双下划线,否则无法配置字段索引名称。 日志服务默认会对部分内置保留字段开启字段索引,请参见内置保留字段。 |
类型 | 日志字段值(Value)的数据类型,可选值为string、long、float。long类型和float类型不支持设置大小写敏感、包含中文和分词符。 |
大小写敏感 | 查询时是否区分英文字母的大小写。打开大小写敏感开关,则查询时区分大小写。 例如示例日志message字段中含有Know,那么您只能使用message:Know才能查询到该日志。 关闭大小写敏感开关,则查询时不区分大小写。例如示例日志message字段中含有Know,那么您使用关键字message:KNOW和message:know都能查到该日志。 |
自定义分词符 | 根据指定分词符,将日志内容拆分成多个词。日志服务的默认分词符为, '";=()[]{}@&<>/:\n\t\r。 当默认设置不能满足您的需求时,您可以自定义设置分词符。所有的ASCII码包括中文都可被定义为分词符。 如果设置分词符为空,则字段值将被当成一个整体,您只能通过完整字符串或模糊查询查找对应的日志。 例如示例日志message字段内容为:I Know 今天是星期一。 如果不设置任何分词符,整条日志被作为一个词I Know 今天是星期一,您只能通过完整字符串message:I Know 今天是星期一或模糊查询**message:I Know 今天是*查找该日志**。 如果设置分词符为空格,则原始日志被拆分为I、Know、今天是星期一3个词,您通过任意一个词或词的模糊查询都可以找到该日志,例如message:Know或message:今天是星期一。 |
特殊分词符 | 单击“添加特殊分词符”,参考ASCII码对照表输入ASCII值。 |
包含中文 | 查询时是否区分中英文。打开包含中文开关后,如果日志中包含中文,默认按照一元分词法拆分中文内容,按照分词符的设置拆分英文内容。 一元分词是指将中文字符串拆分为一个个独立的中文字。使用一元分词符的优点是对海量日志分词效率高,其他中文分词方法对写入速度影响大。 关闭包含中文开关后,按照分词符的设置拆分所有内容。例如示例日志message字段内容为:I Know 今天是星期一。 关闭包含中文开关后,按照分词符的设置拆分英文内容,日志会被拆分为I、Know、今天是星期一,您可以通过message:Know或message:今天是星期一查找该日志。 打开包含中文开关后,日志服务后台分词器将日志拆分为I、Know、今、天、是、星、期、一,您通过message:Know或message:今天等词都可以查找到该日志。 |
快速分析 | 默认为开启状态,开启后,可以对字段值做采样统计,请参见11.6.4-快速分析。 快速分析的原理是对搜索命中的日志采样10万条进行数据统计,不是全量统计。快速分析的字段长度最大为2000字节。快速分析字段展示前100条数据。 |
操作 | 单击,删除添加的自定义字段。 |
- 完成后,单击“确定”。
自动配置字段索引
在创建字段索引时,您可以单击自动配置,日志服务会自动添加一些字段索引,您可以根据自己的需要增加或者删除字段:
- 日志服务会根据采集时预览数据中的第一条内容,自动生成字段索引。
- 日志服务会选取几个最常见的内置保留字段添加到字段索引中(例如hostIP、hostName、pathFile)。
ASCII码对照表
表 4 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(删除) |