APM开源方案-SigNoz初体验

简介: 最近在调研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开源方案初体验~

相关实践学习
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
本场景将自定义告警信息同时分发至多个通知渠道的需求,例如短信、电子邮件及钉钉群组等。通过采用轻量消息队列(原 MNS)的主题模型的HTTP订阅方式,并结合应用实时监控服务提供的自定义集成能力,使得您能够以简便的配置方式实现上述多渠道同步通知的功能。
相关文章
|
监控 Java 数据挖掘
Android线上轻量级APM性能监测方案
Android线上轻量级APM性能监测方案
1913 0
Android线上轻量级APM性能监测方案
|
Web App开发 负载均衡 算法
Windows平台下利用APM来做负载均衡方案 - 负载均衡(下)
概述   我们在上一篇Windows平台分布式架构实践 - 负载均衡中讨论了Windows平台下通过NLB(Network Load Balancer) 来实现网站的负载均衡,并且通过压力测试演示了它的效果,可以说还是非常的理想的。
1495 0
|
Prometheus 监控 Cloud Native
SigNoz,一款集日志、指标及追踪一体的开源平台
Hello folks,我是 Luga,今天我们来分享一下与云原生体系有关的话题- 云原生可观测性平台-SigNoz。 作为一个“核心”体系,可观测性在监控分布式微服务应用程序和云基础设施的可见性和控制自动化层面具有举足轻重的意义。
1603 0
|
监控 Kubernetes 前端开发
使用SigNoz搭建可观测系统
使用SigNoz搭建可观测系统
|
存储 JavaScript 数据可视化
大型网站重构指南 第1.2部分:Nodejs 系统可观测性 OpenTelemetry+SigNoz
大型网站重构指南 第1.2部分:Nodejs 系统可观测性 OpenTelemetry+SigNoz
1168 0
大型网站重构指南 第1.2部分:Nodejs 系统可观测性 OpenTelemetry+SigNoz
|
Prometheus Kubernetes 负载均衡
Opentelemetry collector用法
本文详细介绍了Opentelemetry Collector的使用方法及其各个组件(receiver、processor、exporter、connector和服务配置)的功能与配置。Collector的核心组件通过官方仓库提供丰富的实现,涵盖了认证、健康监控等功能。
2955 63
Opentelemetry collector用法
|
存储 消息中间件 监控
主流开源APM:Zipkin/Pinpoint/SkyWalking全面对比
这里重点从探针的性能、Collector的可扩展性、调用链路分析、完整的应用拓扑、对于科技人员使用友好程度(部署安装、埋点接入、使用管理)几个方面来进行对比。
|
监控 关系型数据库 MySQL
初体验:数据库监控、管理和可观测性工具(PMM)
Percona Monitoring and Management (PMM) 是一个开源工具,用于监控MySQL、PostgreSQL和MongoDB的性能。它提供实时监控、数据可视化、故障排除和管理功能,支持本地和云端数据库。要安装PMM,首先需安装Docker,然后通过提供的脚本部署PMM服务器和客户端。在MySQL服务器上创建PMM用户后,使用`pmm-admin`命令添加数据库。访问PMM的HTTPS网址(默认用户名和密码为admin)进行配置。本文还包含了安装Docker和PMM的命令行步骤。
初体验:数据库监控、管理和可观测性工具(PMM)
|
存储 人工智能 JSON
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
RAG Logger 是一款专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、检索结果记录、LLM 交互记录和性能监控等功能。
781 7
RAG Logger:专为检索增强生成(RAG)应用设计的开源日志工具,支持查询跟踪、性能监控
|
API 数据安全/隐私保护
Argo CD接入LDAP认证或者gitea认证的方法
argocd默认是通过修改argocd-cm来添加账户的,添加完账户后,还需要使用argocd客户端命令去给账户设置密码,这肯定是比较麻烦的,为了方便使用,我们可以接入ldap认证或者gitea的oauth2认证。 这里我们主要写ldap认证,因为gitea没有提供组信息给dex,而ldap能返回组信息 ,gitea的接入会在文章的末尾进行简单介绍 关键词:argocd ldap dex
2746 1
Argo CD接入LDAP认证或者gitea认证的方法

热门文章

最新文章