作者:张富春(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. 查询速度最高提升50倍!火山引擎ByteHouse在广告投放领域实践分享

     更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   据QuestMobile报告显示,移动互联网已经进入了下半场,在使用人数和使用时长方面已经没有明显增长,互联 ...

  2. RandomAccessFile 读写文件

    将目录下的N个日志文件读写到一个文件中. @Test void verification() throws Exception { File f = new File("D:\\Logs&q ...

  3. SpringBoot Scheduled 常见用法

    外部统一管理可用 xxl-job ,将各定时任务集中管理,灵活改变执行频率,支持某一个定时器集群处理,避免多服务启动时,每个服务都执行(重复执行) 比如我的API服务里有一个定时任务,将API做成集群 ...

  4. python实现微信扫码支付

    import datetime import hashlib import time import json import random import string import requests f ...

  5. 类加载机制-深入理解jvm

    一.什么是类的加载: 如上图,java文件通过编译器变成了.class文件,接下来类加载器又将这些.class文件加载到JVM中.其中类装载器的作用其实就是类的加载. 二.原理 (类的加载过程及其最终 ...

  6. freeswitch通过limit限制cps

    概述 freeswitch在业务开发中有极大的便利性,因为fs内部实现了很多小功能,这些小功能组合在一起,通过拨号计划就可以实现很多常见的业务功能. 在voip云平台的开发中,我们经常会碰到资源的限制 ...

  7. sublime_text4 2023最新版 激活教程

    官网 Sublime HQ - Remarkable Software 东西在教学的时候还是挺好用的,就是要付费购买,穷,没钱 买不起,自己动手丰衣足食. 下载安装包 我现在最新版是4.4152 下面 ...

  8. netstat 命令查看端口状态详解

    转载请注明出处: netstat 可以查看服务器当前端口列表及指定端口的连接状态等: -t : 指明显示TCP端口,t是TCP的首字母. -u : 指明显示UDP端口,u是UDP的首字母 -p : 显 ...

  9. Jstack 查看线程状态及定位占用 cpu 较高的 java 线程

    本文为博主原创,未经允许不得转载: 1. Jstack 用来查看 java 指定进程所包含的 java 线程状态:    "arthas-NettyHttpTelnetBootstrap-3 ...

  10. for-each循环使用iterator进行遍历

    示例如下: public static void main(String args[]) { List list = new LinkedList(); list.add("aa" ...