JSON &千伏峰值

什么是JSON和KVP?

JSON结构化日志由软件组件定期生成,并被推广为日志记录的最佳实践。JSON格式的日志很容易被各种软件组件生成和使用,并且是人类可读的。如果您还没有准备好迁移到JSON,那么在日志中使用Key-Value对也有类似的好处。两种格式将允许您利用我们的高级搜索和分析能力。

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

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

可以很容易地编写搜索来返回重要的日志事件

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

         
1
在哪里(repsonse_time > 25)

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

         
1
在哪里(repsonse_time > 25或containerID = 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”

关键

  • 允许的字符列表是任何字母数字加" _ " "。” “$” “@”.

非字母数字字符

当您使用非字母数字字符时,我们建议将数据用引号括起来。例如,“关键”=“VA卢美元”

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

分隔符

  • 是" = "或":"
  • 可以和/或后跟一个空格吗
  • 为了出现在键或值中,分隔符必须在一对引号之间或转义

价值

  • 由任意字母数字加" _ " "组成。” “$” “@”.

非字母数字字符

当您使用非字母数字字符时,我们建议将数据用引号括起来。例如,“关键”=“VA卢美元”

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

单位

  • 这是字母的文本或“%”仅是最后一个数字一个数字值到另一个空间或第一个非字母的字符或2字符(无论发生第一次)——这两个字符将不考虑作为查询的一部分价值,即100 ms被视为100年。

字符转义

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

笔记

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