Sentry(v20.12.1) K8S云原生架构探索,玩转前/后端监控与事件日志大数据分析,高性能高可用+可扩展可伸缩集群部署

2021-05-27 19:13:04 浏览数 (1)

Sentry 算是目前开源界集错误监控,日志打点上报,事件数据实时分析最好用的软件了,没有之一。将它部署到 Kubernetes,再搭配它本身自带的利用 Clickhouse (大数据实时分析引擎)构建的 Snuba 服务进行数据分析~简直了。(已无敌?)

在实战之前,我们先跟随官方文档初步了解下 Sentry 的整体项目架构。

系列:

  1. 一起来刷 Sentry For Go 官方文档之 Enriching Events
  2. Snuba:Sentry 新的搜索基础设施(基于 ClickHouse 之上)
  3. Sentry 10 K8S 云原生架构探索,Vue App 1 分钟快速接入

项目架构

这一节,来自于官方文铛。

  • https://develop.sentry.dev/architecture/

注意:最新官方版 20.12.1,截止到今天(202001009)。

它的架构细节可能又发生了演进,从已启动的容器来看。

高层概述

边线表示 Sentry 服务依赖关系图

事件管道

如何保存事件。边线表示通过系统的数据流。

由于布局限制,此图非常简化。此图表中缺少:

  • Relay 如何获取项目配置。答:来自 sentry-web
  • Relay 如何缓存项目配置。答:在内存中,在 Redis 中
  • Relay 如何计数事件并跟踪 quotas(配额)。答案:更多 Redis
  • Symbolicator 作为 symbolicate-event 的辅助服务
  • 如何触发警报。回答:postprocess-event,一个 Celery 任务,负责报警(由一个Kafka消费者在Sentry中从eventstream读取数据)
  • 可能更多

有关更多信息请阅读 Path of an event through Relay 和 Event Ingestion Pipeline。

通过 Relay 的事件路径

事件提取管道

部署实战

Helm Charts

这里我用的是:sentry-kubernetes/charts

  • https://github.com/sentry-kubernetes/charts

Helm 一键部署

注意:Helm 部署是一个比较专业的话题(公司层面要玩好,注意拖运维大佬下水?),如:

  • 持久化是否采用分布式存储 or NFS...
  • 是否采用外部(公司运维老板维护的)的 Redis 集群
  • 是否采用外部的 Kafaka 集群
  • 是否采用外部的 RabbitMQ 集群
  • 是否采用外部的 Postgresql 集群
  • 是否采用外部的 Clickhouse 集群
  • 等等......

试玩:

代码语言:javascript复制
helm repo add sentry https://sentry-kubernetes.github.io/charts
helm repo update
helm search repo sentry
# sentry/sentry  8.1.0  20.12.1  A Helm chart for Kubernetes
# 我这里用的是这个版本
kubectl create ns sentry
helm install sentry sentry/sentry --version 8.1.0  -n sentry

你没看错,我这里足足给你启动了 34 个容器(too young, too simple, sometimes naive?):

中文文档陆续同步到:

  • https://getsentry.hacker-linner.com

我是为少。

0 人点赞