從前面幾篇的 demo 中,我們可以看到,Sentry 作為一個強大的監控平台,主要聚焦在錯誤捕捉和性能監控,通過收集 trace 和 issue 來幫助開發者分析應用的行為和潛在問題。
抽象來說,Sentry的設計哲學是認為:增強應用可靠性和用戶體驗,就是對錯誤作即時監控吿警、以及相應的數據分析。而如果開發者需要其他維度的應用數據,如機器性能、log存取等等,就配合其他相關的監控工具就好了。
不過,我們在解析 Sentry SDK 的時候會發現,它的擴展能力、是基於在 SDK 初始化時引入各種所需的 integrations
,來幫助我們擴展 Sentry 的功能範圍。例如,在前端應用中,我們可以引入 reactRouterV6BrowserTracingIntegration
來監控單頁應用的路由行為;而在後端的 Node.js 服務中,則可以引入 postgresIntegration
來追蹤 PostgreSQL 資料庫的執行情況(最新版本是自動引入)。
而許多 integrations
都是來自於 OpenTelemetry,一個開放的標準和工具集,像是:
@opentelemetry/instrumentation-http
@opentelemetry/instrumentation-ioredis
@opentelemetry/instrumentation-mongodb
這些來自 OpenTelemetry 的 integrations 幫助 Sentry 更加細緻地追蹤應用中的各個關鍵操作點,讓我們不僅能夠監控錯誤,還可以更深層次地了解系統的運行情況。那麽,Opentelemetry 是什麼呢?
OpenTelemetry 是一個開源的協議和框架,目的是為系統提供標準化的追蹤(trace)、性能指標(metrics)和日誌(logs)。它並不屬於單一公司,而是由全球許多開源貢獻者共同開發,並擁有多語言 SDK 支持,能夠應用於各種不同的環境和應用場景。
OpenTelemetry 的強大之處在於其可擴展性和靈活性,讓開發者能夠定義和收集適合自己需求的觀測數據。這些數據可以被導出到不同的監控平台中,包括 Sentry。實際上,Sentry 通過 OpenTelemetry 的標準和依賴庫來收集更豐富的 trace 資訊,這樣不僅提升了 Sentry 本身對應用錯誤的監控能力,還擴展到更深入的性能監控領域。例如我們之前的demo---在 Node.js 應用中,Sentry 通過 @opentelemetry/instrumentation-pg
等依賴來追蹤 PostgreSQL 資料庫的執行情況,捕捉資料庫查詢的 spans。
我們了解到,Sentry專注於即時的錯誤捕捉和基於trace的性能分析;而 OpenTelemetry 作為一個開源協議和框架,為 Sentry 提供了更多的監控能力和數據來源。
接下來,我們會嘗試深入分析 Opentelemetry的生態系。