作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


2022 年 6 月的时候,正在痛苦的研究 grafana loki, 团队希望用这个新组件来替换成本巨高的 ElasticSearch。但是 loki 用来用去都像是个半成品,文档不全,难用,代码混乱,实在是一段痛苦的经历。

当时我就在想:完全可以基于 VictoriaMetrics 的源码,改出一套低成本存储的日志系统来。

思路是这样的:

  1. 目前的日志都是半结构化的,通常格式如下:
    tag name1 : tag value1
tag name2: tag value2
log content (long text)
  1. 日志的结构化部分,与 metric 完全一样,因此可以存储在 vm-storage 的索引部分。

    • 结构化的部分能够被索引化的存储和检索,并且可以使用 promql 来检索。
    • 只要结构化的部分,其全新组合的 tag 不会剧烈增加,则索引部分的增量就是可控的。
  2. 日志的非结构化部分是一段长文本。

    这些长文本可以顺序存储在 VictoriaMetrics 的数据文件部分。

    首先使用结构化的标签进行过滤,缩小范围后,再在长文本中去匹配关键词。这里的搜索可能比较耗资源,一方面相比es而言存储成本小了很多,另一方面可以对长文本再做很多算法上的优化。

    可能单纯的文本匹配,es 的性能会更好,但是综合成本和使用频率等因素,半结构化的方式够用且成本低廉。

终于,在六月底,Valyala 大神发布了 VictoriaLogs,很多评测文章表示简单易用且性能卓越。

希望 Victoria 系列产品能够在整个可观测领域大放异彩。

后面我也想办法再去研究研究 VictoriaLogs 底层的实现原理。

果然,基于 VictoriaMetrics 修改而来的 VictoriaLogs 来了!!!的更多相关文章

  1. WinForm的EXE破解(基于IL修改)

    一.目的与目标 1.1 主题目的 部门新人较多,希望通过本次分享让同学们对以下知识点有个认识: 破解原理 IL原理 强签名与加密 resx文件 由于时间有限,本文作为部门分享演示过程中辅助性文档,会对 ...

  2. 行人重识别(ReID) ——基于Person_reID_baseline_pytorch修改业务流程

    下载Person_reID_baseline_pytorch地址:https://github.com/layumi/Person_reID_baseline_pytorch/tree/master/ ...

  3. FrameWork数据权限浅析1之基于手工修改模型实现行级数据安全

    1:环境 Cognos10.2.0,Oracle 2:实现过程 在设置Framework数据级别权限的时候,通常用到的就是在FM的设置数据安全的地方添加安全过滤器,如下图 step1:选中部门维度表→ ...

  4. 修改Coney主题之侧边栏移位

    title: 修改Coney主题之侧边栏移位 date: 2014-12-15 18:09:54 categories: Hexo tags: [hexo,css] --- Coney是一个非常漂亮的 ...

  5. 基于SlidePanelLayout实现ResideMenu

    同步发表于http://avenwu.net/2015/02/24/custom_slide_panel_layout_as_reside_style_on_dribble_and_qq Fork o ...

  6. 基于redis分布式缓存实现

    Redis的复制功能是完全建立在之前我们讨论过的基 于内存快照的持久化策略基础上的,也就是说无论你的持久化策略选择的是什么,只要用到了Redis的复制功能,就一定会有内存快照发生,那么首先要注意你 的 ...

  7. win10 uwp 修改Pivot Header 颜色

    我们在xaml创建一个Pivot <Pivot Grid.Row="1"> <PivotItem Header="lindexi">&l ...

  8. win10 uwp 修改CalendarDatePicker图标颜色

    CalendarDatePicker 是一个好用的东西,但是我发现想要修改他右边的那个图标,显示日历的图标颜色,没有这个选项. 如果不知道我说的是哪个,请看下面的图. 左边颜色变化的就是我们要修改的图 ...

  9. 基于PU-Learning的恶意URL检测

    https://xz.aliyun.com/t/2190 Ya-Lin Zhang, Longfei Li, Jun Zhou, Xiaolong Li, Yujiang Liu, Yuanchao ...

  10. 基于PU-Learning的恶意URL检测——半监督学习的思路来进行正例和无标记样本学习

    PU learning问题描述 给定一个正例文档集合P和一个无标注文档集U(混合文档集),在无标注文档集中同时含有正例文档和反例文档.通过使用P和U建立一个分类器能够辨别U或测试集中的正例文档 [即想 ...

随机推荐

  1. Scala学习系列(二)——环境安装配置

    Scala下载地址:https://www.scala-lang.org/download/ 一.安装JDK 首先,因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK 二.二进制 ...

  2. 2023 年如何将您的应用提交到 App Store

    您夜以继日地工作来创建您的梦想应用程序.最后,是时候向全世界宣布您的应用程序了.但不知道如何将您的应用提交到 App Store? 为您的商店获取现成的移动应用程序 将应用程序提交到 App Stor ...

  3. Solon2 之 Kotlin 语言开发后端项目,很爽

    今天也学别人用 Solon 框架写个 Kotlin 后端项目.自己搞配置还是有点难的,需要借助 "Solon Initializr" 生成个项目模板. 1.生成项目模板 打开&qu ...

  4. Codeforces Round 913 (Div. 3)

    CF1907总结 A. Rook 题面翻译 给出车在国际象棋棋盘中的位置,输出其可到达的坐标(不必在意顺序). 车可以横着或竖着走任意格数. 分析 题意明了,输出车所在行和列所有格子的序号(除车所在位 ...

  5. Python中字符前添加r,b,u,f前缀的含义

    1.在python字符串前添加r,意思为消除转义字符 2.在python字符串前添加f,意思为支持大括号内的python 表达式. 3.在python字符串前添加b,意思为字符串类型为byte类型,在 ...

  6. sqlalchemy 报错 Lost connection to MySQL server during query 解决

    最近在开发过程中遇到一个sqlalchemy lost connection的报错,记录解决方法. 报错信息 python后端开发,使用的框架是Fastapi + sqlalchemy.在一个接口请求 ...

  7. 【GO】Go语言介绍 Go开发环境搭建 第一个helloworld 变量命名规范 变量的定义和使用

    今日内容 1 Go语言介绍 #Go语言介绍 Go 即 Golang,是Google公司2009年11月正式对外公开的一门编程语言 Go是[静态 强类型]语言,是区别于解析型语言的编译型语言 静态:类型 ...

  8. 换架 3D 飞机,继续飞呀飞

    相信大多数图扑 HT 用户都曾见过这个飞机的 Demo,在图扑发展的这十年,这个 Demo 是许多学习 HT 用户一定会参考的经典 Demo 之一. 这个 Demo 用简洁的代码生动地展示了 OBJ ...

  9. Springboot+ELK实现日志系统简单搭建

    前面简单介绍了ELK三剑客中的其中两个Elasticsearch和Kibana的简单使用,如果对这两个不了解,可以看下下面的 Centos7安装Elasticsearch和Kibana 搜索引擎基础- ...

  10. JUC包常用类原理

    放眼望去,java.util.concurrent包下类大致包括:atomic 原子类.锁.并发集合.线程池.工具类.我们挑重要的了解一下. Atomic 原子类 Java针对并发编程已经有了各种锁, ...