內容整理自官方開發文件
Sentry Relay
通過提供作為應用程式和 sentry.io
之間中間層的獨立服務來提供企業級資料安全性。
Relay
專門設計用於:
- 在將個人身份資訊 (
PII
) 傳送給Sentry
之前,在中心位置對其進行清理 - 在低頻寬或連線受限的地區提高事件響應時間
- 充當將所有
HTTP
通訊限制為自定義域名的組織的不透明代理
託管模式(managed mode)
下的Relay
僅適用於商業和企業計劃。https://sentry.io/pricing/
Relay 用例
Relay
旨在支援對個人身份資訊 (PII
) 的資料清理、響應時間和企業域管理具有特定企業安全要求的組織。
PII 資料清理
Sentry
已經在兩個地方清除了 PII
:
- 在傳送事件之前在
SDK
中 - 抵達
Sentry
的基礎設施後
Relay
新增了第三個選項,可以在將資料傳送到 Sentry
之前在一箇中心位置清理資料。
要選擇正確的資料清理位置,請考慮:
-
如果您更喜歡在一箇中心位置配置資料清理,您可以讓
Sentry
處理資料清理。到達後,Sentry
立即應用伺服器端清理並保證永遠不會儲存個人資訊。 -
如果您無法將
PII
傳送到您的基礎設施之外,但您仍希望在一個集中的位置配置資料清理,請配置您的 SDK 以將事件傳送到Relay
。Relay
使用Sentry
中配置的隱私設定,並在將資料轉發到Sentry
之前清理PII
。 -
如果您必須執行嚴格的資料隱私要求,您可以將
SDK
配置為使用before-send
hooks 清除 PII,從而防止在裝置上收集資料。這可能需要您在應用程式中複製相同的邏輯,並可能影響效能。
響應時間
Relay
對請求的響應非常快。在您的基礎設施附近安裝 Relay
將進一步縮短髮送事件時的響應時間。這種安裝方法可以特別減少偏遠地區的往返時間。
企業域管理
預設情況下,SDK
需要使用指向 sentry.io
的資料來源名稱 (DSN
) 進行配置。如果您需要將所有 HTTP
通訊限制為自定義域名,Relay
可以充當不透明代理,將事件可靠地轉發到 Sentry
。
入門
開始使用 Relay 就像使用預設設定一樣簡單。您還可以配置 Relay
以滿足您組織的需求。檢視配置選項頁面以獲取有關操作場景的詳細討論。
Relay server 稱為
relay
。從 GitHub Releases 下載二進位制檔案。DockerHub 上提供了一個 Docker 映象。
初始化配置
要建立初始配置,請使用 Relay
的 relay config init
命令,
該命令將配置檔案放在當前工作目錄下的 .relay
資料夾中。
在
Docker
中,使用Docker
提供的標準機制提供配置目錄,通過掛載 Docker volumes 或構建新容器並複製檔案。
# 調整配置目錄的許可權
docker run --rm -it \
-v $(pwd)/config/:/work/.relay/ \
--entrypoint bash \
getsentry/relay \
-c 'chown -R relay:relay /work/.relay'
# 生成配置
docker run --rm -it \
-v $(pwd)/config/:/work/.relay/ \
getsentry/relay \
config init
選擇預設配置以建立最小配置檔案。
您可以通過選擇 "create custom config" 並自定義這些引數來選擇覆蓋預設設定:
mode
設定,用於配置Relay
執行的主要模式。有關可用Relay
模式的更多資訊,請參閱 Relay 模式。
目前,只有
proxy
和static
模式可供所有組織使用。managed
模式下的 Relay 僅適用於商業和企業計劃。https://docs.sentry.io/product/relay/modes/
-
upstream
設定配置Relay
將事件轉發到的伺服器(預設為主要的sentry.io
URL)。 -
port
和host
設定配置Relay
將偵聽的TCP
埠。這是SDK
傳送事件的地址。 -
tls
設定配置TLS
支援(HTTPS
支援),當需要保護SDK
和Relay
之間的通訊時使用。
設定記錄在 .relay/config.yml
中。請注意,所有配置值都是可選的,並且預設為以下設定:
relay:
mode: managed
upstream: "https://sentry.io/"
host: 0.0.0.0
port: 3000
tls_port: ~
tls_identity_path: ~
tls_identity_password: ~
配置在配置選項中有完整記錄。
建立憑證
不適用於
proxy
或static
模式。
除了 config.yml
,init
命令還建立了一個憑證檔案 credentials.json
,它位於同一個 .relay
目錄中。此檔案包含 Relay
用於與上游伺服器進行身份驗證的公鑰和私鑰。
因此,必須保護此檔案不被未經授權的實體修改或檢視。
典型的憑據檔案類似於此示例:
{
"secret_key": "5gkTAfwOrJ0lMy9aOAOmHKO1k6gd8ApYkAInmg5VfWk",
"public_key": "nDJI79SbEYH9-8NEJAI7ezrgYfoIPW3Bnkg00k1z0fA",
"id": "cde0d72e-0c4e-4550-a934-c1867d8a177c"
}
在 managed
模式下執行時,使用 public_key
向上遊伺服器註冊您的 Relay
。
使用 Sentry 註冊 Relay
不適用於
proxy
或static
模式。
為了在 managed
模式下執行,Relay
從 Sentry
中的組織和專案設定中提取 PII
剝離、過濾和速率限制的配置。
由於這些設定可能包含敏感資訊,因此它們的訪問受到 Sentry
的限制並需要授權。
向 Sentry
註冊 Relay
:
-
通過檢查
credentials.json
檔案或執行以下命令來複制公鑰的內容:docker run --rm -it \ -v $(pwd)/config/:/work/.relay/ \ getsentry/relay \ credentials show
-
單擊
Sentry
主導航中的Settings
,然後選擇Relays
。
- 點選
New Relay Key
新增金鑰並儲存:
此過程向 Sentry
註冊 Relay
,以便準備傳送訊息。請參閱配置選項以瞭解有關 Relay
配置選項的更多資訊。
執行 Relay
在 Sentry
註冊 Relay
後,它就可以執行了:
docker run --rm -it \
-v $(pwd)/config/:/work/.relay/ \
-p 3000:3000 \
getsentry/relay \
run
在預設配置下,Relay
發出類似於以下內容的日誌輸出:
INFO relay::setup > launching relay from config folder .relay
INFO relay::setup > relay mode: managed
INFO relay::setup > relay id: cde0d72e-0c4e-4550-a934-c1867d8a177c
INFO relay::setup > public key: nDJI79SbEYH9-8NEJAI7ezrgYfoIPW3Bnkg00k1z0fA
...
INFO relay_server::actors::upstream > relay successfully registered with upstream
有關如何配置 Relay
的日誌記錄的更多資訊,請參閱 Logging 頁面。
如果您移動了 config
資料夾(例如,出於安全原因),請使用 --config
選項指定位置:
docker run --rm -it \
-v $(pwd)/config/:/etc/relay/ \
-p 3000:3000 \
getsentry/relay \
run --config /etc/relay/
傳送測試事件
一旦 Relay
執行並通過 Sentry
進行身份驗證,將測試事件傳送到您組織中的專案之一。
通過在 Settings > Projects > {YOUR_PROJECT_NAME} > Client Keys (DSN)
導航到您的專案設定來獲取您的專案的 DSN
,然後選擇一個現有的 DSN
,它看起來類似於:
https://12345abcdef10111213141516171819@o1.ingest.sentry.io/2345
接下來,替換部分 DSN
以匹配 Relay
可訪問的地址。例如,如果 Relay
偵聽 http://localhost:3000
,請將 DSN
的 protocol
和 host
更改為:
http
://12345abcdef10111213141516171819@
localhost:3000
/2345
在您的 SDK 配置中使用新的 DSN。要對此進行測試,您可以使用 sentry-cli
(安裝說明)傳送訊息:
export SENTRY_DSN='http://12345abcdef10111213141516171819@127.0.0.1:3000/2345'
sentry-cli send-event -m 'A test event'
幾秒鐘後,該事件應出現在您專案的問題流(issues stream)
中。
系列
- Docker Compose 部署與故障排除詳解
- 1 分鐘快速使用 Docker 上手最新版 Sentry-CLI - 建立版本
- 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps
- Sentry For React 完整接入詳解
- Sentry For Vue 完整接入詳解
- Sentry-CLI 使用詳解
- Sentry Web 效能監控 - Web Vitals
- Sentry Web 效能監控 - Metrics
- Sentry Web 效能監控 - Trends
- Sentry Web 前端監控 - 最佳實踐(官方教程)
- Sentry 後端監控 - 最佳實踐(官方教程)
- Sentry 監控 - Discover 大資料查詢分析引擎
- Sentry 監控 - Dashboards 資料視覺化大屏
- Sentry 監控 - Environments 區分不同部署環境的事件資料
- Sentry 監控 - Security Policy 安全策略報告
- Sentry 監控 - Search 搜尋查詢實戰
- Sentry 監控 - Alerts 告警
- Sentry 監控 - Distributed Tracing 分散式跟蹤
- Sentry 監控 - 面向全棧開發人員的分散式跟蹤 101 系列教程(一)
- Sentry 監控 - Snuba 資料中臺架構簡介(Kafka+Clickhouse)
- Sentry 監控 - Snuba 資料中臺架構(Data Model 簡介)
- Sentry 監控 - Snuba 資料中臺架構(Query Processing 簡介)
- Sentry 官方 JavaScript SDK 簡介與除錯指南
- Sentry 監控 - Snuba 資料中臺架構(編寫和測試 Snuba 查詢)
- Sentry 監控 - Snuba 資料中臺架構(SnQL 查詢語言簡介)
- Sentry 監控 - Snuba 資料中臺本地開發環境配置實戰
- Sentry 監控 - 私有 Docker Compose 部署與故障排除詳解
- Sentry 開發者貢獻指南 - 前端(ReactJS生態)
- Sentry 開發者貢獻指南 - 後端服務(Python/Go/Rust/NodeJS)
- Sentry 開發者貢獻指南 - 前端 React Hooks 與蟲洞狀態管理模式
- Sentry 開發者貢獻指南 - SDK 開發(效能監控)
公眾號:黑客下午茶