成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Sentry 監控 - Snuba 數據中臺架構簡介(Kafka+Clickhouse)

安全 應用安全 中臺 Kafka
Snuba 是一種在 Clickhouse 之上提供豐富數據模型以及快速攝取消費者(直接從 Kafka 獲取數據)和查詢優化器的服務。

[[427651]]

本文轉載自微信公眾號「黑客下午茶」,作者為少。轉載本文請聯系黑客下午茶公眾號。

 Snuba 是一種在 Clickhouse 之上提供豐富數據模型以及快速攝取消費者(直接從 Kafka 獲取數據)和查詢優化器的服務。

Snuba 最初的開發目的是取代 Postgres 和 Redis 的組合,以搜索和提供有關 Sentry 錯誤的聚合數據。從那時起,它已經演變成目前的形式,在多個數據集上支持大多數與時間序列相關的 Sentry 功能。

功能

  • 為 Clickhouse 分布式數據存儲提供數據庫訪問層。
  • 提供一個圖形邏輯數據模型,客戶端可以通過 SnQL 語言查詢,該語言提供類似于 SQL 的功能。
  • 在單個安裝中支持多個單獨的數據集。
  • 提供基于規則的查詢優化器。
  • 提供一個遷移系統,將 DDL 更改應用于單節點和分布式環境中的 Clickhouse。
  • 直接從 Kafka 攝取數據
  • 支持時間點查詢和流式查詢。

Sentry 中的一些用例:

  • events 數據集為 Issue Page 等功能提供支持。此處的搜索功能由 Snuba 以及所有聚合(aggregation)函數提供支持。
  • discover 數據集為所有性能監控(Performance Monitoring)相關功能提供支持。
  • sessions 數據集為發布(Releases)功能提供支持。具體來說,該數據集會攝取大量數據點并存儲預先聚合的數據,以允許對大量數據進行快速查詢。
  • outcomes 數據集為統計頁面(Stats page)提供支持。

開始使用 Snuba

這是在 Sentry 開發環境中快速啟動 Snuba 的指南。

必要條件

Snuba 假設如下:

  1. 一個 Clickhouse 服務器端點位于 CLICKHOUSE_HOST(默認 localhost)。
  2. 在 REDIS_HOST(默認 localhost)上運行的 redis 實例。在端口 6379 上。

讓這些服務運行的快速方法是設置 sentry,然后使用:

  1. sentry devservices up --exclude=snuba 

請注意,Snuba 假設一切都在 UTC 時間運行。否則,您可能會遇到時區不匹配的問題。

Sentry + Snuba

在 ~/.sentry/sentry.conf.py 中添加/更改以下幾行:

  1. SENTRY_SEARCH = 'sentry.search.snuba.EventsDatasetSnubaSearchBackend' 
  2. SENTRY_TSDB = 'sentry.tsdb.redissnuba.RedisSnubaTSDB' 
  3. SENTRY_EVENTSTREAM = 'sentry.eventstream.snuba.SnubaEventStream' 

運行:

  1. sentry devservices up 

訪問原始 clickhouse client(類似于 psql):

  1. docker exec -it sentry_clickhouse clickhouse-client 

數據寫入表 sentry_local: select count() from sentry_local;

設置

設置可以在 settings.py 中找到

  • CLUSTERS:提供集群列表以及應該在每個集群上運行的主機名(hostname)、端口(port)和存儲集(storage sets)。每個集群也設置了本地與分布式(Local vs distributed)。
  • REDIS_HOST:redis 正在運行此處。

Snuba 架構概述

Snuba 是一個由 Clickhouse 支持的面向時間序列的數據存儲服務,它是一個列式存儲分布式數據庫,非常適合 Snuba 服務的查詢類型。

  • https://clickhouse.tech/

數據完全存儲在 Clickhouse 表和物化(materialized)視圖中,它通過輸入流(目前只有 Kafka topic)攝取,并且可以通過時間點查詢或流式查詢(subscriptions)進行查詢。

存儲

之所以選擇 Clickhouse 作為后備存儲,是因為它在 Snuba 需要的實時性能、分布式和復制性質、存儲引擎方面的靈活性和一致性保證之間提供了良好的平衡。

Snuba 數據存儲在 Clickhouse 表和 Clickhouse 物化視圖(materialized views)中。根據表的目標使用多個 Clickhouse 存儲引擎。

  • https://clickhouse.tech/docs/en/engines/table-engines/

Snuba 數據組織在多個數據集中,這些數據集表示數據模型的獨立分區。更多細節見 Snuba 數據模型部分。

攝取

Snuba 不提供用于插入行的 api 端點(除非在調試模式下運行)。數據從多個輸入流加載,由一系列消費者處理并寫入 Clickhouse 表。

一個 consumer 消費一個或多個 topic 并寫入一個或多個表。到目前為止,還沒有多個消費者寫入表。這允許下面討論的一些一致性保證。

數據攝取(Data ingestion)在批處理中最有效(對于 Kafka 但尤其是對于 Clickhouse)。我們的 consumer 支持批處理并保證從 Kafka 獲取的一批事件至少傳遞給 Clickhouse 一次。通過正確選擇 Clickhouse 表引擎對行進行重復數據刪除,如果我們接受最終一致性,我們可以實現恰好一次語義。

查詢

最簡單的查詢系統是時間點。查詢以 SnQL 語言(SnQL 查詢語言)表示,并作為 HTTP post 調用發送。查詢引擎處理查詢(Snuba 查詢處理中描述的過程)并將其轉換為 ClickHouse 查詢。

流式查詢(通過訂閱引擎完成)允許客戶端以推送方式接收查詢結果。在這種情況下,HTTP 端點允許客戶端注冊流查詢。然后訂閱 Consumer 消費到用于填充相關 Clickhouse 表以進行更新的 topic,通過查詢引擎定期運行查詢并在訂閱 Kafka topic 上生成結果。

數據一致性

不同的一致性模型在 Snuba 中并存以提供不同的保證。

默認情況下,Snuba 是最終一致的。運行查詢時,默認情況下,不能保證單調讀取(monotonic reads),因為 Clickhouse 是多領導者(multi-leader),查詢可以命中任何副本,并且不能保證副本是最新的。此外,默認情況下,不能保證 Clickhouse 會自行達到一致狀態。

通過強制 Clickhouse 在執行查詢之前達到一致性(FINAL keyword),并強制查詢命中 consumer 寫入的特定副本,可以在特定查詢上實現強一致性。這本質上使用 Clickhouse,就好像它是一個單一的領導系統(single leader system),它允許順序一致性(Sequential consistency)。

Sentry 部署中的 Snuba

本節解釋了 Snuba 在展示主要數據流的 Sentry 部署中扮演的角色。如果您單獨部署 Snuba,這對您沒有用處。

Errors 和 Transactions 數據流

圖表頂部的主要部分說明了 Events 和 Transactions 實體的攝取過程。這兩個實體為 Sentry 和整個 Performance 產品中的大多數問題/錯誤(issue/errors)相關功能提供服務。

只有一個 Kafka topic(events)在 errors 和 transactions 之間共享,為這條管道提供信息。此 topic 包含 error 消息和 transaction 消息。

Errors consumers 使用 events topic,在 Clickhouse errors 表中寫入消息。提交后,它還會生成關于 snuba-commit-log topic 的記錄。

錯誤警報由 Errors Subscription Consumer 生成。這是同步消費者(synchronized consumer),它同時消費主 events topic 和 snuba-commit-log topic,因此它可以與主 consumer 同步進行。

synchronized consumer 然后通過查詢 Clickhouse 生成警報,并在 result topic 上生成結果。

transactions 存在于一個相同但獨立的管道。

Errors 管道還有一個額外的步驟:寫入 replacements topic。Sentry 在 events topic 上產生 Errors mutations(合并/取消合并/再處理/等等)。然后,Errors Consumer 將它們轉發到 replacements topic,并由 Replacement Consumer 執行。

events topic 必須按 Sentry project id 在語義上進行分區,以允許按順序處理項目中的事件。目前為止,這是 alerts 和 replacements 的要求。

Sessions 與 Outcomes

Sessions 和 Outcomes 以非常相似和更簡單的方式工作。特別是 Sessions 增強 Release Health 功能,而 Outcomes 主要向 Sentry 統計頁面提供數據。

兩個管道都有自己的 Kafka topic,Kafka consumer,它們在 Clickhouse 中寫自己的表。

變更數據捕獲管道

這條管道仍在建設中。它使用 cdc topic 并填充 Clickhouse 中的兩個獨立表。

 

責任編輯:武曉燕 來源: 黑客下午茶
相關推薦

2021-10-09 23:33:55

監控

2021-10-11 19:36:08

監控Sentry架構

2021-11-27 23:54:44

監控Snuba數據

2021-11-26 18:53:53

監控數據中臺

2021-12-01 23:59:45

監控Snuba數據中臺

2023-02-13 11:43:15

云原生中間件負載均衡

2023-04-21 13:15:01

2022-03-15 21:38:29

sentry微服務監控

2010-04-11 17:18:14

Windows Pho

2021-09-14 23:50:17

Sentry后端監控

2021-09-27 19:41:31

監控Sentry Alerts

2021-09-26 16:20:04

Sentry Dashboards 數據可視化

2023-10-16 18:51:04

ClickHouse大數據

2019-12-12 10:22:16

大數據平臺大數據安全大數據

2021-09-11 21:02:24

監控Sentry Web性能

2021-09-13 05:00:09

監控Trends 性能

2021-04-22 08:45:38

架構交易中臺

2021-09-16 23:33:41

大數據Sentry監控

2021-11-17 18:38:32

avaScriptSDK調試

2021-09-09 12:28:50

Sentry Web性能監控
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品久久一区二区 | av在线一区二区三区 | 国产乱xxav | 免费三级av| 国产乱码精品一区二区三区忘忧草 | 成人免费淫片aa视频免费 | 国产精品一卡二卡三卡 | 欧美一区二区在线播放 | 久久久999国产精品 中文字幕在线精品 | 国产精品久久久久久久7电影 | 免费国产一区 | 亚洲一区二区三区 | 99热在线观看精品 | 久久一二区 | 欧美视频免费 | 热久久久 | 午夜在线观看视频 | 免费啪啪 | 成人免费小视频 | 日韩不卡一区二区三区 | 欧美日韩精品一区二区天天拍 | 亚洲一区二区三区在线 | 韩国精品在线 | 免费看黄色视屏 | 激情一区二区三区 | 91.com在线观看 | a视频在线 | 特级生活片 | av一区二区三区四区 | 亚洲精品一区二区在线观看 | 日韩在线一区二区三区 | 日韩欧美三区 | 国产a区 | av在线免费观看不卡 | 中文字幕亚洲精品 | 国产精品视频不卡 | 亚洲精品一二三 | 91av视频在线免费观看 | 亚洲视频中文字幕 | www.狠狠操 | 天堂网av在线 |