系列

目錄

  • 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 在獲得對錯誤的可見性和洞察力方面非常有用。 有關其他用例,請檢視:

公眾號:黑客下午茶