getsentry/relay
GitHub: getsentry/relay
Sentry 官方的事件转发与摄取代理服务,将 SDK 与服务器之间的部分功能推送到独立代理进程中执行。
Stars: 378 | Forks: 119
# 官方 Sentry Relay
[](https://github.com/getsentry/relay/actions?query=workflow%3ACI+branch%3Amaster)
[](https://github.com/getsentry/relay/releases/latest)
[](https://pypi.python.org/pypi/sentry-relay)
```
#### 快照测试
我们使用 `insta` 进行快照测试。它将作为 `make test` 命令的一部分运行,以验证 schema/protocol 更改。要安装 `insta` 工具来审查快照,请运行:
```
cargo install cargo-insta
```
之后,您就可以通过运行以下命令来审查并自动更新快照文件:
```
cargo insta review
```
如果您对事件 schema/protocol 进行了任何更改,请务必运行此命令。
有关更多信息,请参见 。
### 代码检查
我们使用来自最新稳定通道的 `rustfmt` 和 `clippy` 进行代码格式化和代码检查。为确保这些工具已正确设置并以正确的配置运行,请使用以下 make 目标:
```
# 格式化整个 codebase
make format
# 在整个 codebase 上运行 clippy
make lint
```
### 调试
开发者构建默认不包含调试信息。如果您想将调试器附加到本地 Relay,可以使用提供的 `dev-debug` 配置,命令为 `cargo run --all-features --profile dev-debug`。
### Python 和 C-ABI
新的功能可能还需要添加到 Python 包中。这首先需要在 C ABI 中公开新函数。为此,请参阅 [Relay C-ABI readme](https://getsentry.github.io/relay/relay_cabi/)。
我们强烈建议在**虚拟环境**中开发和测试 Python 包。 ABI 更新并测试完成后,请确保激活 virtualenv 并安装该包,这将构建原生库。有两种方法可以安装它:
```
# 安装 dependencies:
devenv sync
# 安装 release build(推荐):
.devenv/bin/uv pip install -v -e py
# 注意:使用 `direnv allow` 将 .devenv/bin 添加到 PATH,或者
# 你也可以自行安装 uv
# 安装 debug build(安装更快,但运行时慢得多):
RELAY_DEBUG=1 uv pip install -v -e py
```
对于测试,我们使用通用的 `pytest`。同样,请确保您的 virtualenv 处于激活状态,并且已安装了最新版本的原生库。然后,运行:
```
# 创建新的 virtualenv,安装 release build 并运行 tests
make test-python
# 手动运行单个 test
.venv/bin/pytest py/tests -k
```
### 结合 Sentry 使用
要结合现有的 Sentry 开发服务器、自托管的 Sentry 安装或 Sentry SaaS 来开发 Relay,请在项目根目录的 `.relay/config.yml` 中将 upstream 配置为 Sentry 服务器的 URL。例如,在本地开发中将
`relay.upstream` 设置为 `http://localhost:8000/`。
要使用本地开发 Sentry 测试处理模式,请使用以下配置:
```
relay:
# Point to your Sentry devserver URL:
upstream: http://localhost:8000/
# Listen to a port other than 3000:
port: 3001
logging:
# Enable full logging and backtraces:
level: trace
enable_backtraces: true
limits:
# Speed up shutdown on ^C
shutdown_timeout: 0
processing:
# Enable processing mode with store normalization and post data to Kafka:
enabled: true
kafka_config:
- { name: "bootstrap.servers", value: "127.0.0.1:9092" }
- { name: "message.max.bytes", value: 2097176 }
redis: "redis://127.0.0.1"
```
请注意,Sentry 开发服务器也会在端口
`3000` 上以类似配置启动一个处于处理模式的 Relay。该 Relay 不会干扰您的开发构建。为确保 SDK 发送到您的开发实例,请更新 DSN 中的端口:
```
http://@localhost:3001/
```
### 发布管理
我们使用 GitHub actions 来发布新版本。
有两个独立的项目需要发布:
- **Relay 二进制文件**会每月与 `sentry` 一起使用[日历版本控制](https://calver.org/)自动发布(参见 ),因此应该没有理由手动创建发布。话虽如此,也可以通过 ["Release" action](https://github.com/getsentry/relay/actions/workflows/release_binary.yml) 进行手动发布。在运行该 action 之前,请确保 [`CHANGELOG.md`](./CHANGELOG.md) 是最新的。
- **Relay Python 库**连同 C-ABI 会通过 ["Release Library" action](https://github.com/getsentry/relay/actions/workflows/release_library.yml) 发布。在运行该 action 之前,请确保 [`py/CHANGELOG.md`](./py/CHANGELOG.md) 是最新的。点击“Run workflow”并选择一个新版本。我们使用[语义化版本控制](https://semver.org/),并在开发周期内发布。
### 更新日志说明
对于向 _Python 包_公开的更改,请在 `py/CHANGELOG.md` 中添加条目。这包括但不限于事件规范化、PII 脱敏和 protocol。
对于 _Relay 服务器_的更改,请在 `CHANGELOG.md` 中的以下标题下添加条目:
1. `Features`:用于新增的面向用户的功能。
2. `Bug Fixes`:用于面向用户的错误修复。
3. `Internal`:用于内部操作(尤其是处理模式)中的功能和错误修复。
在更新日志条目中,请添加指向此 PR 的链接(建议使用更具描述性的信息):
```
- ${getCleanTitle()}. (${PR_LINK})
```
如果以上均不适用,您可以通过在 PR 描述中添加 `#skip-changelog` 来选择跳过。
标签:Bash脚本, Rust, Sentry, 事件转发, 可视化界面, 搜索引擎查询, 数据代理, 日志收集, 监控代理, 网络流量审计, 逆向工具, 通知系统