如何使用 SigNoz 快速搭建一个可观测系统

公众号关注 「奇妙的 Linux 世界」

设为「星标」,每天带你玩转 Linux !

c95dad7d94519dd03129b030c4f4df23.jpeg

前言

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

具体的能力如下:

  • 监控应用程序指标,如延迟、每秒请求、错误率等

  • 监测基础设施指标,如CPU利用率或内存使用情况

  • 追踪跨服务的用户请求

  • 对指标设置警报

  • 通过查找导致问题的确切痕迹,找到问题的根本原因

  • 查看单个请求追踪的详细火焰图

outside_default.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访问前端应用ea2c32c55d7864b910d234372ceeab9d.png

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

然后,就进入前端面板。238814254c76d3d55ad2a598ec45404e.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

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

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

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

还可以查看每个服务的具体延时、错误等面板。ed4a9e6fa35b4690859da3be8216f161.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等。9a339f82b342e874981eadd5273083ed.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的日志,如下:8c9934e7618f712c702a2fe593f4fff1.png

我们可以过滤日志,比如只看namespace=monitoring的日志,如下:59e83f623ae541a72cb5413423f649e2.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)首先,添加通知渠道,这里选择使用Webhook7eb20294dd6794828b786117e3064b26.png由于对钉钉支持不友好,使用一个临时的webhook.sit进行测试。

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

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

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

本文转载自:「运维开发故事」,原文:https://url.hi-linux.com/fR0Fo,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。

99b6b411824ea76092d34a3ebc52ec96.gif

最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。

cdb5d16275f896d8890ffc82d7a32ab7.png

你可能还喜欢

点击下方图片即可阅读

7e5f1f48c79a3eca03af83c99ab1de3e.png

如何使用 Argo Rollouts 和服务网格实现自动可控的金丝雀发布

2da0b98d418cdff1b5657457639f1fc4.png
点击上方图片,『美团|饿了么』外卖红包天天免费领

f092295de212fccb0ce569384abc9910.png

更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值