草庐IT

提升应用可观察性的八款热门工具推荐

安全牛 2023-03-28 原文
可观测性不是一个新鲜的名词,主要是指通过分析数字化应用系统的指标(Metrics)、链路(Traces)、日志(Logs)等数据,构建出完整的态势观测模型,从而实现快速的威胁发现和故障诊断。在许多情况下,可观察性会被错误理解成是“系统监控”的同义词,但随着数字化应用的深入,特别是随着云原生技术的发展,基于容器和微服务化的应用规模更加庞大,复杂的云上环境以及应用系统的分布性、复杂性、动态性,使得故障定界和检测分析非常困难,而可观测性无疑是降低这种难度的有效手段之一。因此,有更多企业发现部署可观察性产品的能力和价值。

目前,研究机构Gartner已将应用可观测性列为“2023年十大战略技术趋势”之一。安全研究人员表示,成功实现可观测性的企业机构,会在数字化业务开展中建立竞争优势,企业需要找到合适的工具并尽快部署使用。本文收集整理了8款主流的可观察性工具,并对其应用特性、不足和典型应用场景进行了分析,可为企业组织应用选型提供参考。

1. Prometheus

Prometheus是一款开源工具,广泛用于云原生环境中的可观察性获取。它可以收集和存储时间序列数据,并提供可视化工具来分析这些数据。

关键特性与不足:

可以从各种来源获取指标,包括应用程序、服务和系统;

可以将收集到的数据存储在时间序列数据库中,并可以高效地查询和聚合数据;

带有一个内置的警报系统,可以根据查询触发警报;

可以自动检测和抓取运行在多个环境中的服务的指标,比如Kubernetes和其他容器编排系统;

能够与Grafana灵活地集成,允许它创建仪表板来显示和分析Prometheus指标。

不能提供内置的根本原因分析;

需要将所有数据存储在内存中,因此可能会占用大量计算资源;

目前还不支持嵌套字段和连接。

主要应用场景:

  • 监控指标收集和存储;
  • 自动化报警;
  • 异常服务行为发现。
传送门:

​https://prometheus.io/​

2. Grafana

Grafana是一个开源工具,主要用于对数据的可视化和监控。它允许用户轻松地创建和共享交互式仪表板,对来自不同来源的数据进行可视化分析。

关键特性与不足:

  • 可以创建定制化的交互式仪表板,对来自各种数据源的指标和日志进行分析;
  • 允许用户根据其指标的状态设置警报,以发现潜在的问题;
  • 允许用户设置异常检测,并根据其指标中的异常行为自动检测和警报;
  • 允许用户深入到指标中,通过提供带有历史上下文的详细信息来分析根本原因。
  • 不支持长期存储,需要Prometheus或Elasticsearch等额外工具来存储指标和日志;
  • 不提供高级数据建模功能;
  • 不包含内置的数据聚合功能。
主要应用场景:

  • 对各种监控指标的可视化;
  • 自动化报警;
  • 异常服务行为检测。
传送门:

​https://grafana.com/​

3. ELK堆栈

ELK堆栈是一款流行的开源可观察性解决方案,有助于运营人员更好地管理日志和分析数据。它由三个组件组成:Elasticsearch、Logstash和Kibana。

Elasticsearch是一个分布式搜索和分析引擎,可以处理大量结构化和非结构化数据,使用户能够存储、索引和搜索大量数据;Logstash是一个数据收集和处理管道,允许用户收集、处理和丰富来自许多源(如日志文件)的数据;Kibana是一个数据可视化和探索工具,允许用户基于Elasticsearch中的数据创建交互式仪表板和可视化。

关键特性与不足:

  • 允许用户收集、处理、存储和分析来自多个来源的日志数据和指标,同时提供一个集中控制台来搜索日志;
  • 允许用户搜索和分析相关日志数据,这对于解决和深入了解问题的根本原因至关重要;
  • 可以对来自多个数据源的日志数据和指标进行可视化分析;
  • 允许在日志数据中为异常活动发出警报;
  • 允许用户向下获取更多日志数据,通过提供详细的日志和历史上下文,可以更好地找出问题的根本原因。
  • ELK目前还不支持分布式跟踪,用户需要使用额外的工具,如Jaeger;
  • ELK的日志报告会造成轻微的延迟;
  • 策略配置和维护过程比较复杂,需要特定的知识来管理运营。
主要应用场景:

  • 多来源的日志管理;
  • 数据可视化;
  • 遵从性和安全性监控
传送门:

Elasticsearch:https://www.elastic.co/elasticsearch/

Logstash:https://www.elastic.co/logstash/

Kibana:https://www.elastic.co/kibana/

4. InfluxDB 和Telegraf组合

InfluxDB和Telegraf都是开源版的可观察性工具,它们的时间序列数据存储和监控功能很受企业用户的欢迎。其中,InfluxDB是一个时间序列数据库,它使用类似sql的查询语言存储和查询大量时间序列数据;而Telegraf则是一款性能出色的数据收集代理,它可以支持各种数据源,收集各种指标和事件信息,并将其发送给多个提前设置的接收器,比如InfluxDB等。

关键特性与不足:

  • Telegraf允许用户从许多来源收集指标,并将它们发送到InfluxDB进行存储和分析;
  • InfluxDB可以与第三方可视化工具(如Grafana)集成,以创建灵活的交互式控制面板;
  • InfluxDB的设计允许它处理较长时间段内的数据并提供扩展能力;
  • 这两个工具都缺乏警报功能,需要第三方集成来提供警报;
  • 缺乏深入的原因分析功能,需要第三方集成。
主要应用场景:

  • 指标收集和存储;
  • 长时间的运行监控。
传送门:

InfluxDB:

​https://www.influxdata.com/​

Telegraf:

​https://www.influxdata.com/time-series-platform/telegraf/​

5. Datadog

Datadog是一款基于云的可观察性监控和分析平台,目前已被广泛用于深入了解分布式系统的运行状况和性能,以便在风险真实发生前排除问题。

关键特性与不足:

  • 可以监控在AWS、Azure、GCP等多种公有云平台上运行的应用程序;
  • 可以对服务依赖关系、位置、服务和容器等信息进行可视化分析;
  • 可以跟踪分析有关应用程序性能的详细信息;
  • 可以通过提供带有历史上下文的详细信息,让用户分析了解问题的根本原因;
  • 可以设置异常检测,自动检测和警告观测到的异常行为。
  • Datadog是一种基于云计算的付费服务,随着部署规模扩大,使用费用会增加;
  • 不提供默认的日志分析支持,用户必须单独购买日志摄取和索引功能;
  • 不允许用户在本地或自己的数据中心存储数据。
主要应用场景:

  • 可观察性数据管道
  • 分布式服务跟踪
  • 集装箱式应用监测
传送门:

​https://www.datadoghq.com/​

6. New Relic

New Relic也是一款基于云的监控和分析平台,允许用户监控分布式环境中的程序运行状态。它使用“New Relic Edge”服务进行分布式跟踪,可以实现几乎100%的应用程序跟踪监测。

关键特性与不足:

  • 提供全面的APM解决方案来监控和排除应用程序性能故障;
  • 可以在AWS、Azure、GCP等多个公有云平台上监控应用程序运行;
  • 可以提供有关系统和应用程序性能的详细信息,并进行跟踪分析;
  • 可以帮助用户深入到指标和上下文信息中,分析问题的根本原因;
  • 可以收集、处理和分析各种来源的日志数据,并提供全面的日志视图。
  • New Relic是一个闭源平台,它与其他开源工具的集成能力非常有限;
  • 在进行大规模部署时,New Relic的使用成本会比较高。
主要应用场景:

  • 多云环境中的应用监控
  • 深入的跟踪分析
传送门:

​https://newrelic.com/​

7. AppDynamics

AppDynamics是一款应用广泛的可观察性监控和分析平台,不仅允许用户对各种应用程序的每个组件进行跟踪监测,同时还提供了根本原因分析,以确定可能影响应用程序性能的潜在问题。

关键特性与不足:

  • 可以从许多来源(如主机、容器、云服务和应用程序)收集监控指标并跟踪分析;
  • 可以设置异常检测功能,对发现的异常行为进行及时检测和预警;
  • 用户可以获取较详细的性能信息并跟踪分析;
  • 由供应商维护工具,对开源工具的集成能力不足;
  • 定制选项不够灵活,用户不能自己定制解决方案。
主要应用场景:

  • 应用程序性能监视
  • 多云环境中的应用监控
  • 业务流程管理
传送门:

​https://www.appdynamics.com/​

8. Helios

Helios是一款为系统开发人员提供可观察性的解决方案,提供了对应用程序流程的可操作性洞察能力。它整合了OpenTelemetry的上下文连接框架,可以提供跨微服务、无服务器应用、数据库和第三方API的可见性。

关键特性与不足:

  • 在完整的上下文中提供分布式跟踪信息;
  • 使用户能够从多个数据源收集和可视化跟踪数据,以深入挖掘和排除潜在问题;
  • 支持Python、JavaScript、Node.js、Java、Ruby等多种语言和框架;
  • 允许团队成员重用请求、查询和有效负载;
  • 可根据跟踪数据自动生成测试;
  • 与现有的生态系统轻松集成,包括日志、测试、错误监控等;
  • 只需点击几下即可再现一个精确的工作流。
主要应用场景:

  • 分布式应用跟踪;
  • 多语言应用程序跟踪集成;
  • 无服务器应用程序监控;
  • 应用测试中的故障排除;
  • API调用自动化。
传送门:

​https://app.gethelios.dev/​

参考链接:

​https://dzone.com/articles/11-observability-tools-you-should-know-in-2023​

有关提升应用可观察性的八款热门工具推荐的更多相关文章

  1. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  2. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

  3. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  4. ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗? - 2

    刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr

  5. ruby-on-rails - 如何在我的 Rails 应用程序 View 中打印 ruby​​ 变量的内容? - 2

    我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby​​中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R

  6. ruby-on-rails - Rails 中的推荐引擎 - 2

    我想为我的Rails网络应用程序提供推荐功能。特别是,我想向新注册的用户推荐他可能想要关注的其他用户。Rails中是否有用于此目的的引擎/gem?如果没有,我应该从哪里开始构建它?谢谢。 最佳答案 有Coletivogemhttps://github.com/diogenes/coletivo我试了一下。在MySQL上运行。Neo4jhttp://neo4j.org真的很容易实现一个“跟随谁”。事实上,大多数展示其能力的样本都涉及“跟随谁”。快速提示-只有在JRuby上运行时,Neo4j.rb才会很酷。如果不是-使用Neograph

  7. ruby-on-rails - 如何在 Gem 中获取 Rails 应用程序的根目录 - 2

    是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在

  8. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  9. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  10. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

随机推荐