使用SigNoz搭建可观测系统

简介: 使用SigNoz搭建可观测系统

前言

SigNoz是一个开源的应用程序性能监控工具,可以帮助你监控你的应用程序并排除故障,它可以进行链路追踪、基础设施监控以及日志管理,可以说是Datalog的开源版本。

具体的能力如下:

  • 监控应用程序指标,如延迟、每秒请求、错误率等
  • 监测基础设施指标,如CPU利用率或内存使用情况
  • 追踪跨服务的用户请求
  • 对指标设置警报
  • 通过查找导致问题的确切痕迹,找到问题的根本原因
  • 查看单个请求追踪的详细火焰图

image.png

SigNoz包括以下组件。

  • OpenTelemetry Collector:从你的服务和应用中收集遥测数据。
  • ClickHouse:一个开源的、高性能的列式OLAP数据库管理系统。
  • Query Service:前端和ClickHouse之间的接口
  • Frontend:用户界面,用ReactJS和TypeScript构建。

安装

前提

  • Kubernetes >= 1.21
  • 仅支持x86/amd64架构
  • helm >= 3.8
  • 最低资源需求4C8G30G
  • 有可用的默认storageclass

安装

(1)添加helm仓库

helm repo add signoz https://charts.signoz.io
helm repo update

(2)创建名称空间

kubectl create ns signoz

(3)部署signoz

helm install sigonz -n signoz signoz/signoz

(4)检查安装情况

# kubectl get po -n signoz 
NAME                                               READY   STATUS    RESTARTS   AGE
chi-signoz-clickhouse-cluster-0-0-0                1/1     Running   0          46m
signoz-alertmanager-0                              1/1     Running   0          48m
signoz-clickhouse-operator-7d4677bb47-dzbzm        2/2     Running   0          48m
signoz-frontend-67db9bcf9b-l8x5h                   1/1     Running   0          48m
signoz-k8s-infra-otel-agent-hhjxb                  1/1     Running   0          48m
signoz-k8s-infra-otel-agent-t9wjr                  1/1     Running   0          48m
signoz-k8s-infra-otel-deployment-74fbb7d79-vkm2j   1/1     Running   0          48m
signoz-otel-collector-789cf754fd-nsf6f             1/1     Running   0          48m
signoz-otel-collector-metrics-67449f79f9-cgkm4     1/1     Running   0          48m
signoz-query-service-0                             1/1     Running   0          48m
signoz-zookeeper-0                                 1/1     Running   0          48m

(5)使用nodeport访问前端应用image.png

第一次登录,需要注册一个账户,如下:image.png

然后,就进入前端面板。image.png

链路追踪

官方示例

先部署一个官方demo,来感受一下链路追踪。

# curl -sL https://github.com/SigNoz/signoz/raw/main/sample-apps/hotrod/hotrod-install.sh   | HELM_RELEASE=signoz SIGNOZ_NAMESPACE=signoz bash
namespace/sample-application created
configmap/locust-cm created
configmap/scripts-cm created
deployment.apps/hotrod created
service/hotrod created
deployment.apps/locust-master created
service/locust-master created
deployment.apps/locust-slave created
✅ Successfully deployed HotROD sample application

!! HELM_RELEASE和SIGNOZ_NAMESPACE根据自己实际情况修改。

然后看到所有服务都起来了。

# kubectl get po -n sample-application 
NAME                            READY   STATUS    RESTARTS   AGE
hotrod-794648c678-l226b         1/1     Running   0          54s
locust-master-b65744bbf-7hxhc   1/1     Running   0          54s
locust-slave-688c86bcb7-86snl   1/1     Running   0          54s

然后使用下面的命令来模拟负载。

kubectl --namespace sample-application run strzal --image=djbingham/curl \
  --restart='OnFailure' -i --tty --rm --command -- curl -X POST -F \
  'locust_count=6' -F 'hatch_rate=2' http://locust-master:8089/swarm

然后可以看到这些服务的请求链路。image.png

点击其中一个请求,可以看到整个链路状态,如下:image.png

也可以看整个服务的链路图。image.png

还可以查看每个服务的具体延时、错误等面板。image.png

然后停止负载模拟:

kubectl -n sample-application run strzal --image=djbingham/curl \
  --restart='OnFailure' -i --tty --rm --command -- curl \
  http://locust-master:8089/stop

应用接入

SigNoz支持多种语言应用的接入,包括不限于Python、Java、Golang等。image.png

以Java为例,我们只需要在启动命令中加入javaagent以及SigNoz地址配置即可,如下:

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

监控

SigNoz可以接受监控数据,不过我还没研究明白......

日志

安装完SigNoz过后,默认是打开了收集K8s Pod的日志,如下:image.png

我们可以过滤日志,比如只看namespace=monitoring的日志,如下:image.png

其具体的配置文件在value.yaml里,如下:

k8s-infra:
  presets:
    loggingExporter:
      enabled: false
    logsCollection:
      enabled: true
      include:
        - /var/log/pods/*/*/*.log
      startAt: beginning
      includeFilePath: true
      includeFileName: false
      blacklist:
        enabled: true
        signozLogs: false
        namespaces:
          - kube-system
        pods:
          - hotrod
          - locust
        containers: []
        additionalExclude: []

在使用上还是有不少缺陷,日志查找不是很方便。

告警

(1)首先,添加通知渠道,这里选择使用Webhookimage.png由于对钉钉支持不友好,使用一个临时的webhook.sit进行测试。

(2)然后选择测试就可以再webhook.sit上接收到消息image.png

(3)然后就可以配置告警策略了image.png

然后就能收到告警消息。image.png



相关文章
|
2月前
|
人工智能 监控 数据可视化
掌控AI军团:OpenClaw阿里云及本地部署集成可视化 TenacitOS 管理监控中心流程
随着OpenClaw(Clawdbot)在AI自动化领域的广泛应用,多Agent协同、技能扩展等功能让其能力不断升级,但随之而来的监控管理需求也日益凸显。TenacitOS作为专为OpenClaw打造的可视化指挥中心,以“无额外后端依赖”为核心设计理念,直接运行在OpenClaw工作区内,通过读取宿主环境数据,提供全面的监控与管理功能,让AI代理的运行状态一目了然。
1392 1
|
XML Java 测试技术
springboot 整合 apache camel实现企业级数据集成和处理
springboot 整合 apache camel实现企业级数据集成和处理
5221 0
springboot 整合 apache camel实现企业级数据集成和处理
|
7月前
|
存储 人工智能 监控
|
12月前
|
弹性计算 Kubernetes API
Kubernetes 驱动的 IaC,Crossplane 快速入门
Crossplane 是一个开源的 Kubernetes 扩展工具,允许用户通过声明式配置直接在 Kubernetes 中管理云资源。对于阿里云开发者,借助 Crossplane 和官方提供的 provider-upjet-alibabacloud,可以像管理 Pod 一样轻松操作 ECS 实例、VPC 和 OSS Bucket 等资源。本文介绍了 Crossplane 的核心概念,并通过快速入门指南演示了如何安装 Crossplane、配置阿里云认证并创建第一个 VPC 资源。
1291 37
|
10月前
|
数据采集 人工智能 Java
阿里云正式开源 LoongSuite:打造 AI 时代的高性能低成本可观测采集套件
AI Agent技术架构的演进正在重塑软件工程实践方式。开发者可通过智能编程助手提升效率,也可依托专业框架构建智能体系统。技术生态呈现多维度发展,涵盖高代码与低代码方案,并支持Java和Python等多语言。新型开发范式如AutoGen和LangChain降低了开发门槛。LoongSuite作为可观测采集套件,助力企业高效构建AI时代可观测体系,推动标准化数据规范,提升系统稳定性与运维效率。
|
Kubernetes 容器
K8S的Service的LoadBanlance之Metallb解决方案
本文介绍了如何在Kubernetes中使用MetalLB来实现Service的LoadBalancer功能,包括MetalLB的部署、配置、以及通过创建地址池和部署服务来测试MetalLB的过程。
930 2
K8S的Service的LoadBanlance之Metallb解决方案
|
Arthas 监控 Java
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
本文介绍了阿里云 Java Agent 4.x 版本在基于 OTel Java Agent 二次开发过程中的实践与思考,并重点从功能、性能、稳定性、兼容性四个方面介绍了所做的工作。同时也介绍了阿里云可观测团队积极参与开源建设取得的丰厚成果。
1482 118
拥抱 OpenTelemetry:阿里云 Java Agent 演进实践
|
10月前
|
存储 监控 Shell
SkyWalking微服务监控部署与优化全攻略
综上所述,虽然SkyWalking的初始部署流程相对复杂,但通过一步步的准备和配置,可以充分发挥其作为可观测平台的强大功能,实现对微服务架构的高效监控和治理。尽管未亲临,心已向往。将一件事做到极致,便是天分的展现。
|
缓存 Ubuntu Linux
Docker Buildx 简介与安装指南
Docker Buildx 是一个强大的工具,提供了多架构构建、并行构建和高级缓存管理等功能。通过正确安装和配置 Buildx,可以显著提升 Docker 镜像的构建效率和灵活性。希望本文能帮助你更好地理解和使用 Docker Buildx,以提高开发和部署的效率。
6882 16
|
监控 Java Shell
链路跟踪-SkyWalking系列(一)
链路跟踪-SkyWalking系列(一)
3409 2