首页 > 其他分享 >可观测性革命 - 揭秘OpenObserve开源高性能云原生平台

可观测性革命 - 揭秘OpenObserve开源高性能云原生平台

时间:2023-06-05 13:22:46浏览次数:47  
标签:存储 OpenObserve 用户 观测 开源 日志 数据 揭秘

简介

OpenObserve 是一个开源的云原生可观测性平台,与 Elasticsearch 相比,存储成本降低了约 140 倍(实际结果可能因测试数据而有所不同),测试用例包括真实的日志数据,其显著降低运营成本,并提高了易用性。它可以扩展到PB级别的数据量,具有很高的性能,您晚上可以睡得更好。如果您正在寻找一款适用于日志、指标和跟踪的可观测性工具,请查看 OpenObserve 以及其在可观测性方面如何帮助您构建更好的软件并节省观测成本。

我们构建 OpenObserve 时遵循以下设计原则:

  1. 使用 暴力搜索 进行日志查询,而非倒排索引或bitfunnel;
  2. 使用 Rust 作为编程语言以确保安全和高性能;
  3. 使用 s3/MinIO/gcs/Azure blob/oss/cos 作为可观测数据存储;
  4. 采用 列式格式 存储数据以加速分析;
  5. 支持 很高基数 的字段;
  6. 利用SIMD指令集(AVX-512和NEON)进行 向量化处理 以加速分析;
  7. 采用无状态节点,真正实现 计算与存储分离 ,;
  8. 核心引擎从一开始就设计为提供 完整的可观测性解决方案 (日志、指标、跟踪),而不是事后对现有功能进行改进。

我们将在一系列博客中深入探讨如何实现比现有可观测工具更高效率。但现在让我们先来看看为什么我们要构建 OpenObserve

又一个日志搜索引擎!为什么?

当我在2021年创建 ZincSearch[1] 时,我没有料到它会在大约一年内在GitHub上获得超过14k stars,并成为 2022年GitHub上增长最快的项目[2] 之一。尽管功能简单,但目前已经有数百家组织将ZincSearch应用于生产环境中的日志搜索和分析。

这些组织选择ZincSearch的原因是什么?绝大多数客户表示他们使用现有可观测性解决方案时遇到以下痛点:

  1. 启动难度 :通常包括:
    1. 在用户环境中安装;
    2. 提前规划,例如分片数量、需要索引哪些字段、设置映射(Elasticsearch)、以及预先定义标签(Loki);
    3. 各种配置使用户真正可用;
    4. 有些系统甚至要求用户在大规模运行时使用Kafka以避免数据丢失;
  2. 维护难度 :我们都听说过关于Elasticsearch的恐怖故事,包括:
    1. 配备资源;
    2. 备份;
    3. 升级;
    4. 在发生故障时恢复系统正常运行;
    5. 根据需要增减节点数量;
  3. 功能和易用性 :长期以来,Amazon CloudWatch默认从AWS各项服务中接收日志,但由于难以使用,用户自己使用Elasticsearch收集日志,或直接使用像Datadog这样的SaaS平台。当我第一次发现Elasticsearch时,我喜欢它的用户体验远远优于CloudWatch。Datadog构建了一个更好的界面,我非常喜欢使用它。重点是,即使你有像CloudWatch这样容易获得的东西,它仍然需要具备可用性和高效完成预期工作的功能,否则用户会寻找替代品。
  4. 成本 :像Splunk和Datadog这样的参与者尽管提供了出色的软件但是可能变得极其昂贵。看看这个 关于Datadog定价和成本的reddit帖子[3] 。一般来说,成本分为以下几类:
    1. 许可;
    2. 基础设施成本:有两种形式:
      1. 计算:用户需要多少台服务器进行搜索和分析。
      2. 存储:用户在可观测性数据(日志和跟踪数据可能会迅速变得庞大)方面使用了多少存储空间。EBS卷在大规模时可能变得非常昂贵。(规划卷及其生命周期管理又是另一个令人头痛的问题。)这也限制了您实际可以存储的数据的持续时间,因为存储数据的成本可能超过它提供的感知价值。
    3. 人力成本:通常涉及两种角色:
      1. 需要DevOps/SRE/管理人员花时间设置并确保系统的正常运行。
      2. 开发人员被告知需要自行决定他们能推送多少可观测性数据,而且需要密切关注他们的日志数据来保证平台可用。还需要花时间与管理人员一起学习平台的各种事物,如索引映射、查询语法、基数等。
    4. 对于大多数SaaS平台,定价基于您向其发送的数据量。
  5. 学习曲线 :尽管我喜欢学习新东西,但我讨厌为不同工具学习做同样事情的不同方法。我也不喜欢学习可以被避免的东西。所有的日志引擎似乎都为高级查询带来了自己的查询语言。
    1. Elasticsearch有一个需要学习的自定义DSL。不过最近也支持SQL了;
    2. Grafana Loki有LogQL;
    3. Datadog有自己的查询语言;
  6. 性能 :考虑到如果其他所有事情都运行良好,他们可以只添加几个服务器,所以在这方面抱怨较少的人。然而,这对许多人来说仍然是一个问题。较低的性能可能导致性能下降、计算成本上升,或者在查询超时时根本无法完成工作。性能包括以下几点:
    1. 采集:用户可以多快地采集数据;
    2. 搜索:例如,在所有日志数据中搜索错误日志;
    3. 聚合:例如,从NGINX日志中分析HTTP状态码的总计;

我们还看到了像Datadog、Loggly、Papertrail、Splunk和Sumologic这样的SaaS平台的局限性,它们可能很昂贵且缺乏必要的功能。此外,许多用户更喜欢将数据保留在自己的数据中心或AWS帐户中。我们的团队考虑到了这些挑战,并从零开始设计了一个解决每个问题的系统。

借鉴我们的团队成员和我作为AWS解决方案架构师与数百家AWS客户合作的经验,我们构建了一个既适合初学者又适合高级用户的系统。

与使用过时技术构建的现有系统不同,我们正在使用现代技术构建一个全面的可观测性平台,包括日志、指标和跟踪。

指导原则

当我们决定最终构建时,我们希望遵循以下原则:

  1. 快速上手
    1. 用户应该能够在不到两分钟的时间内安装(对于私有部署)或注册(对于SaaS平台);
    2. 用户应该能够在两分钟内开始采集数据,并在没有任何复杂配置的情况下开始观测应用程序的行为;
  2. 常态化运行
    1. 应用程序应该稳定,在出现问题时,它应该能够自动修复自己;
    2. 大多数用户应该能够在零配置的情况下开始高效地使用系统;
    3. 弹性扩展应该像更改AWS中自动缩放组中节点数量一样简单,或者像更改k8s中副本数量一样简单;
    4. 大多数用户不需要备份,或者可以在无需DBA级别技能的情况下进行备份;
    5. 升级过程顺畅且易于操作,并考虑到各个版本之间存在差异性。升级过程不能导致系统停机或数据丢失。
  3. 功能和可用性
    1. 系统从一开始就应该具有高度可用性,能够提供极好的时间投资回报率。一个优秀的UI和API是实现这个目标非常重要的一点。
    2. 仅通过日志无法查看整个软件,用户还需要指标和跟踪。
  4. 成本 :用户无需抵押房屋或公司资产就可以私有部署(有或无许可费用)或SaaS平台上运行系统。
  5. 学习曲线 :从未使用过该系统的用户也应能够安装和高效的使用基本功能,或者能够利用现有技能进行高级操作。
  6. 性能
    1. 对于生产环境中的大多数情况,系统都应具备高性能;
    2. 性能通常是一种权衡,在权衡之后,它依然能被绝大多数用户所接受,并能提供优秀的结果;

接下来我们花了几个月时间构建实际系统。

那么我能得到什么呢?

我们构建了一个开源的可观测性平台 OpenObserve ,它具有以下特点:

  1. 超级易用
    1. 用户可以在不到两分钟的时间内,在笔记本电脑上尝试使用它,占用不到100 MB的内存,并体验其卓越的性能。
    2. 用户可以在两分钟内将其安装在k8s集群中,并使系统正常运行。
    3. 用户会喜欢这个功能齐全、简洁实用且强大的GUI界面。
    4. 如果需要,用户还可以利用现有SQL技能进行高级查询。
  2. 低操作成本
    1. 所有用户数据都存储在S3(其他云存储或本地),无需管理。
    2. 根据用户需求快速弹性扩展。
    3. 元数据存储在etcd中,这是一个高可用键值存储系统。
  3. 低成本
    1. 与Elasticsearch相比,使用S3进行数据存储可降低约140倍的存储成本。而对于日志系统来说,这是主要成本之一。
    2. 采集过程中极低的计算需求(基于数据和硬件约为6倍 YMMV [你可能得到不同的结果])。
  4. 高性能引擎
    1. OpenObserve采用Rust编写,充分发挥了其高性能优势;
    2. 我们采用自动和手动分区以提高数据处理效率;
    3. 我们还使用内存缓存,在其中将压缩数据存储在内存中,可以在不到35 GB的RAM中存储1 TB的数据(约30倍压缩比,尽管实际日志可获得更高的压缩比)。
  5. 高级特性
    1. 日志、指标、跟踪、仪表板、警报、函数等;
    2. 多租户;
    3. 嵌入式脚本:
      1. 采集函数 - 可以将其视为AWS Lambda函数,用户可以在每条记录上运行该函数以便在采集过程中进行修改。它允许减少、删除和丰富进入OpenObserve的日志数据。用户可以预处理输入系统的日志记录。用户可以构建他们能想象到的任何功能。
      2. 查询函数 - 可以将其视为Lambda函数,在查询时对已经采集的每条日志上执行操作。例如,如果一个用户有一条像"1.2.3.4 - POST prabhat@zinc https://openobserve.ai"这样的日志记录,您可以在查询时解析并根据需要进行筛选。用户可以构建他们能想象到的任何功能。
  6. 晚上睡得更好 ,因为即使节点发生故障也会自动修复并继续运行。

下面是我们将kubernetes集群日志同时导入 OpenObserveElasticsearch 后几个小时内所产生的存储利用率结果。

权衡

我们选择以不同的方式做某些事情,这可能会影响到它在您的环境中的表现。

OpenObserve 不像 Elasticsearch 那样对数据进行倒排索引,而是将其直接压缩并存储在 S3 上。这使得 OpenObserve 以极低的存储成本和很低的计算成本运行采集,但搜索时需要更多计算资源。由于 OpenObserve 使用了列式存储,理论上可以用更低的计算能力进行分析查询,并且速度更快。我们将适时进行基准测试来证实这一点。

我们选择使用 etcd 而不是 raft/paxos 进行集群协调,因为 etcd 允许更好地扩展和集群协调。然而,这引入了 etcd 管理问题。与全功能数据库相比,etcd 管理要容易得多,因为其占用空间较小;尽管如此,在备份和保持正常运行方面还是有一些工作要做。我们计划适时提供一个托管型 etcd 服务供用户使用以解决此问题。

结论

市场上有四十多种可观测性工具(可能还有更多),其中一些是开源的、一些是闭源的、另外一些只作为 SaaS 提供。但我们仍然看到人们因为一个或多个原因(功能、成本、管理困难等)在使用这些现有工具时遇到困扰。

所以我们决定构建 OpenObserve ,让团队能够高效地完成工作,有效地解决问题,并且晚上睡得安稳。引用我的一位导师 Anand Babu Periasamy(MinIO 的 CEO)关于进入拥挤的可观测性市场的话:

已经有那么多捕鼠器了为什么还要再造一个呢?因为鼠害问题依然存在(而现有的捕鼠器并没有解决问题)。

查看 OpenObserve文档[4] 以在两分钟内安装 OpenObserve 或者直接尝试 OpenObserve 云平台[5]

标签:存储,OpenObserve,用户,观测,开源,日志,数据,揭秘
From: https://www.cnblogs.com/xiangbeizhixin/p/17457531.html

相关文章

  • 常用的开源自定义表单有哪几大优势特点?
    当前,办公已经进入流程化和自动化的阶段,要想跟随着社会发展,引用开源自定义表单工具可以使办公协作效率得到快速提升,它的灵活、便捷、易操作等特点,使得该表单工具深受当今职场的喜爱,是做好数据管理,提升办公表单制作效率和质量的得力助手。今天这篇文章就与大家一起分享常用的开源自......
  • 如易云揭秘1-框架
          如易云是什么如易云的框架是业务系统开发和技术中间件之前的桥梁,是对业务领域深入理解后的精巧封装,可以大大提升开发效率。全景图我对每块,做下简单说明。       se-context,业务上下文(主要是用户信息),大家都懂的。因为集成了springsecurity,基本......
  • 如易云揭秘1-框架(cache)
    Hibernate老鸟的话,对于Hibernatecache的精妙实现应该都是非常了解,即便不了解其实现原理,也知道Hibernatecache非常的易用,集成EhCache,对于系统性能也有很好的提升。那我们来看看如易云的框架,如易云的框架基于Mybatis,Mybatis新版本中也集成了cache,并且也有开源......
  • 通用陪玩约玩交友系统APP开发分享 开源
    陪玩简介陪玩系统适用:语音社交聊天,美女、大神约玩、聊天约玩、游戏陪玩、一对一语音连麦聊天交友、多人语音连麦聊天、婚恋相亲交友、同城交友、约会恋爱、利奥塔社交app、自动打招呼等...具体详情点击此处###【功能详情】首页├─轮播广告|├─后台设置图片及图片链接......
  • 商城系统比较(三款不错的java开源商城系统推荐)和其他推荐
    今天给大家分享三套github上优质的商城开源项目,排名不分先后。1、newbee-mall(新蜂商城)仓库地址:https://github.com/newbee-ltd/newbee-mall特点:springboot开发,主要针对pc端,代码设计非常简洁,没有过多的分层,非常适合初学者学习。 2、macrozheng/mall(没有中文名,不太好记)仓库地......
  • 如何快速测试一个开源应用
    有的时候想分享一个开源应用给朋友分享,虽然自己云服务器,但是上面一些有一些生产应用,不方便再安装其他应用。这时,可以考虑选用三丰的云服务器 ,虽然刚开始免费云服务器的免费时间只有24小时,但是作为开源应用的测试分享基本足够了。 上面快速安装一个php8测试一下,默认没有端口限......
  • 推荐 7 款类似Google Analytics 的开源程序
    GoogleAnalytics我想大家应该都不会太陌生,它是Google提供的一个优秀Web分析数据服务,是最广泛使用的网站统计服务,能生成网站流量和来源详细统计数据。但GoogleAnalytics的最大缺点是它被Google控制,对很多人来说,这一点让他们非常不自在。而且GoogleAnalytics不是一个开源的......
  • 【iOS】GitHub上最受欢迎的iOS开源项目(二)
    “每一次的改变总意味着新的开始。”这句话用在iOS上可谓是再合适不过的了。GitHub上的iOS开源项目数不胜数,iOS每一次的改变,总会引发iOS开源项目的演变,从iOS1.x到如今的iOS7,有的项目已经被弃用,即使曾经的它很受开发者喜爱,有的项目则继续发扬光大,新项目更是层出不穷。在本文中,我们......
  • Knowledgeroot 开源知识管理系统简要介绍
    [url]http://blog.sina.com.cn/s/blog_701dfa430101hsyt.html[/url][color=red][b]Knowledgeroot[/b][/color]开源知识管理系统(KMS)官方网站:Knowledgeroot.org-当前版本:version:1.0.3Knowledgeroot可用于文档管理,知识库管理。1.基于php开发,支持lin......
  • 35 个你也许不知道的 Google 开源项目
    [b][color=red]以下是原文的复制,缺少许多超链接,最好查看原文,方便查看超链接内容.[/color][/b]Google是支持开源运动的最大公司之一,它们现在总共发布有超过500个的开源项目(大部分都是利用它们的API来完成),本文将列举一些有趣的开源项目,其中很可能有不少你不知道的哦。文本文件处......