JSON &千伏峰值

什么是JSON和KVP?

JSON结构化日志通常由软件组件生成,并作为日志记录最佳实践加以推广。JSON格式的日志很容易被各种软件组件生成和使用,并且是人类可读的。如果您还没有准备好迁移到JSON,则在日志中使用键值对可提供类似的好处。这两种格式将允许您利用我们的高级搜索和分析功能。

InsightOps将自动解析Key Value Pair (KVP)或JSON格式的日志事件,方便高级分析使用。KVP和JSON解析文档详细说明了系统将解析的特定格式。如果您的日志不是标准的KVP或JSON格式,您可以利用正则表达式字段提取来访问相同的高级分析。

要理解哪种KVP和JSON格式,请查看下面的日志事件:键值对

可以轻松编写搜索以返回重要的日志事件

搜索响应时间超过25的所有日志事件以返回前两个日志事件,例如:

         
1
其中(重复次数>25次)

然后可以添加逻辑操作符OR来包含来自containerID 14的事件,以返回所有三个日志事件:

         
1
其中(重复时间>25或集装箱ID=14)
基本的

如何使用自动解析

InsightOps将自动识别JSON和KVP日志事件中的字段并为其编制索引。按键会自动高亮显示并可单击。单击某个字段将填充搜索栏,以便在数据中快速搜索(键高亮显示被暂时禁用).将自动解析日志格式的规范在本文档的JSON和KVP规范部分有详细说明。[JSON和KVP事件](/ insights /images/Screen Shot 2017-06-02 at 16.19.21.png)

JSON解析规范

系统会自动解析JSON格式的日志事件格式符合JSON规范(IETF RFC 4627). 要利用修饰选项,条目必须是单个对象({…})或JSON对象数组。嵌入在非结构化数据中的JSON对象仍然可以识别其密钥,但您将无法扩展JSON层次结构。

千伏峰值解析规范

InsightOps能够根据以下规范自动解析各种KVP格式:

  • 键值对由一个称为key的标识符、后跟一个SEPARATOR和一个value组成,并具有一个称为KVDELIMITER的前缀和后缀

Kvdelimiter键分隔符值

术语的定义

KVDELIMITER

  • 可以在空间(" "),逗号(","),标签“\ t”或“\ r”或“\ n”或“\ r \ n”

关键

  • 允许的字符列表是任何字母数字加上“389;”。$@。

非字母数字字符

使用非字母数字字符时,建议将数据括在引号中。例如“键”=“VA$LUE”

  • 必须从允许的字符列表中至少有一个非数字字符
  • 键的“或”将导致引号之间的任何内容被解释为key,例如“key[1]”将给出key[1]的key
  • 可以是0或1个空格(Ascii 0x20或" ")

分离器

  • 是“=”或“:”
  • 可以前面加空格和/或后面加空格
  • 为了出现在键或值中,分隔符必须在一对引号之间或转义

价值

  • 由任何字母数字加上“u.”“$”@”组成。

非字母数字字符

使用非字母数字字符时,建议将数据括在引号中。例如“键”=“VA$LUE”

  • value的任何一面都将导致引号之间的任何内容被解释为value,例如key1= " value description "将给出key1的KEY和value的" value description "
  • 解析URL或包含斜杠(/)的其他项时,需要在值周围加引号
  • 值中的SEPARATOR将被处理,这样该值(以及它前面可能的键)将不会被视为键值对,例如,时间戳不会被分割

单元

  • 这是字母文本或“%”,紧跟在仅数值的最后一个数字之后,直到下一个空格或第一个非字母字符,或最多2个字符(以先出现的为准)-这2个字符将不被视为查询值的一部分,即100ms被视为100。

字符转义

  • 这用于允许KEY或VALUE包含其他情况下不允许的字符,例如,除非转义,否则KEY或VALUE中不允许有空格、引号、逗号或方括号。
  • 通过在要转义的字符前面添加反斜杠(\),或将整个键或值包含在引号(成对的“或成对的”)中,键和值都支持这一点。根据键和值的定义,\不是一个允许的字符,它只支持转义,例如,可以通过在name=“David Tracey”中使用引号或在name=David\Tracey中转义来包含空格。关于成对的引号“或成对的”,这意味着“没有完成以开始的转义序列”,并且一种类型的引号可能出现在另一种类型的引号中,例如somekey=“David's one”将在值中包含。
  • 请注意,\仅在确定名称或值的过程中被视为转义字符

笔记

  • “Key=value”“Key: value”“Key=value”“Key: value”为有效的键值对
  • 键或值中不允许使用“-”、“+”(除非转义),以避免与查询语言中的用法混淆
  • 这个定义意味着一个键值对必须同时包含一个键和一个值,“.”和“u”意味着“cpu.time”和“disk_size”都是有效的键或值
  • UTF-8编码是受支持的编码