如果你想在开始之前检查你的 Github 仓库👇
SigNoz/signoz
SigNoz 是一个开源 APM。它可以帮助开发人员监控他们的应用程序并解决问题,它是 DataDog、NewRelic 等的开源替代品。🔥🖥。 👉 开源应用程序性能监控(APM)和可观察性工具
监控您的应用程序并解决已部署应用程序中的问题,这是 DataDog、New Relic 等的开源替代品。
[](https://twitter.com/intent/tweet?textu003dMonitor%20your%20applications%20and%20troubleshoot%20problems %20with%20SigNoz,%20an%20open-source%20alternative%20to%20DataDog,%20NewRelic.&urlu003dhttps://signoz.io/& viau003dSigNozHQ&hashtagsu003d开源、signoz、可观察性)
文档•中文自述文件•德文自述文件•[葡萄牙文自述文件]4 **(https://github.com/SigNoz/signoz/blob/main/README.pt-br.md)• 10005 社区](https://signoz.io/slack)•推特
SigNoz 帮助开发人员监控应用程序并解决他们部署的应用程序中的问题。 SigNoz 使用分布式跟踪来了解您的软件堆栈。
👉 您可以查看 p99 延迟、服务的错误率、外部 API 调用和各个端点等指标。
👉您可以通过转到导致问题的确切跟踪并查看各个请求跟踪的详细火焰图来找到问题的根本原因。
👉 对跟踪数据运行聚合以获取业务相关指标
加入我们的 Slack 社区
来和我们打个招呼吧Slack👋
特点:
-
应用程序概览指标,例如 RPS、50th/90th/99th Percentile 延迟和错误率
-
应用程序中最慢的端点
-
见确切...
在 GitHub 上查看
可扩展性、可靠性、可维护性...
当今世界微服务架构的好处不胜枚举。但伴随着这些好处也带来了复杂性的挑战。您如何确保跨服务器、数据存储、云供应商和第三方 API 的分布式基础架构始终处于良好状态以满足客户需求?
单个用户请求可能通过三层、五层、十八层或一百层不同的服务进行路由。
对于团队来说,确定哪个服务导致请求速度变慢很快变得不现实。工程团队需要一个能够为这种复杂性带来背景的系统。一种能够快速识别潜在问题以便尽快解决问题的系统。这就是需要一个强大的监控框架的地方。
目录
-
介绍 SigNoz
-
安装 SigNoz
-
检测示例 Golang 应用程序
-
使用 SigNoz 仪表板识别导致高延迟的问题
介绍 SigNoz
SigNoz 是一个全栈开源应用程序监控和可观察性平台,可以安装在您的基础设施中。您可以跟踪 p99 延迟、服务的错误率、外部 API 调用和各个端点等指标。使用服务地图,您可以快速评估服务的运行状况。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--dhx_qDbK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/sitmi6l5fy202h64yfad.gif)
一旦您知道受影响的服务,跟踪数据就可以帮助您识别导致问题的确切代码。使用 SigNoz 仪表板,您可以使用火焰图轻松可视化您的轨迹。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--0f0pQhsn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/bxnezrbcvik2l0qd0iuv.png)
在 SigNoz 仪表板上使用火焰图可视化的分布式跟踪
现在让我们开始采取一些行动,亲眼看看一切。
我们将教程分为两部分:
-
安装 SignNoz
-
检测示例应用程序以开始监控
第 1 部分 - 安装 SigNoz
安装 Docker
您可以按照其网站此处上列出的步骤安装 Docker。对于本教程,您可以根据您拥有的系统选择 Docker Desktop 选项。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--uMxlqiQs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/hj2h0mewmcwyf8j72ypw.png)
克隆 SigNoz GitHub 存储库
从您的终端使用以下命令克隆 SigNoz 的 GitHub 存储库。
git clone https://github.com/SigNoz/signoz.git
进入全屏模式 退出全屏模式
更新 signoz/deploy 和安装 SigNoz 的路径
deploy 文件夹包含通过 Docker 部署 SigNoz 所需的文件。
cd signoz/deploy/
./install.sh
进入全屏模式 退出全屏模式
您将被要求选择以下两种方式之一进行:
-
Clickhouse 作为数据库(默认)
-
Kafka + Druid 设置来处理规模(推荐用于生产)
使用 clickhouse 数据库试用 SigNoz 所需的内存不到 1.5GB,在本教程中,我们将使用该选项。
[![Mac终端]上SigNoz安装过程(https://res.cloudinary.com/practicaldev/image/fetch/s--dCEa3C8M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uenodd3f8igg2tghijmv.png)](https://res.cloudinary.com/practicaldev/image/fetch/s--dCEa3C8M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// dev-to-uploads.s3.amazonaws.com/uploads/articles/uenodd3f8igg2tghijmv.png)
安装完成后,您将收到以下消息。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--jaXCBdab--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// /dev-to-uploads.s3.amazonaws.com/uploads/articles/phjjj8ns2l0wmi1pghsp.png)
安装成功运行后,应该可以在端口 3000 访问 UI。等待 2-3 分钟,以便前端可以使用数据。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--Al3hUTeR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/qtmmoslacztt1j5cxqk9.png)
仪表板中显示的应用程序来自安装包随附的名为 Hot R.O.D 的示例应用程序。它有 4 个被监控的微服务:前端、客户、驱动程序和路由。您可以访问 Hot R.O.D 应用程序 UI:http://localhost:9000/
现在您已经启动并运行了 SigNoz,让我们看看仪器是如何工作的。 Instrumentation 是实现代码指令以监控应用程序性能的过程。 Instrumentation 是了解您的应用程序如何处理现实世界的关键。它可以帮助您生成跟踪数据,然后您可以使用这些数据来了解系统内部正在发生的事情。
SigNoz 支持OpenTelemetry作为用户检测其应用程序的主要方式。 OpenTelemetry 是一个单一的、与供应商无关的仪器库,支持自动和手动仪器。有关 OpenTelemetry Golang SDK 和 API的更多详细信息,请点击此处。
第 2 部分 - 检测示例 Golang 应用程序
要了解 SigNoz 如何开始报告 Golang 应用程序的数据,让我们看看它如何与示例书店应用程序 (GitHub repo) 一起工作。
它是一个带有 REST API 的简单书店应用程序,可提供图书数据并执行 CRUD 操作。该应用程序使用 Gin 框架来构建 RESTful API。 Gin 是一个用 Golang 编写的高性能 HTTP Web 框架,包含一组常用功能,如路由、中间件支持和渲染。
OpenTelemetry 有特定的检测包来支持流行的 Golang 包和用例。例如,此应用程序使用 Gin 框架进行请求路由。 OpenTelemetry 提供名为 otelgin 的检测包来检测您需要在应用程序中导入的 Gin 框架。您可以在此处](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/instrumentation)找到 OpenTelemetry[支持的 Golang 包的完整列表。
先决条件
$ go version
步数
克隆示例 Golang 应用程序存储库
从您的终端使用以下命令克隆示例 Golang 应用程序 GitHub 存储库。
git clone https://github.com/SigNoz/sample-golang-app.git
进入全屏模式 退出全屏模式
更新 sample-golang-app 的路径并检查应用是否正常运行
将您的终端路径更新到示例应用程序目录,并使用以下命令检查应用程序是否正常工作:
cd sample-golang-app
go run main.go
进入全屏模式 退出全屏模式
确保您有一个可用的端口来运行您的应用程序。如果默认情况下,golang 应用程序尝试在端口 8080 上运行,您可能会收到错误,因为 SigNoz 使用端口 8080 进行查询服务。在您的 mac 终端上,您可以使用以下命令设置应用程序的侦听端口:
export PORT = 8081
进入全屏模式 退出全屏模式
服务器成功运行后,您可以在以下位置检查示例书店应用程序的端点:http://localhost:8081/books
如果您看到一个空数组,则表示您的应用程序正在运行。您可以从此处的文章中查看如何编写、更新和删除数组中的书籍。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--uSI4sv2u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/p4frszm97m98cazjo0up.png)
/books
确保应用程序正常运行后,在 mac 终端上按“Ctrl + C”退出服务器。
设置 OpenTelemetry Golang 检测包
main.go
import (
"go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/otlp"
"go.opentelemetry.io/otel/exporters/otlp/otlpgrpc"
"go.opentelemetry.io/otel/label"
"go.opentelemetry.io/otel/sdk/resource"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
)
进入全屏模式 退出全屏模式
您只需要使用必要的环境变量运行它即可开始向 SigNoz 发送数据。使用以下命令运行并配置应用程序以将数据发送到 SigNoz:
SERVICE_NAME=goApp INSECURE_MODE=true OTEL_EXPORTER_OTLP_ENDPOINT=<IP of SigNoz backend>:4317 go run main.go
进入全屏模式 退出全屏模式
localhost
SERVICE_NAME=goApp INSECURE_MODE=true OTEL_EXPORTER_OTLP_ENDPOINT=localhost:4317 go run main.go
进入全屏模式 退出全屏模式
/books
您现在可以通过http://localhost:3000访问 SigNoz 仪表板,以监控您的应用程序的性能指标。
[](https://res.cloudinary.com/practicaldev/image/fetch/s--5ekuvt2P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/tossy6w8p5t75ksmvlux.png)
示例 Golang 应用程序出现在应用程序列表中
如果你想检测你自己的 Golang 应用程序,你可以在我们的文档中阅读它。
使用 SigNoz 仪表板识别导致应用程序高延迟的问题
现在您已经安装了 SigNoz,让我们看看如何识别在部署的应用程序中导致高延迟的特定事件。
只需 5 个简单的步骤,我们的仪表板即可让您深入了解导致部署应用程序延迟的事件👇
- 选择您要检查的服务
[](https://res.cloudinary.com/practicaldev/image/fetch/s--qdb5nemO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// dev-to-uploads.s3.amazonaws.com/uploads/articles/yehyrukl18lzatn0mvw0.png)
- 选择延迟较高的时间戳,点击查看轨迹
[](https://res.cloudinary.com/practicaldev/image/fetch/s--ssJqp_Ge--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto% 2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2mbmhfdu0vmczzm8nuj5.png)
- 选择延迟最高的trace ID
[](https://res.cloudinary.com/practicaldev/image/fetch/s--EG1CVGcT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https ://dev-to-uploads.s3.amazonaws.com/uploads/articles/40jgfgum0b1x42620jqi.png)
- 使用火焰图检查分布痕迹
[](https://res.cloudinary.com/practicaldev/image/fetch/s--Tje39LHt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/58fvwt6eaet6nb07iwwh.png)
- 将最高延迟事件归零并采取行动
[](https://res.cloudinary.com/practicaldev/image/fetch/s--T1d-KV7l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https: //dev-to-uploads.s3.amazonaws.com/uploads/articles/efon6ci18irrwwu0f0m1.png)
如果您在试用 SigNoz 方面需要任何帮助,请随时发送邮件至ankit.anand@signoz.io给我。
查看我们的文档以获取更多安装指南和故障排除说明。
他们说,“如果它没有被监控,那么它就不会在生产中。”有了 SigNoz,您现在就可以开始监控您的应用程序了。使您的团队能够在生产中快速解决问题对于维护复杂的分布式系统的健康状况至关重要。
在 SigNoz,我们致力于打造最好的开源、自托管的应用程序性能监控工具。随时在这里查看我们的 GitHub 存储库:
SigNoz/signoz
SigNoz 是一个开源 APM。它可以帮助开发人员监控他们的应用程序并解决问题,它是 DataDog、NewRelic 等的开源替代品。🔥🖥。 👉 开源应用程序性能监控(APM)和可观察性工具
监控您的应用程序并解决已部署应用程序中的问题,这是 DataDog、New Relic 等的开源替代品。
[](https://twitter.com/intent/tweet?textu003dMonitor%20your%20applications%20and%20troubleshoot%20problems %20with%20SigNoz,%20an%20open-source%20alternative%20to%20DataDog,%20NewRelic.&urlu003dhttps://signoz.io/& viau003dSigNozHQ&hashtagsu003d开源、signoz、可观察性)
文档•中文自述文件•德文自述文件•[葡萄牙文自述文件]4 **(https://github.com/SigNoz/signoz/blob/main/README.pt-br.md)• 10023](https://signoz.io/slack)•推特
SigNoz 帮助开发人员监控应用程序并解决他们部署的应用程序中的问题。 SigNoz 使用分布式跟踪来了解您的软件堆栈。
👉 您可以查看 p99 延迟、服务的错误率、外部 API 调用和各个端点等指标。
👉您可以通过转到导致问题的确切跟踪并查看各个请求跟踪的详细火焰图来找到问题的根本原因。
👉 对跟踪数据运行聚合以获取业务相关指标
加入我们的 Slack 社区
来和我们打个招呼吧Slack👋
特点:
-
应用概述指标,例如 RPS、第 50/90/99 个百分位延迟和错误率
-
应用程序中最慢的端点
-
见确切...
在 GitHub 上查看