Sentry 企業(yè)級數(shù)據(jù)安全解決方案 - Relay 操作指南
本篇回顧了我們在自托管外部使用 Relay 時的操作指南,即在您的硬件上運行的 Relay 并將事件轉(zhuǎn)發(fā)到 sentry.io。
注意事項
- 我們建議使用官方提供的 Docker 鏡像(getsentry/Relay)運行 Relay,該鏡像位于 DockerHub 上,并帶有 Git 修訂標識符,而不是從源代碼構(gòu)建。
- https://hub.docker.com/r/getsentry/relay/
- 我們建議至少運行兩個 Relay 實例(容器),并在它們前面使用反向代理(例如 HAProxy 或 Nginx),以提高可用性并簡化 Relay 更新。
- https://www.haproxy.org/
- https://nginx.org
- 要監(jiān)控您的 Relay 設置,請配置 日志記錄, 指標, 和 健康檢查。
- https://docs.sentry.io/product/relay/monitoring/#logging
- https://docs.sentry.io/product/relay/monitoring/#metrics
- https://docs.sentry.io/product/relay/monitoring/#health-checks
系統(tǒng)要求和建議
以下建議假設 Relay 在 Docker 中運行。
資源 | 建議 |
---|---|
CPU |
|
內(nèi)存 |
|
網(wǎng)絡 |
|
存儲 |
|
Relay 是一個多線程應用程序,它試圖利用所有可用的 CPU 內(nèi)核。因此,Sentry 強烈建議在多核 CPU 上運行 Relay。如果您的設置預計每秒處理 100 個以上的請求,我們建議在至少四 (4) 個 CPU 內(nèi)核上運行 Relay。默認情況下,每個 Relay 實例將使用可用內(nèi)核的總數(shù)來調(diào)整其線程池的大小。通過配置 limits.max_thread_count 來調(diào)整此行為。
示例配置
此示例配置設置基本日志記錄和指標設置,以及更改默認并發(fā)級別。
- ---
- relay:
- # The upstream hostname is taken from any of your DSNs.
- # Go to your Project Settings, and then to "Client Keys (DSN)" to see them.
- upstream: https://___ORG_INGEST_DOMAIN___.
- host: 0.0.0.0
- port: 3000
- logging:
- level: info
- format: json
- metrics:
- statsd: 127.0.0.1:8126
- prefix: relay
- limits:
- # Base size of various internal thread pools. Defaults to the number of logical CPU cores
- max_thread_count: 8
有關(guān)所有可用選項的詳細說明,請參閱配置選項頁面。
性能調(diào)優(yōu)
Relay 提供了多種配置選項。與其他選項相比,更改某些選項對 Relay 的行為的影響更大。以下列表列出了當您想要根據(jù)組織的環(huán)境和工作負載調(diào)整 Relay 時應首先檢查的幾個選項:
- limits.max_concurrent_requests (default: 100)
您的 Relay 實例可以發(fā)送到上游 (Sentry) 的并發(fā)請求數(shù)。如果您的事件量或 Sentry 的連接延遲很高,您可以增加此值以獲得額外的吞吐量,盡管增加的代價是額外的網(wǎng)絡連接。
- cache.event_buffer_size (default: 1000)
在開始拒絕新事件之前,Relay 可以在其本地隊列中緩沖多少事件。例如,當網(wǎng)絡問題阻止 Relay 將接收到的消息轉(zhuǎn)發(fā)到 Sentry 時,增加此值也會增加 Relay 的潛在內(nèi)存消耗。
- cache.event_expiry (in seconds, default: 600)
在丟棄事件之前,Relay 可以將緩沖的事件保留在內(nèi)存中的時間。如果您預計 Relay 可能需要在內(nèi)存中保留事件的時間比默認值長,則可以增加此值。
- cache.project_expiry (in seconds, default: 300)
為了保持正常運行,Relay 會定期從 Sentry 上游獲取項目配置。此設置控制 Relay 獲取該配置的頻率。您可以減小此值以使配置傳播更加頻繁。例如,如果您稍后在 Sentry 的項目設置中更改數(shù)據(jù)清理選項,您的 Relay 實例將更快地意識到這些更改。
- cache.project_grace_period (in seconds, default: 0)
項目配置過期后仍可使用多長時間。當上游無法訪問時,增加此值可能會有所幫助;例如,由于網(wǎng)絡問題。
請求路由
SDK 在一組端點上與 Sentry 通信。Relay 提供相同的 API 以成為無縫替代品。這需要一組端點可以訪問:
- /api//envelope/
- /api//minidump/
- /api//security/
- /api//store/
- /api//unreal/
根據(jù) SDK 或客戶端,對這些端點的請求使用壓縮內(nèi)容編碼(compressed content-encoding)或分塊傳輸編碼(chunked transfer-encoding)執(zhí)行。根據(jù) Relay 前面的基礎(chǔ)設施,請檢查以下 HTTP 頭設置是否正確:
- Host: 到此 Relay 的公共主機名
- X-Forwarded-For: 到客戶端 IP 地址
- X-Sentry-Auth: 客戶端提供的值
代理通常為請求設置默認的最大 body 大小。尤其是原生崩潰報告和附件可能會超出這些限制。我們建議將最大客戶端 body 大小配置為 100MB。
在內(nèi)部,Relay 向已配置的上游發(fā)出請求以轉(zhuǎn)發(fā)數(shù)據(jù)并檢索項目配置。我們 強烈建議 不要限制這些請求。目前,Relay 向以下端點發(fā)出請求以進行基本操作:
以上所有端點:
- /api/0/relays/projectconfigs/
- /api/0/relays/publickeys/
- /api/0/relays/register/challenge/
- /api/0/relays/register/response/
- 【責任編輯:武曉燕 TEL:(010)68476606】