HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

Honeycomb - 调试复杂系统的工具

  • 2016-11-07
  • 本文字数:1660 字

    阅读完需:约 5 分钟

Honeycomb 是用于观察和关联分布式系统中各事件的工具。它的方法与现有工具(例如 Zipkin )不同。Honeycomb 由原有的单一请求跟踪模型转变为更自由形式的模型,能够跨层 (layers)、跨维度 (dimensions) 地收集和查询数据。

Honeycomb 与 Zipkin 这样的软件有什么区别?Zipkin 是基于 Google Dapper paper 的分布式跟踪系统,由Twitter 编写和开放源代码。InfoQ 近日与Honeycomb 联合创始人Charity Majors 联系,了解到该产品的更多信息。Majors 指出,与使用全球唯一的UUID 进行请求跟踪不同,“对大家来说通常更有用的是某种用户ID 或应用程序ID,以及其他类型的ID。这些请求ID 便于将具有您可能想要计算或聚合的共同特征进行分组。”

这在实践中意味着什么?基于如Zipkin 之类的跟踪工具的请求,假设每个请求都附有唯一的ID。从请求进入系统的时间起,ID 通过各种子系统调用(可用于微服务)来传递,而子系统调用是由初始调用的结果触发的。如果在每个步骤都记录下此ID,并且设定中心区域来聚合和索引这些日志,那么在请求ID 已知的前提下,在系统中搜索和跟踪特定请求将变得很容易。这种日志聚合器的一个典型例子是ELK( Elasticsearch/Logstash/Kibana )。

Honeycomb 打破了这种模式,尽量在每个级别分别获取数据(如负载均衡器、微服务和数据库),标记数据,便于用户今后对这些数据进行混合匹配(mix-an-match)和即时查询 (ad-hoc queries)。Majors 解释说,Honeycomb 采用这种方法是因为跟踪本身给你留下一个亟待解决的问题。这个问题就是“哪些是有代表性,值得首先研究的请求”。一旦用 Honeycomb 展示数据,用户可以跨系统、跨时间,将不同层的数据联系整合,进行运算,从而理解它的性能。例如,跨越多个系统的请求响应时间的增加可能是由于来自多个因素(包括时间)的集体效应。这不利于请求跟踪,因为请求一般代表的是给定时间段内相关事件的单个线程。

数据一般可以通过 API 调用发送到 Honeycomb。以下示例表示如何用 API 调用来记录 Web 请求数据:

复制代码
curl https://api.honeycomb.io/1/events/Quickstart -X POST \
-H "X-Honeycomb-Team: YOUR_WRITE_KEY" \
-d '{"status":200,"path":"/docs/","latency_ms":13.1,"cached":false}'

在这个例子里, “-d”参数可用于获取 JSON 对象。这个 JSON 对象具有便于以后查询的任何应用程序特定信息。数据收集为一系列事件,对于其中每个事件都应该进行跟踪。这些事件可以捆绑成名为“数据集”的单个实体。Honeycomb 可以通过所谓的“连接器”与应用程序集成。连接器是从特定软件中提取数据并将其发送到Honeycomb 的适配器。用户还可以使用 SDK 以及名为 honeytail 的工具将数据从现有日志集成到 Honeycomb。

为了:给正在收集的数据添加上下文,Honeycomb 还标记各事件是由谁触发的:是操作员还是像计划任务 cron 之类的什么(部署、脚本或一次性动作)。这些操作垂直排列,上面附加了一些信息,例如谁运行脚本以及指向部署代码的链接。这有点类似于 Etsy 的运营团队使用 Grap hite 的情况(但 Graphite 缺乏相应的背景信息)。

Honeycomb 收集了大量数据,那它是如何处理大规模查询的呢?Majors 说,由于接近 100% 用户发出的查询都是关于最近一两个星期的,他们现在正专注于近期的调试任务,以便于采用有效的抽样保留技巧。

为了处理大量的数据,Honeycomb 使用自己的列存储:

Majors 说,我们开始构建 Honeycomb 时研究了大量现有的解决方案,但没有一个能完美解决问题。我们最终发现,绝大多数的预构建解决方案都需要对功能性进行权衡,在那些我们不需要的功能(例如事务)和牺牲那些我们认为至关重要的功能(例如能够快速访问原始输入事件)之间取舍。

Honeycomb 目前还不支持与其他告警系统集成,如 Nagios、Zabbix、PagerDuty。目前只有受邀请者可以注册该服务。

查看英文原文 Honeycomb - A Tool for Debugging Complex Systems


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-11-07 18:002617
用户头像

发布了 22 篇内容, 共 51641 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

爱立信钱包平台 (Ericsson Wallet Platform) 与 F5 合作推动金融包容性和赋权

F5 Inc

架构 安全 金融 移动支付

会声会影软件2023新功能详情介绍

茶色酒

会声会影2023

火山引擎DataLeap:揭秘字节跳动数据血缘架构演进之路

字节跳动数据平台

云服务 数据血缘 企业号 2 月 PK 榜

错题集

刿刀

2个月内如何在千人团队落地压测平台?

老张

项目管理 性能测试 全链路压测 压测平台

2023年中国人工智能产业趋势报告

易观分析

人工智能 科技 ChatGPT

构建隐私计算三大生态,百度点石为政务数据要素市场护航

百度安全

隐私计算 百度安全

这样Debug,排查问题效率大大提升...

采菊东篱下

Java

CocoaPods的使用问题

刿刀

CocoaPods

14 条策略助力企业构建更安全的软件供应链

墨菲安全

SBOM 软件供应链安全

全球律师事务所 Ogletree Deakins 借助 F5 云服务快速实现远程办公

F5 Inc

云计算 远程办公 云服务 律师

阿里开源自研高性能核心搜索引擎 Havenask

阿里技术

搜索引擎 AI·OS实践

ChatGPT “眼”中的开源数据库

墨天轮

数据库 ShardingSphere 开源数据库 Tapdata ChatGPT

容器化部署和传统部署的四个区别详细讲解-行云管家

行云管家

容器 容器化部署

coreldraw2023新功能新图标功能介绍

茶色酒

CorelDraw2023

WebUI自动化测试框架搭建之需求整理、详细设计和框架设计

Python 自动化测试 unittest 测试框架 selenium

Asian Paints 利用 F5 Silverline Web Application Firewall 实现转型

F5 Inc

数字化转型 托管 云端

助力企业数字化转型!涛思数据与永洪科技完成战略合作签约

TDengine

tdengine 时序数据库 企业数字化

湖北文旅虚拟数字代言人“胡贝儿”首秀,赛博大象助力地方文旅元宇宙落地

科技热闻

一文看懂倚天云实例|科普漫画

云布道师

倚天实例

软件测试/测试开发 | Frida 实现 Hook 功能的强大能力

测试人

软件测试 自动化测试 测试开发

技术分享| 如何使用Prometheus实现系统监控报警邮件通知

anyRTC开发者

Linux 运维 Prometheus 服务器 系统监控报警邮件通知

设备在线/离线状态的缓存方案——实践类

阿里云AIoT

缓存 物联网 存储 数据格式 测试技术

PostgreSQL:启动与停止

天翼云开发者社区

玩转GaussDB 中的SET操作符

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

我直接就是一个下载推特GIF动图的大动作!巨简单!

frank

twitter

SpEL表达式注入漏洞分析、检查与防御

华为云PaaS服务小智

安全 分析

灰度直方图及直方图均衡化

timerring

图像处理 数字图像处理

堡垒机厂家电话多少?在哪里?怎么样?

行云管家

网络安全 堡垒机 自动化运维

昇腾AI新技能,还能预防猪生病?

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

无服务器Serverless总结

天翼云开发者社区

Honeycomb - 调试复杂系统的工具_DevOps & 平台工程_Hrishikesh Barua_InfoQ精选文章