使用SigNoz搭建可观测系统

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

前言

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

具体的能力如下:

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

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访问前端应用

图片

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

图片

然后,就进入前端面板。

图片

链路追踪

官方示例

先部署一个官方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

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

图片

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

图片

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

图片

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

图片

然后停止负载模拟:

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等。

图片

以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的日志,如下:

图片

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

图片

其具体的配置文件在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)首先,添加通知渠道,这里选择使用Webhook

图片

由于对钉钉支持不友好,使用一个临时的webhook.sit进行测试。

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

图片

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

图片

图片

然后就能收到告警消息。

图片

责任编辑:武晓燕 来源: 运维开发故事
相关推荐

2021-05-04 18:28:23

Apache KafkSigNoz开源

2023-09-06 07:51:19

KubernetesOperator

2022-06-07 13:48:25

可观测性架构系统开发

2023-07-26 00:12:04

2021-05-24 15:48:38

高德打车系统可观测性

2023-10-26 08:47:30

云原生数据采集

2022-06-22 16:31:26

阿里云数字化转型云原生

2023-03-09 08:00:22

2023-05-18 22:44:09

2023-08-21 09:37:57

MySQL工具MariaDB

2024-05-28 09:37:48

2023-09-20 16:11:32

云原生分布式系统

2023-03-30 16:30:08

可观测云原生

2023-11-01 06:55:05

人工智能可观测性IT

2023-08-07 08:48:13

2022-09-27 21:32:14

Dapr指标与日志

2024-01-15 05:55:33

2023-10-13 13:40:29

2023-01-09 11:23:03

系统
点赞
收藏

51CTO技术栈公众号