APM开源方案-SigNoz初体验

本文涉及的产品
应用实时监控服务ARMS - 应用监控,每月50GB免费额度
简介: 最近在调研APM相关的开源方案,发现ATA上这类的文章比较少,准备搞一系列APM的“初体验”文章,那么先从最近github势头较热的SigNoz开始SigNoz简介SigNoz是一套开源APM方案,用于监控应用指标和链路,可以看到调用情况、异常、trace上下链路,也可以自己定义Dashboard。官方对于SigNoz介绍很全面了,不赘述啦。值得注意的是,SigNoz支持OpenTelemetry

最近在调研APM相关的开源方案,发现ATA上这类的文章比较少,准备搞一系列APM的“初体验”文章,那么先从最近github势头较热的SigNoz开始

SigNoz简介

SigNoz是一套开源APM方案,用于监控应用指标和链路,可以看到调用情况、异常、trace上下链路,也可以自己定义Dashboard。官方对于SigNoz介绍很全面了,不赘述啦。

值得注意的是,SigNoz支持OpenTelemetry规范(https://opentelemetry.io/),改期我们介绍下OpenTelemetry这个几乎把Trace、Metrics、Logging所有监控项统一了的规范。

官网网站

代码:https://github.com/SigNoz/signoz

官网站点:https://signoz.io/

架构

SigNoz主要包括4个模块:

  • Otel Collector: 即OpenTelemetry Collector,从服务或容器收集指标数据。针对java,app可以Agent和SDK 2种方式将数据发送给collector,collector负责数据收集、处理和导出到db。当然也可以直接在agent里将数据处理好再持久到db
  • ClickHouse:db存储,需要是时序数据库,这里也可以替换为InfluxDB或Apache Druid等开源时序数据库方案
  • Query Service:官方是Go语言的查询后端服务,也可以DIY成自己的服务
  • Frontend:前端页面,官方是TypeScript和ReactJS写的

上手

参考官网 https://signoz.io/docs/install/docker/ 

系统要求

  • Linux or MacOS系统,官方暂不支持WIndows
  • 需要Docker
  • >4GB内存(分配给Docker,单机测试可以使用无上限)
  • git
  • 相关端口开放,如3301,4317,4318

Docker Compose方式安装

我们来用docker compose方式安装下SigNoz单机版,官网同时也提供了bash脚本安装,都是差不多的逻辑

  • clone 相关git代码
git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/
  • docker compose命令部署
sudo docker-compose -f docker/clickhouse-setup/docker-compose.yaml up -d

运行完后我们耐心等待一会,后台会pull image、部署container

部署完可以看到官方示例里除了clickhouse、query、frontend3个容器外,还有几个示例服务

示例是Jaeger提供的Hot R.O.D  https://github.com/jaegertracing/jaeger/tree/main/examples/hotrod

体验监控页面

在浏览器中打开 http://localhost:3301/ 我们可以看到SigNoz的登录页面了,第一次登录注册账号即为管理员账号

主要面板

  • Metrics  指标相关

默认是请求量、异常量相关的指标数据

  • Trace 链路追踪相关

  • Dashboards 这里可以自定义面板,语法遵循Prometheus
  • Service Map 提供了服务间调用可视化,动态可以每个服务间调用量多少

应用端

SigNoz提供了多种语言应用的接入方式,主要也是得益于OpenTelemetry规范提供了大部分语言的采集端的能力

比如我们最常用的java语言,可以使用OpenTelemetry的agent方式探针到应用中,再配置下SigNoz的接入点就可以了

java -javaagent:/path/opentelemetry-javaagent.jar \
    -Dotel.metrics.exporter=none \
    -Dotel.exporter.otlp.endpoint=http://<IP of SigNoz Backend>:4317 \
    -Dotel.resource.attributes="service.name=<app_name>" \
    -jar <myapp>.jar

这里https://opentelemetry.io/docs/instrumentation/java/ 有详细的OpenTelemetry Java应用如何接入agent(要求jdk>8)

采集端

主要使用OpenTelemetry-Collector

https://signoz.io/docs/userguide/send-metrics/ 这里有介绍有两种方式可以将指标发送出去,这里不赘述,感兴趣读者可以去看官方介绍文档。

https://opentelemetry.io/docs/collector/getting-started/

这里collector的方式也可以用agent或gateway的方式,主要也是看规模,如果agent对于应用影响较大、处理数据逻辑复杂,可以单独使用gateway collector部署

其他

这里有一篇文章介绍如何将SpringBoot采集的JVM指标在SigNoz配置出来,利用的也是Dashboard配置面板

https://signoz.notion.site/Adding-JVM-metrics-from-Springboot-40c3b026573f435b932f3a42f8983e13

后文

差不多到这里,我们初次介绍了SigNoz的入门demo,里面配置项和细节还是很多的。市面上主流的APM方案都差不多,agent/sdk收集,发送到collector处理数据(或者直接在agent/sdk处理好指标数据),发送到时序数据库存储,另外有个query服务和ui界面供用户查看监控内容。

下篇预告 —— SkyWalking开源方案初体验~

相关实践学习
通过云拨测对指定服务器进行Ping/DNS监测
本实验将通过云拨测对指定服务器进行Ping/DNS监测,评估网站服务质量和用户体验。
相关文章
|
存储 消息中间件 监控
主流开源APM:Zipkin/Pinpoint/SkyWalking全面对比
这里重点从探针的性能、Collector的可扩展性、调用链路分析、完整的应用拓扑、对于科技人员使用友好程度(部署安装、埋点接入、使用管理)几个方面来进行对比。
|
监控 Java 应用服务中间件
开源APM监控Pinpoint的快速部署和使用
Pinpoint是用于大规模分布式系统的APM工具。它是在Dapper(一个由Google构建的分布式系统跟踪基础架构)之后构建的,为开发人员提供有关复杂分布式系统行为的更多信息。 Pinpoint作为一款非常优秀的开源APM监控平台,和其他开源系统一样,最繁琐的应该是部署,但是如果你能通过Doc.
6212 0
|
Prometheus 监控 前端开发
|
Web App开发 Java 应用服务中间件
开源APM工具pinpoint安装与使用
CentOS7 安装pinpoint(开源APM工具pinpoint安装与使用) 参考教程:http://naver.github.io/pinpoint/ Pinpoint是用Java编写的大型分布式系统的APM(应用程序性能管理)工具。
4332 0
|
运维 开发者 持续交付
|
存储 SQL Java
APM开源产品Pinpoint——Hbase表设计文档
Pinpoint is an APM (Application Performance Management) tool for large-scale distributed systems written in Java.
1229 0
|
16天前
|
运维 监控 数据可视化
ARMS的微服务监控
【8月更文挑战第23天】
39 6
|
4月前
|
监控 Java 索引
APM Server监控
APM Server监控
|
16天前
|
监控 前端开发 JavaScript
ARMS的Web应用监控
【8月更文挑战第23天】
37 8
|
16天前
|
监控 JavaScript 前端开发
ARMS的移动应用监控
【8月更文挑战第23天】
33 6