三款“非主流”日志查询分析产品初探

前言

近些年在开源领域,用于构建日志系统的软件有两类典型:

  1. Elasticsearch:基于 Lucene 构建倒排索引提供搜索功能,DocValue 存储支持了其统计分析能力。
  2. Clickhouse:列式存储是其优秀 OLAP 性能的保障。

这里把上述系统归入 schema-on-write 系列。百花齐放,本文介绍三款 "schema-on-read" 类型日志系统。

为什么是打了引号的 schema-on-read?尽管几家厂商对外宣传关键词常常用到 index-free、schema-less,但从技术角度应该理解为一种轻量级索引技术,将大部分计算成本后置到使用时发生。它们的出现有其背景:

  • 技术能力:硬件技术快速发展,云计算 IaaS 资源(计算、存储、网络)已足够便宜、弹性。
  • 客户诉求:近两年市场紧缩,企业的 IT 预算更加精细。
  • 场景固化:相当比例的日志使用场景具有写多读少、随时间变长热度降低特性。

Humio

简介

Humio 是 2016 年成立的一家英国公司,2021 年 3 月被 CrowdStrike 收购($352 million 现金加 $40 million 股票期权)。产品提供日志的搜索、统计、仪表盘、告警服务。

数据路径

Humio 用 Kafka 充当数据 buffer,落盘数据到内置存储供查询分析。可以开启投递到 S3。

由于轻索引方案延迟表现不满足告警、仪表盘场景,但大部分时候它们的 query 模式固定,且按时间顺序进行。Humio 的方案是流计算,在数据摄入的 pipeline 中计算告警和图表:

  • 只处理实时数据。
  • 数据不需要排序。
  • 数据都在内存中更新。

存储

内置存储主要服务的是日志搜索、分析场景,数据的压缩、索引对于后续的计算性能有决定性影响。

Humio 将数据按照 bucket 排列,在 bucket 上做好一些标签,标签内容包括:

  • 数据的时间区间。
  • 数据的来源、类型。
  • 基于数据 key-value 的 bloom filter(增加 4% 存储以支持随机关键词)。

bucket 标签实际是一种粗粒度的索引,区别于以往对单条日志的细粒度索引。query engine 在计算时根据标签信息判断数据是否可能在 bucket 内,只读取相关的 bucket 数据。

计算

Humio 语法是管道式 SPL:

#host=github #parser=json

| repo.name=docker/*

| groupBy(repo.name, function=count())

| sort()

对应的执行计划:读数据、标签过滤、扫描过滤、聚合计算、结果写出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值