DoubleCloud 即将停止运营。迁移到 ClickHouse,并享受限时免费迁移服务。立即联系我们。 ->->

博客 / 工程

SigNoz:基于 OpenTelemetry 原生构建的开源指标、追踪和日志一体化平台

Pranay Prateek @ SigNoz
2023年6月8日

SigNoz 的故事

当我们于 2021 年初开始时,没有一个工具具备完整的应用程序性能监控 (APM) 体验。我们从应用程序性能指标开始,主要关注开箱即用的指标,例如RED 指标和应用程序的第 99 百分位延迟。

诸如 Prometheus 之类的工具确实存在,但这些工具主要用于基础设施指标。虽然 Prometheus 本身是监控 Kubernetes 指标的默认选择,但要计算应用程序指标(如 API 的第 99 百分位延迟)需要付出大量的努力。

与此同时,Elasticsearch、Logstash 和 Kibana 堆栈专门用于日志收集,对指标的支持有限。Prometheus 和 ELK 生态系统提供的功能与 Datadog 等闭源产品提供的体验之间存在巨大的差距。

作为开发者,我们更倾向于开源模式,在这种模式下,社区可以支持和参与项目,我们也可以从中学习。这促使我们开发并发布了 SigNoz,这是一个由 ClickHouse 提供支持的开源 APM 解决方案。

我们为什么选择 ClickHouse 作为可观察性后端

当我们在 2021 年 2 月发布 SigNoz 的初始版本时,我们开始使用 Druid 作为数据存储。我们了解到可观察性只是另一种分析用例,因此我们知道列式 OLAP 数据存储将是最合适的数据存储。

我们评估了 Druid、Pinot 和 ClickHouse。当时,Pinot 仍处于早期阶段,Druid 被 Lyft 等许多大型公司使用,而 ClickHouse 则处于两者之间。

根据当时的市场采用情况,我们从 Druid 开始。

我们在 HN 帖子中收到了很多评论,称 Druid 可能难以运行。我们还开始看到开源社区的用户在运行 Druid 时遇到问题,尤其是在单机或单节点部署中。

我们意识到,人们希望能够在他们的笔记本电脑或单节点机器上尝试新的开源产品,并在对体验感到满意后,再逐步解决配置更大集群的难题。

因此,我们开始寻找即使在低内存和低 CPU 条件下也能运行,并且能够很好地扩展以适应更高工作负载的数据存储。在查看了 ClickHouse 之后,我们发现它易于上手,并且在规模上也能表现出色。

因此,我们开始使用 ClickHouse 作为我们的主要数据存储。

为什么选择 OpenTelemetry

当我们于 2021 年初开始开发 SigNoz 时,OpenTelemetry 仍处于起步阶段。只有追踪规范和 SDK 是稳定的,而日志和指标仍在开发中。两年后,可观察性的所有关键信号——指标、追踪和日志——都已宣布稳定。

尽管该项目还处于起步阶段,但我们很明显地意识到它代表了可观察性数据收集的未来。对我们来说,拥有一个通用的 SDK 检测层,其他产品可以利用它来可视化和展示洞察力,这是很直观的。此外,它还将允许使用 OpenTelemetry 的公司避免供应商锁定。这是公司在采用闭源遥测工具时面临的一个大问题。

因此,我们对 OpenTelemetry 做出了早期押注。

如今,OpenTelemetry 无处不在。它现在是 CNCF 生态系统中仅次于 Kubernetes 的第二大活跃项目。许多大型公司,如 eBay,已将其可观察性堆栈迁移到 OpenTelemetry [2]

cncf.png

我们认为,OpenTelemetry 推动的遥测数据格式标准化将创造一个更大的工具生态系统。我们预计将出现新的框架和语言,支持 OpenTelemetry 作为数据输出的默认格式,例如ClickHouse 以 OpenTelemetry 格式输出数据Traefik 添加 Otel 支持。鉴于 OpenTelemetry 格式数据的数量不断增加,我们希望 SigNoz 作为开源后端,能够帮助社区快速上手。

是什么让 SigNoz 与众不同

到目前为止,可观察性生态系统中的大多数开源工具都专注于特定的用例,例如,Prometheus 专注于指标,Jaeger 仅专注于追踪,而 Elastic 主要用于日志记录。

虽然这些工具本身都很棒,但我们认为将可观察性的所有三个关键信号——指标、追踪和日志——集中在一个面板中具有很大的价值。这使得信号之间的关联更加容易,并且由于指标、追踪和日志功能是单个应用程序的一部分,因此运行和管理也更加容易。与 Grafana 等堆栈相比,体系结构更加简单,在 Grafana 中,您必须为每种数据类型运行不同的系统,并将它们组合在一起。

SigNoz 还带有一个用户界面和可视化层,它是专门为可观察性而构建的。用户界面能够更快地实现点击穿透和更深入的钻取,使用户能够高效地识别问题的根本原因。

signoz_services.png

SigNoz 中开箱即用的服务列表页面

此外,由于 SigNoz 使用 ClickHouse 作为主要数据存储,因此我们可以为高基数数据提供卓越的性能。我们认为可观察性主要是一个分析用例,您希望从遥测数据中提出很多问题,以获得对潜在问题原因的洞察力。对基数的限制,或需要将其视为扩展维度,感觉不必要、复杂且具有限制性。

最近,诸如UberCloudflare等公司也将其日志分析用例迁移到 ClickHouse,进一步证明了 ClickHouse 是此类数据类型的最佳存储。

signoz_trace.png

立即开始

开始使用 SigNoz 非常简单。您可以在单节点Kubernetes 集群上开始使用。

默认的 SigNoz 安装会自动部署一个 ClickHouse 实例,以提供简单的入门体验。

但是,如果您已经运行了 ClickHouse,则可以按照此处的说明设置 SigNoz 并重用您的集群。

如果您在 Kubernetes 集群中运行 SigNoz,可以使用以下步骤

在 Kubernetes 中,我们将更新 override-values.yaml 文件以使用外部 ClickHouse。首先,我们将通过将 clickhouse.enabled 设置为 false 来禁用默认的 ClickHouse 实例。然后,我们将在 externalClickhouse 部分中包含外部 ClickHouse 信息。

override-values.yaml signoz_k8s_config.png

要使用上述配置安装 SigNoz,请运行以下命令

signoz_k8s_install.png

参考文献

[1] 了解 2022 年 CNCF、Linux 基金会和前 30 大开源项目的进展

[2] eBay 为什么以及如何转向 OpenTelemetry

[3] 可观测性工程书籍

分享此文章

订阅我们的新闻通讯

随时了解功能发布、产品路线图、支持和云产品信息!
正在加载表单...
关注我们
Twitter imageSlack imageGitHub image
Telegram imageMeetup imageRss image