Sentry
算是目前开源界集错误监控,日志打点上报,事件数据实时分析最好用的软件了,没有之一。将它部署到 Kubernetes
,再搭配它本身自带的利用 Clickhouse
(大数据实时分析引擎)构建的 Snuba
服务进行数据分析~简直了。(已无敌?)
在实战之前,我们先跟随官方文档初步了解下 Sentry
的整体项目架构。
系列:
- 一起来刷 Sentry For Go 官方文档之 Enriching Events
- Snuba:Sentry 新的搜索基础设施(基于 ClickHouse 之上)
- 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
我是为少。