Sentry Relay 二次開發除錯簡介

2022-10-08 21:42:32 字數 4817 閱讀 4841

要構建relay,我們需要最新的穩定版rustcrate被拆分為具有多個功能的工作區,因此在執行構建或執行測試時,請始終確保傳遞--all--all-features標誌。processing功能還需要c編譯器和cmake

要安裝開發環境,必須安裝librdkafka並在path上。 在macos上,我們需要使用brew install librdkafka安裝它,因為安裝指令碼使用brew --prefix來確定正確的位置。

儲存庫的根目錄包含乙個makefile,其中包含用於開發的有用命令:

整合測試要求rediskafka在其預設配置中執行。 獲取所有必需服務的最便捷方式是通過sentry devservices,這需要最新的sentry開發環境。

重建和執行relay的最簡單方法是使用cargo。根據配置,您可能需要執行sentry的本地例項。

# 第一次初始化 relay

cargo run --all-features -- config init

# 重建並執行所有功能

cargo run --all-features -- run

標準構建命令也可用作make目標。請注意,發布版本仍會生成除錯資訊。

# 在除錯模式下不進行優化構建。

make build

# 使用發布優化和除錯資訊進行構建。

make release

為了在進行一些更改後快速驗證relay是否編譯,您還可以使用cargo check

cargo check --all --all-features
預設情況下,relay編譯時不使用 processing 模式。 這是用於作為**執行的中繼的配置。有兩個可選功能:

要啟用功能,請將其傳遞給cargo呼叫。例如,要在啟用了processing功能的情況下跨所有workspace crates執行測試,請執行:

cargo run --features=processing
測試套件包括單元測試、整合測試套件和python包的單獨測試套件。單元測試是作為rust crates的一部分實現的,可以通過以下方式執行:

# 測試預設功能

make test-rust

# 為所有功能執行 rust 測試

make test-rust-all

整合測試套件需要python。預設情況下,整合測試套件將建立乙個virtualenv,構建啟用處理的relay二進位制檔案,並執行一組整合測試:

# 建立乙個新的 virtualenv,構建 relay 並執行整合測試

make test-integration

# 手動構建和執行單個測試

make build

.venv/bin/pytest tests/integration -k

我們使用來自最新穩定通道的rustfmtclippy進行**格式化和linting。 要確保正確設定這些工具並使用正確的配置執行,請使用以下make目標:

# 格式化整個**庫

make format

# 在整個**庫上執行 clippy

make lint

潛在地,還需要將新功能新增到python包中。這首先需要在c abi中公開新功能。 為此,請參閱 relay c-abi readme。

我們強烈建議在virtual

environment中開發和測試python包。更新和測試abi後,確保virtualenv處於活動狀態並安裝構建原生庫的包。有兩種安裝方法:

# 安裝發布版本,推薦:

pip install --editable ./py

# 安裝除錯版本,安裝速度更快,但執行時慢得多:

relay_debug=1 pip install --editable ./py

對於測試,我們使用無處不在的pytest。 同樣,確保您的virtualenv處於活動狀態並且已安裝最新版本的原生庫。然後,執行:

# 建立乙個新的 virtualenv,安裝發布版本並執行測試

make test-python

# 手動執行單個測試

.venv/bin/pytest py/tests -k

cargo install systemfd cargo-watch

make devserver

該儲存庫包含用於開發目的的ssl-certificate+private key。它有兩種格式:一種是 (.pem,.cert) 對,一種是.pfx(pkcs #12) 檔案。

密碼,.pfx檔案是password

要使用現有的sentry devserverself-hosted sentry安裝或sentry saas開發relay,請將.relay/config.yml中的upstream配置為sentry serverurl。 例如,在本地開發中將relay.upstream設定為http://localhost:8000/

要使用本地development sentry測試processing模式,請使用以下配置:

relay:

# 指向您的 sentry devserver url:

# 監聽 3000 以外的埠:

port: 3001

logging:

# 啟用完整的日誌記錄和回溯:

level: trace

enable_backtraces: true

limits:

# 在 ^c 上加速 shutdown

shutdown_timeout: 0

processing:

# 啟用儲存規範化的 processing 模式並將資料發布到 kafka:

enabled: true

kafka_config:

- -

redis: "redis:"

請注意,sentry devserver還在processing模式下在埠3000上以類似配置啟動relay。 該relay不會干擾您的開發構建。為確保sdk傳送到您的開發例項,請更新dsn中的埠:

http://@localhost:3001/
我們使用 craft 來發布新版本。有兩個單獨的專案要發布:

日曆化版本

語義版本控制

對於暴露給 python package 的更改,請在py/changelog.md中新增乙個條目。這包括但不限於事件規範化pii 清理協議。對於 relay server 的更改,請在changelog.md的以下標題下新增乙個條目:

features: 用於新的使用者可見功能。

bug fixes: 用於使用者可見的錯誤修復。

internal: 用於內部操作中的功能和錯誤修復,尤其是processing模式。

- $. ($)
如果以上都不適用,您可以通過在pr描述中新增#skip-changelog來選擇退出。

postek二次開發 POSTEK二次開發介面

例項簡介 例項截圖 核心 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using ...

mcms二次開發 YzmCMS二次開發手冊

摘要 yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有一.yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有乙個統一的入口...

mcms二次開發 YzmCMS二次開發手冊

yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有乙個統一的入口。一 基本目錄結構.根目錄 cache 快取目錄 必須可寫入 common 全站公共目錄 必須可寫入 uploads 預設上傳目錄 必須可寫入 yz...