智能日志管理平台

  • 概念&术语

    最近更新时间:2018-07-26 18:57:16

    日志仓库(repo)

    日志仓库集中存储了我们从各个地方导入的日志,支持多种数据类型以及多种索引方式,支持基于文本的搜索、过滤和分析。

    简单来说,日志仓库提供如下功能:

    • 日志写入

    • 存储日志

    • 建立索引和字段分词

    实时仓库

    实时仓库是实时数据进入的源头,无论是使用 API、传文件,还是使用专业的数据收集工具 logkit Pro 上传的实时数据,都会首先进入到实时仓库。实时仓库主要用来对数据进行实时输出。

    注意:实时仓库中的每一条数据都将被保存 2 天时间,超过时间后自动删除,一般实时仓库的数据都会选择一个下游服务进行导出。

    实时仓库的功能如下:

    • 实时日志写入

    • 提供实时计算的接口

    • 绑定解析规则对实时日志进行字段提取

    工作流(pipeline)

    工作流(Pipeline)是一个数据接收、计算、导出工具。数据可以在工作流进行复杂的计算再投递到日志分析平台进行分析。目前,工作流支持的数据源包括消息队列(通过 logkit Pro、文件上传或者 API 采集的数据)、七牛对象存储日志、 CDN 日志。

    工作流的计算任务分为流式(实时)计算和批量(离线)计算。流式计算的数据源类型只能是消息队列,批量计算的数据源只能是对象存储或者 CDN 日志。

    实时工作流:只包含实时计算的工作流。

    离线工作流:只包含离线计算的工作流。

    举例来说,通过 logkit Pro 采集数据会自动创建一个日志仓库和实时仓库以及一个工作流,用户可以直接通过实时仓库查看实时数据,也可以在日志仓库对日志进行搜索分析、可视化分析,以及在工作流使用创建好的数据源节点对采集的数据进行计算。

    字段(fields)

    在日志分析服务中,数据字段支持的类型有以下几种:

    类型 解释 数据样例
    long 64位整数 998
    float 单精度64位浮点 10.24
    date 日期类型,默认格式为RFC3339,可自定义格式 2017-01-01T15:00:25Z07:00
    string 字符串类型,可设置分词器和主键 "qiniu.com"
    boolean 布尔类型,值为true或false false
    object json格式 -
    ip ip地址 127.0.0.1
    geo_point 经纬度坐标 [ -71.34, 41.12 ]

    索引方式

    日志分析服务最大的优势在于可以对字符串类型的数据进行倒排索引,可以使用搜索引擎的技术对于日志进行索引,并且支持各种灵活的搜索方式。其中索引的方式包括两种:

    分字段索引

    分字段索引可以允许用户挑选字符串字段,选择灵活的分词和索引方式。可以参考文末的 Lucene 语法(如 log:Error 代表在 log 字段中搜索 Error 单词)
    对数据进行搜索、过滤和分析。使用分字段索引的时候可以指定仅仅对某些字段进行分词,降低存储成本,提高写入和检索效率。

    全文索引

    全文索引表示指定固定的分词索引方式,为所有的字段创建跨字段的索引。

    使用全文索引使您在检索的时候直接输入文本即可搜索,如直接在搜索框中输入:

    "writepoints"
    

    当然,也可以像分字段索引一样指定查询字段,进行检索,如:

    operation:"writepoints"
    

    如果您的字段特别多,或者字段是非常复杂的嵌套结构,此时我们非常推荐您选择全文索引,会使搜索更加便利和灵活。
    不过要注意:全文索引会增加存储成本,而且无法在存储时挑选部分字段索引,也无法单独为某些字段设置分词器。

    分词方式(analyzer)

    您可以根据自己的搜索习惯和需求,对日志中的 field 设置分词方式,目前日志分析服务提供以下几种分词方式:

    不分词 (keyword)

    不分词的含义其实是“keyword 分词”,意思就是,你必须完整的输入某一个 field 的内容,才能被搜索到,我们举个例子来说明:

    假设目前有1个 field 为 A,它的内容是 "abcdefg"
    假设我们选择了不分词方式,那么如果想搜索到这一条内容,需要在条件框输入:
    A:"abcdefg"
    这样才能搜索到,如果我们按照以下几种方式,则无法搜索到:
    A:"a"
    A:"abc"
    A:"edf"
    

    注意:当我们在配置报表和仪表盘的时候,只能使用不分词的字段做分组字段和计算指标。如果字段选择了其他分词方式,将只能进行搜索查询,不能进行分析计算。

    不分词不索引 (no)

    不分词不索引的含义是指:在任何情况下,输入任何条件,都不会搜索到该 field 的内容,但在搜索其他 field 时,如果是整条搜索,那么这个 field 的内容也会显示出来。

    假设现在有 2 个 field,分别为:
    A:"abcdefg",B:"12345678"
    其中,B 设置了不分词不索引,
    无论我们在条件框输入有关B的任何条件,都不会搜索到
    

    标准分词 (standard)

    以 unicode 字符作为结束的标识,过滤掉大部分标点符号,将所有字母变为小写,搜索时只要符合搜索条件的词语出现,就会被搜索到。

    假设现在有1个 field 为 A,它的内容是 "linux-chrome,what's your&name?"
    那么使用标准分词,将会被分为:"linux,chrome,what's,your,name"
    我们的搜索条件包含这些词时,会被搜索到
    

    注意:标准分词只适用于英文的文本字段。

    空白分词 (whitespace)

    以单词头部和尾部的空格作为分割条件,输入两个空格内的完整内容,即可搜索到相应内容。

    例:
    A="张三 李四 王五"
    
    需要输入以下条件,均可搜到内容:
    A:"张三"
    A:"李四"
    A:"王五"
    
    如果输入以下条件,则无法搜索到内容:
    A:"张"
    A:"张三 李四"
    

    path分词 (path)

    以 linux 系统路径来进行分词,当搜索时,可以输入完整的路径或者路径前缀来进行匹配,如果输入的条件不是一个正确的前缀,那么将无法正确呈现日志内容。

    例:
    filed A="/usr/local/action.log"
    
    那么需要输入以下条件,均可搜到内容:
    A:"/usr"
    A:"/usr/local"
    A:"/usr/local/action.log"
    
    如果输入以下条件,则无法搜索到内容:
    A:"/u"
    A:"usr"
    A:"/action.log"
    

    中文分词 (index_ansj)

    日志分析平台支持使用中文分词器对文本按照中文的语言习惯进行分词。

    例:
    A="我爱杭州"
    中文分词会将该文本切分成"我","爱","杭州"四个词语,输入以下条件,均可搜到内容:
    A:"我"
    A:"爱"
    A:"杭州"
    

    存储时限(retention)

    创建仓库时,我们需要指定这个属性,它的意思是指这个仓库内的每一条日志都会被存储和 retention 一致的天数,超过这个时间的数据会被自动删除,当 retention 指定为 0 时,表示永久存储。

    以上内容是否对您有帮助?
  • Close