Sentry 監控 - Discover 事件大數據查詢分析引擎


系列

目錄

  • Discover 查詢
    • 預置查詢
    • 已保存查詢
      • 構建新查詢
      • 搜索查詢
      • 排序查詢
      • 編輯查詢
      • 共享查詢
      • 刪除查詢
    • 查詢結果
    • 事件詳情
  • 查詢生成器
    • 按全局選擇標題過濾
    • 按搜索條件過濾
      • 語法
      • Tag Summary 過濾
    • 按交互式圖表過濾
      • 顯示選項
      • Y 軸選項
    • 按表列過濾
      • 疊加函數
      • 單元格過濾
      • 添加方程式
      • 排序列
    • 其他查詢操作
      • 編輯查詢
      • 分享查詢
      • 導出 CSV
      • 刪除查詢
    • 添加查詢方程式
      • 添加方程式
      • 方程式指南
      • 示例方程式
        • 計算完成事務的百分比
        • 計算自定義 Apdex
        • 查找最大平均非數據庫時間
  • 通過 Discover 發現趨勢
    • 通過 Issues Discover
    • 通過 Errors Discover
      • URL 錯誤
      • 未處理的錯誤
      • 錯誤最多的文件
      • 每個 Release 的錯誤
      • 按小時或按天計算的錯誤
    • 其他用例

Discover 查詢

Discover 通過構建和豐富您的錯誤數據,提供跨環境數據的可見性。您可以查詢和解鎖對整個系統健康狀況的洞察,並在一個地方獲得關鍵業務問題的答案。

Discover 主頁提供所有已保存和預構建查詢的視圖,因此您可以快速深入到需要立即關注的區域。 例如,如果在過去 24 小時內出現錯誤查詢的峰值,用戶可以先進行調查。 每個查詢都保存為一張卡片,顯示數據的匯總視圖。

  • 顯示名稱
  • 搜索條件
  • 創建者
  • 圖表快照
  • 日期范圍
  • 最后編輯

預置查詢

帶有 Sentry 圖標的查詢卡是預先構建的,無法移除。

  • All Events:用戶可以查看任何項目組的原始錯誤流。 這取代了事件功能,使用戶能夠添加其他列和更改分組以實現所需的細分。
  • Errors by Title:用戶可以通過原始錯誤總數以及受影響的用戶總數來查看最常發生的錯誤。
  • Errors by URL:用戶可以看到產生最多錯誤和不同類型問題的頁面。提醒一下,問題是一組指紋事件。 有關更多詳細信息,請參閱有關指紋的完整文檔。

已保存查詢

帶有用戶頭像的查詢卡表示已保存的查詢。創建已保存查詢的用戶將在查詢卡上顯示他們的頭像。 保存的查詢可供組織中的任何人查看,並且不限於用戶帳戶。

構建新查詢

Discover 主頁,您可以通過三種方式構建查詢。

  • 單擊 Build a new query(構建新查詢)
  • 單擊現有已保存查詢卡的省略號以Duplicate(復制)
  • 進入任何現有查詢
    1. 點擊右上角的Save as(另存為)...
    2. 輸入顯示名稱
    3. 單擊Save(保存)

應用新的搜索條件或表列來修改查詢結果。保存查詢並分配自定義顯示名稱。 有關完整的詳細信息,請參閱有關查詢生成器的文檔。

搜索查詢

尋找特定查詢?使用主頁上的搜索欄查找查詢名稱。

排序查詢

右上角的下拉菜單將允許您按屬性排序。

  • 最近編輯Recently Edited(默認)
  • 我的查詢My Queries
  • 查詢名稱Query Name (A-Z)
  • 創建日期Date Created(最新)
  • 創建日期Date Created(最舊)
  • 最過時Most Outdated

編輯查詢

如果您需要編輯這些查詢中的任何一個,請進入查詢,進行所需的更改,右上角會出現一個按鈕,要求您保存/更新(save/update)查詢。請記住,對查詢條件的編輯不會自動保存。

要重命名已保存的查詢,請單擊標題旁邊的鉛筆圖標並輸入所需的顯示名稱。 單擊“enter”或點擊區域外以保存更新的名稱。

分享查詢

隨時分享您的疑問。您可以與也有權訪問同一組織的其他用戶共享 URL。隨着查詢的每個部分的構建,結果和 URL 都會更新,以便可以在電子郵件、聊天等中共享正在進行的搜索。

刪除查詢

Discover 主頁上,每個保存的查詢卡都有一個省略號,可以打開上下文菜單。 從這里,您可以刪除查詢。這個動作是不可逆的。您還可以通過單擊右上角的垃圾桶在“查詢結果(Query Results)”視圖中刪除查詢。

查詢結果

要查看查詢結果,請單擊任何查詢卡。您將找到圖表、表格和可切換的標簽摘要(或分面圖facet map)。 頂部的搜索欄可讓您查看輸入的搜索條件。 該表反映了具有可排序列的事件。

每個表格單元格都有一個動態上下文菜單,允許您根據您的選擇通過自動更新搜索欄或表格列來繼續探索您的數據。諸如在過濾器中添加或排除值、打開選定版本或查看底層問題堆棧等操作:

如果第一列顯示圖標(如上所示),則表示事件已堆疊。單擊該圖標可查看完整的事件列表。 每個事件都有一個 event ID,您可以單擊以了解更多詳細信息。 有關如何構建查詢的更多信息,請轉到查詢構建器。

事件詳情

Discover > [Saved Query] > Event Detail 導航到事件詳細信息頁面。 您將找到有關單個事件的所有相關詳細信息。對於每個事件,您將看到 ID、時間戳(timestamp)和鏈接以查看 Sentry 收到的規范化 JSON payload

事件詳細信息(Event Detail)視圖因事件類型(錯誤error、事務transaction、csp)而異。 事務事件詳細信息可能與錯誤事件詳細信息(如上所示)具有完全不同的視圖。 例如,錯誤可能會在側欄中顯示相關問題。 這使您可以快速瀏覽該問題的事件量,並讓您快速導航到相關問題。 您還可以在這些視圖中找到堆棧跟蹤(stack traces)、面包屑(breadcrumbs)等。

查詢生成器

Discover 主頁,您可以通過三種方式構建查詢。

  • 單擊 Build a new query(構建新查詢)
  • 單擊現有已保存查詢卡的省略號以Duplicate(復制)
  • 進入任何現有查詢
    1. 點擊右上角的Save as(另存為)...
    2. 輸入顯示名稱
    3. 單擊Save(保存)

有四個主要構建塊會影響已保存查詢的結果。您可以結合使用這些方法來縮小搜索范圍。

  1. Global Selection Header(全局選擇標題)
  2. Search Conditions(搜索條件)
  3. Interactive Graph(交互式圖表)
  4. Table Columns(表格列)

按全局選擇標題過濾

在頁面頂部指定要放大的項目(projects)、環境(environments)和日期范圍(date range)。這也可以在 Sentry 的其他部分作為頂級過濾器(top level filter)找到。

按搜索條件過濾

所有事件都有內置的關鍵字段(key fields)或自定義標簽(custom tags)。使用搜索欄輸入這些 key 並為其分配值。這將過濾您的事件列表。這是內置的 key fields

General(常用) id (string)
issue.id (number)
message (string)
project.id (number)
release (string)
release.package (string)
release.version (string)
release.build (string)
title (string)
platform.name (string)
environment (string)
event.type(string)
location (string)
timestamp (datetime)
timestamp.to_hour (datetime)
timestamp.to_day (datetime)
Device(設備) device.arch (string)
device.battery_level (number)
device.brand (string)
device.charging (string)
device.locale (string)
device.name (string)
device.online (string)
device.orientation (string)
device.simulator (string)
device.uuid (string)
Geo(地理) geo.city (string)
geo.country_code (string)
geo.region (string)
HTTP http.method (string)
http.url (string)
OS os.build (string)
os.kernel_version (string)
SDK sdk.name (string)
sdk.version (string)
Stack traces(堆棧追蹤) error.handled (string)
error.mechanism (string)
error.type (string)
error.value (string)
stack.abs_path (string)
stack.colno (number)
stack.filename (string)
stack.function (string)
stack.in_app (boolean)
stack.lineno (number)
stack.module (string)
stack.package (string)
stack.stack_level (number)
User attributes(用戶屬性) user (string)
user.email (string)
user.id (string)
user.ip (string)
user.username (string)

語法

查詢生成器語法與 Sentry 的搜索語法相同。 從上方輸入關鍵字段(key field)或自定義標記(custom tag)后,您可以使用任何引用的語法。例如,count() 為您提供事件發生的次數。這可以用以下方式編寫:

  • 完全匹配(等於):count():99
  • 上限(小於或等於):count():<99count():<=99
  • 下限(大於或等於):count():>99count():>=99
  • 多個邊界(大於和小於):count():>10 count():<20

在過濾器之間使用 ORAND 搜索條件。但是 OR 不能用於聚合(aggregate)和非聚合(non-aggregate)過濾器之間。 有關這些條件的更多詳細信息,請參閱使用 ORAND

您還可以通過將值放在列表中來搜索同一 key 的多個值。例如,“x:[value1, value2]” 將找到與 “x:value1 OR x:value2” 相同的結果。您可以在我們涵蓋同一 Key 上的多個值的內容中了解更多信息。

Tag Summary 過濾

每個事件都有一個標簽值(tag values)列表。標簽摘要分面圖(或分面圖)是按頻率排序的前 10key 的可視化。最常見的標簽值(tag value)直接列在說明(description)和百分比(percentage)的欄上方。 將鼠標懸停在欄中的每個部分上以查看該標簽的確切分布。

單擊這些部分中的任何一個以進一步優化您的搜索。例如,單擊瀏覽器欄中代表 Chrome 的部分將自動更新 tag summary,然后將 Chrome 添加到搜索條件中。

按交互式圖表過濾

每個查詢都有一個交互式圖表,可反映下表中顯示的數據。 要放大,只需在要調查的區域上單擊並拖動即可。 您還可以自定義顯示和 Y 軸。 這將與您的查詢一起保存。

顯示選項

  • Total Period(總周期)
  • Previous Period(上一期)
  • Release Markers(發布版本標記)
  • Top 5 Period(前5期)
  • Total Daily(每日總計)
  • Top 5 Daily(每日前5)

Y 軸選項

  • Count
  • Average Transaction Duration(平均事務持續時間)
  • p75
  • p95
  • Unique User Count(唯一用戶數)

按表列過濾

在表格上方,單擊列(Columns)以打開 modal。這將顯示結果表中所有列的列表。 您可以添加、刪除和移動基本關鍵字段(basic key field)列或自定義標簽(custom tags)列。 使用相同的視圖,您還可以使用以下任何函數堆疊事件:

疊加函數

  • avg(...)
  • count(...)
  • count_unique(...)
  • max(...)
  • min(...)
  • sum(...)

每個函數都會要求您分配一個參數。有些是必需的,而有些則是可選的。函數將基於相同的值堆疊事件。 如果未應用任何函數,則查詢結果中的事件將單獨列出。 完成列編輯后,單擊“應用(Apply)”,結果將反映在查詢結果中。 請記住,如果添加了太多列,表格可能會水平滾動。

單元格過濾

表格中的每個單元格都會在懸停時出現一個省略號。 這將打開一個上下文菜單,其中包含取決於值類型的附加過濾功能。 例如,您可以通過單擊“添加到過濾器(Add to filter)”有選擇地將 transaction 定位到搜索條件欄。

添加方程式

您還可以使用表列作為方程式變量向查詢添加方程式,結果將顯示在查詢結果表中。在添加查詢方程式中了解更多信息。

排序列

單擊要排序的列 header。向下箭頭按降序對列進行排序,向上箭頭按升序對列進行排序。 這可能會刷新表格。

其他查詢操作

編輯查詢

如果您需要編輯這些查詢中的任何一個,請進入查詢,進行所需的更改,右上角會出現一個按鈕,要求您保存/更新(save/update)查詢。請記住,對查詢條件的編輯不會自動保存。

要重命名已保存的查詢,請單擊標題旁邊的鉛筆圖標並輸入所需的顯示名稱。單擊 "enter" 或單擊區域外進行確認。

分享查詢

隨時分享您的疑問。 您可以與也有權訪問同一組織的其他用戶共享 URL。 隨着查詢的每個部分的構建,結果會更新,URL 也會更新,以便可以在電子郵件、聊天等中共享正在進行的搜索。

導出 CSV

如果您想將數據帶到別處,請單擊 “Export” 以獲取 CSV 文件。

對於大型導出,一旦准備就緒,您將收到一封包含下載鏈接的電子郵件。 這將需要在 Sentry 下載頁面上進一步驗證。這包含文件的 SHA1 checksum,您可以使用以下命令驗證其完整性:

echo "<SHA1 checksum> <downloaded CSV name>" | sha1sum -c -

根據數據量,等待時間可能會有所不同。結果限制為 1000 萬行或 1GB,以先到者為准。

刪除查詢

刪除已保存的查詢是不可逆的。

Discover 主頁上,每個保存的查詢卡都有一個省略號,可以打開上下文菜單。從這里刪除查詢。 您還可以通過單擊右上角的垃圾桶在“查詢結果(Query Results)”視圖中刪除查詢。

添加查詢方程式

Discover 中,您可以根據查詢列添加方程式。 每列就像一個變量,因為它代表查詢的數字結果,這個數字用於等式。

例如,讓我們用一個方程式來計算 transaction 的第一次內容繪制 (measurements.fcp) 與 transaction 的最大內容繪制 (measurements.lcp) 的比率:

equation = measurements.fcp / measurements.lcp

該等式將使用每個查詢列的結果來計算比率。在這種情況下,這些查詢列的結果是:

  • measurements.fcp = 50
  • measurements.lcp = 100

等式變為:

50 / 100

然后等式的結果顯示在更新的表中,如下面的記錄所示:

這些等式可以幫助您計算以下內容:

添加方程式

向查詢添加方程式

  1. 單擊列(Columns)按鈕打開列編輯器。
  2. 如果它們尚未包含在您的查詢中,請添加方程式所需的列。
  3. 單擊 添加一個方程式(Add an Equation)
  4. 通過選擇列、輸入數字(如果需要)和添加運算符來輸入你的方程式。
  5. 單擊“應用(Apply)”

方程式指南

方程必須:

  • 至少包含一個字段或函數
  • 至少包含一個操作符
  • 有顯式運算符。例如,a(a+b) 無效;相反,您應該輸入 a * (a + b)

方程不能:

  • 包含字段和函數的混合
  • 包含不受支持的指數

方程將遵循預期的運算順序,首先解析括號,然后是除法和乘法,然后是加法和減法。方程還可以包括負數。

方程只能對數值列和函數進行運算,其中包括:

  • 函數:
    • count
    • count_unique
    • count_if
    • failure_count
    • avg
    • sum
    • percentiles (p50, p75 etc.)
    • apdex
    • user_misery
    • eps() and epm()
  • 字段:
    • transaction.duration
    • measurements.fp
    • measurements.fcp
    • measurements.lcp
    • measurements.fid
    • measurements.cls
    • measurements.ttfb
    • spans.browser
    • spans.http
    • spans.db
    • spans.resource

示例方程式

計算完成事務的百分比

獲取在閾值內完成的事務百分比

  1. 使用以下三列創建一個新查詢:
    • 列 1:
      • Function count_if
      • Field transaction.duration
      • Condition is less than or equal to
      • 將最終參數設置為閾值(如 300
    • 列 2:
      • Function count
    • 列 3:
      • Field transaction
  2. 添加一個方程並在方程字段中輸入 count_if(transaction.duration,lessOrEquals,300) / count() * 100
計算自定義 Apdex

Apdex 定義為 (satisfied + tolerable*0.5 + frustrated*0)/total。如果您想將 tolerable 的權重更改為 0.2,您將創建以下查詢和方程。

  1. 使用以下四列創建一個新查詢:

    • 列 1:
      • Function count_if
      • Field transaction.duration
      • Condition is less than or equal to
      • 將最終參數設置為 Satisfied 閾值(如 300
    • 列 2:
      • Function count_if
      • Field transaction.duration
      • Condition is less than or equal to
      • 將最終參數設置為 Tolerable 閾值(如 1200
    • 列 3:
      • Function Count()
    • 列 4:
      • Field transaction
  2. 添加方程並在 equation 字段中輸入以下內容:

(count_if(transaction.duration,lessOrEquals,300) + (count_if(transaction.duration,lessOrEquals,1200) - count_if(transaction.duration,lessOrEquals,300)) * 0.2)/count()

查找最大平均非數據庫時間

查找不是來自數據庫調用的時間最長的事務。

  1. 使用以下兩列創建一個新查詢:
    • 列 1:
      • Function avg
      • Field transaction.duration
    • 列 2:
      • Function avg
      • Field spans.db
  2. 添加一個方程並在 equation 字段中輸入 avg(transaction.duration) - avg(spans.db)
  3. 按這個新 equation 排序。

通過 Discover 發現趨勢

Discover 是一個強大的查詢引擎,允許您跨項目和應用程序查詢所有錯誤元數據。 您可能已經注意到,安裝在您的應用程序中的 Sentry SDK 捕獲了大量事件,每個事件都包含有關底層錯誤(underlying error)、平台(platform)、設備(device)、用戶(user)等的上下文數據。 我們還強烈鼓勵通過添加自定義標簽和配置 releaseenvironment,通過 SDK 豐富您的錯誤數據。 有關更多信息,請參閱讓您的數據發揮作用。

讓我們通過一些示例來了解如何處理所有這些數據,以獲得有關應用程序運行狀況和穩定性的一些有用見解。

如果您設置了與 Sentry 字段同名的標簽,則某些表格列選項可能會重復。 對於以下示例,請使用標記為“field”的表列選項。

通過 Issues Discover

當您的應用程序中斷時,Sentry 會實時通知您,然后提供信息和工具來分類和解決錯誤。使用 Discover,您可以采取更主動的方法來查找破壞您的應用程序的主要問題。構建該查詢可能如下所示:

  1. 導航到 “Discover” 並單擊 "Build a new query"
  2. Global Header 中,選擇您要查詢的項目(projects)、環境(environments)和錯誤時間范圍(time range of errors)。
  3. Sentry 監視不同類型的事件的錯誤和性能。要查詢問題(issues),請在搜索欄中按 event.type:error 進行過濾。

  1. 編輯 “Results” 表列以顯示每個項目的事件數 [count()]、受影響的用戶 [count_unique(user)] 和獨特問題 [count_unique(issue)]。

  1. 設置這些列后,您可能希望查找問題最多的項目。單擊 COUNT_UNIQUE(ISSUE) 列標題以相應地對行項目進行排序。

  2. 將光標懸停在頂部 project 行項目上,單擊顯示的操作圖標,然后選擇 “Add to filter”。 這將進一步縮小您的結果范圍,以便您可以繼續調查該特定 projectissues

  1. 現在讓我們看看這些 issues 是什么。更改表列以顯示:

    • issue (問題編號)
    • title (問題標題)
    • count() (事件數)
    • count_unique(user) (受問題影響的唯一用戶數)
  2. 在每個行項目/問題(item/issue)上,您可以單擊 issue 名稱以打開 “Issue Details” 頁面並對 issue 進行分類。您還可以單擊 “Open Group” 圖標以在特定問題的上下文中繼續查詢事件堆棧。

通過 Errors Discover

Discover 的真正強大之處在於它能夠查詢所有錯誤元數據,因此您不再局限於 issuesprojects 的上下文,並且可以揭示所有應用程序的趨勢和見解。 讓我們看一些例子。

URL 錯誤

創建一份報告,查看應用程序中 URL 端點中發生的所有錯誤。

  • 搜索條件:event.type:error has:url
  • 表列:url, platform.name, count()

  • 通過單擊 “Add to filter” 並更改表列來查看任一 URL 端點。
  • 或者,使用通配符過濾 URL 模式:

未處理的錯誤

無論您的代碼是在移動設備、瀏覽器還是服務器上運行,未處理的致命錯誤都可能使您的應用程序崩潰。 要找出這些崩潰發生的位置,請在 Discover 中運行以下查詢:

  • 搜索條件:event.type:error handled:no level:fatal
  • 表列:mechanism, platform.name, count()

要深入了解其中一種崩潰類型:

  • 選擇行項目值之一並將其添加到過濾器。
  • 修改表列以顯示崩潰 messagecount()

錯誤最多的文件

要找出代碼庫中哪些文件生成的錯誤最多,請在 Discover 中運行以下查詢:

  • 搜索條件:event.type:error has:stack.filename
  • 表列:stack.filename, count(), count_unique(issue)

更改您的 “Display” 選擇以將當前時間段與前一時間段進行比較。

您可以通過將特定文件名添加到過濾器並更改表列以顯示該文件中的主要錯誤罪魁禍首來繼續探索特定文件名:

每個 Release 的錯誤

要了解在發布新版本時特定項目的健康狀況如何隨着時間的推移而改善(或不改善),請創建以下查詢:

  • 搜索條件:event.type:error
  • 表列:release, count(), count_unique(issue)

從這里您可以添加一個 release 作為過濾器並將列更改為 count()title 以查看類似的錯誤。 然后您可以單擊 “Open Group” 圖標來深入查看單個事件。您還可以在 “Results” 表的 “Releases” 中打開 release

按小時或按天計算的錯誤

timestamp.to_hourtimestamp.to_day 字段分別將 timestamp 向下舍入到最后一小時或一天。 例如,timestamp 值為 Mar 12, 2021 2:26:50 PM UTC 的事件的 timestamp.to_hour 值為 Mar 12, 2021 2:00:00 PM UTCtimestamp.to_day 值為 Mar 12, 2021 12:00:00 AM UTC。 這允許您對事件進行分組。例如,您可以顯示每小時至少命中兩次的錯誤計數:

根據您在 User Settings > Account > Account Details 中的用戶設置,所有時間戳都顯示在您的首選時區中。

其他用例

正如您現在可能已經注意到的那樣,Discover 在獲得對錯誤的可見性和洞察力方面非常有用。 有關其他用例,請查看:

公眾號:黑客下午茶


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM