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


    前言

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

    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()

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

  • 相关阅读:
    Python3 基础语法
    JAVA:实现字符串WordLadder字梯算法(附完整源码)
    1500*A. Boredom(DP)
    一个大一计算机学生的学期总结(2022下半年)
    HTTP协议中的Cookie和Session
    java事务回滚机制问题
    java 数据库 查询 select
    web3.0+元宇宙,你的钱要往哪儿扔
    QT基础篇目录
    图像去雾易语言代码
  • 原文地址:https://blog.csdn.net/weixin_43970890/article/details/127984663