<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>監控案例庫 on Tarragon</title><link>https://tarrragon.github.io/blog/devops/monitoring/cases/</link><description>Recent content in 監控案例庫 on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 19 Jun 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/devops/monitoring/cases/index.xml" rel="self" type="application/rss+xml"/><item><title>監控案例庫的來源與預期案例：JSONL 查詢效能、寫入 buffer、SDK 離線緩衝、跨平台時間戳、錯誤去重、遮罩誤判、聚合查詢掃描量</title><link>https://tarrragon.github.io/blog/devops/monitoring/cases/case-library-scope/</link><pubDate>Tue, 27 Oct 2026 00:00:00 +0800</pubDate><guid>https://tarrragon.github.io/blog/devops/monitoring/cases/case-library-scope/</guid><description>&lt;blockquote>
&lt;p>&lt;strong>待更新&lt;/strong>：這個案例庫的案例還沒有發佈。本篇先寫出案例的來源與預期會收錄的案例；每一個案例寫成文章之後，下面的表會換成連到那一篇的連結。&lt;/p>&lt;/blockquote>
&lt;p>這篇說明監控案例庫收錄的案例從哪裡來、怎麼整理，以及預期會收錄的案例：JSONL 儲存的查詢效能、多個 SDK 同時送出時的寫入 buffer、SDK 在網路中斷時的離線 buffer、不同語言的時間戳精度差異、同一個 exception 重複回報時的去重、敏感資訊遮罩把正常內容誤判為 secret，以及長時間範圍聚合查詢的掃描量。每個預期案例都寫出它在什麼條件下出現，以及背後的機制寫在哪一個主題。&lt;/p>
&lt;h2 id="案例的來源monitor-repo-實作過程的紀錄">案例的來源：monitor repo 實作過程的紀錄&lt;/h2>
&lt;p>案例由 &lt;a href="https://github.com/tarrragon/monitor">tarrragon/monitor&lt;/a> 的實作過程產生，不是事前蒐集的。monitor 是一套開源、可以自架的客戶端監控工具，由 SDK 與 Collector 組成；實作時每一次遇到原本的設計無法處理的狀況，都在那個 repo 的 &lt;code>docs/challenges/&lt;/code> 留下一筆紀錄，記下狀況出現的條件、排查過程與最後的處理。案例庫把這些紀錄整理成教學文章：保留出現的條件與機制，拿掉只屬於那個 repo 的細節。所以案例的數量與出現的順序取決於實作的進度，下表列的是依目前的設計預期會遇到的狀況。&lt;/p>
&lt;h2 id="預期收錄的案例與出現條件">預期收錄的案例與出現條件&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>預期案例&lt;/th>
 &lt;th>出現的條件&lt;/th>
 &lt;th>背後的機制所在的主題&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>JSONL 儲存的查詢效能上限&lt;/td>
 &lt;td>事件累積超過約一萬筆，查詢要逐行讀過整個檔案&lt;/td>
 &lt;td>&lt;a href="https://tarrragon.github.io/blog/devops/monitoring/04-collector/" data-link-title="模組四：Collector 設計" data-link-desc="收 → 驗 → 存 → 查 → 觸發的完整鏈路 — Go 單一 binary、可插拔 Storage Backend、rule engine">Collector 設計&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>高併發寫入的 buffer 策略&lt;/td>
 &lt;td>多個 SDK 同時 flush，Collector 同時收到大量寫入請求&lt;/td>
 &lt;td>&lt;a href="https://tarrragon.github.io/blog/devops/monitoring/04-collector/" data-link-title="模組四：Collector 設計" data-link-desc="收 → 驗 → 存 → 查 → 觸發的完整鏈路 — Go 單一 binary、可插拔 Storage Backend、rule engine">Collector 設計&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>SDK 離線 buffer 的事件遺失&lt;/td>
 &lt;td>網路中斷期間 buffer 寫滿，新事件沒有位置可放&lt;/td>
 &lt;td>&lt;a href="https://tarrragon.github.io/blog/devops/monitoring/03-sdk-design/" data-link-title="模組三：SDK 設計模式" data-link-desc="跨平台 SDK 的自動攔截、手動上報、攢批送出、離線 buffer 設計">SDK 設計模式&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>跨平台的時間戳偏移&lt;/td>
 &lt;td>JavaScript、Dart、Python 的 SDK 產生的時間戳精度不同&lt;/td>
 &lt;td>&lt;a href="https://tarrragon.github.io/blog/devops/monitoring/05-platform-adaptation/" data-link-title="模組五：平台適配" data-link-desc="JS CORS / Flutter isolate / Python GIL / Go graceful shutdown — 各平台的特殊考量">平台適配&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>錯誤去重的 fingerprint 設計&lt;/td>
 &lt;td>同一個 exception 在短時間內被重複回報&lt;/td>
 &lt;td>&lt;a href="https://tarrragon.github.io/blog/devops/monitoring/03-sdk-design/" data-link-title="模組三：SDK 設計模式" data-link-desc="跨平台 SDK 的自動攔截、手動上報、攢批送出、離線 buffer 設計">SDK 設計模式&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>敏感資訊遮罩的誤判&lt;/td>
 &lt;td>正常的欄位內容符合 secret 的比對樣式，被遮罩掉&lt;/td>
 &lt;td>&lt;a href="https://tarrragon.github.io/blog/devops/monitoring/07-security-privacy/" data-link-title="模組七：資安與隱私" data-link-desc="SDK redaction / transport 加密 / collector access control / 去識別化 — 蒐集的資料本身就是風險資產">資安與隱私&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>聚合查詢的掃描量&lt;/td>
 &lt;td>查詢「過去 7 天的趨勢」這類長時間範圍的聚合，掃過全部事件&lt;/td>
 &lt;td>&lt;a href="https://tarrragon.github.io/blog/devops/monitoring/04-collector/" data-link-title="模組四：Collector 設計" data-link-desc="收 → 驗 → 存 → 查 → 觸發的完整鏈路 — Go 單一 binary、可插拔 Storage Backend、rule engine">Collector 設計&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>表裡的門檻（「約一萬筆」）與條件是整理這張表時預期的值；案例寫成文章時，換成那一次實作實際遇到的值，以及那個值依什麼而變。&lt;/p></description><content:encoded><![CDATA[<blockquote>
<p><strong>待更新</strong>：這個案例庫的案例還沒有發佈。本篇先寫出案例的來源與預期會收錄的案例；每一個案例寫成文章之後，下面的表會換成連到那一篇的連結。</p></blockquote>
<p>這篇說明監控案例庫收錄的案例從哪裡來、怎麼整理，以及預期會收錄的案例：JSONL 儲存的查詢效能、多個 SDK 同時送出時的寫入 buffer、SDK 在網路中斷時的離線 buffer、不同語言的時間戳精度差異、同一個 exception 重複回報時的去重、敏感資訊遮罩把正常內容誤判為 secret，以及長時間範圍聚合查詢的掃描量。每個預期案例都寫出它在什麼條件下出現，以及背後的機制寫在哪一個主題。</p>
<h2 id="案例的來源monitor-repo-實作過程的紀錄">案例的來源：monitor repo 實作過程的紀錄</h2>
<p>案例由 <a href="https://github.com/tarrragon/monitor">tarrragon/monitor</a> 的實作過程產生，不是事前蒐集的。monitor 是一套開源、可以自架的客戶端監控工具，由 SDK 與 Collector 組成；實作時每一次遇到原本的設計無法處理的狀況，都在那個 repo 的 <code>docs/challenges/</code> 留下一筆紀錄，記下狀況出現的條件、排查過程與最後的處理。案例庫把這些紀錄整理成教學文章：保留出現的條件與機制，拿掉只屬於那個 repo 的細節。所以案例的數量與出現的順序取決於實作的進度，下表列的是依目前的設計預期會遇到的狀況。</p>
<h2 id="預期收錄的案例與出現條件">預期收錄的案例與出現條件</h2>
<table>
  <thead>
      <tr>
          <th>預期案例</th>
          <th>出現的條件</th>
          <th>背後的機制所在的主題</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>JSONL 儲存的查詢效能上限</td>
          <td>事件累積超過約一萬筆，查詢要逐行讀過整個檔案</td>
          <td><a href="/blog/devops/monitoring/04-collector/" data-link-title="模組四：Collector 設計" data-link-desc="收 → 驗 → 存 → 查 → 觸發的完整鏈路 — Go 單一 binary、可插拔 Storage Backend、rule engine">Collector 設計</a></td>
      </tr>
      <tr>
          <td>高併發寫入的 buffer 策略</td>
          <td>多個 SDK 同時 flush，Collector 同時收到大量寫入請求</td>
          <td><a href="/blog/devops/monitoring/04-collector/" data-link-title="模組四：Collector 設計" data-link-desc="收 → 驗 → 存 → 查 → 觸發的完整鏈路 — Go 單一 binary、可插拔 Storage Backend、rule engine">Collector 設計</a></td>
      </tr>
      <tr>
          <td>SDK 離線 buffer 的事件遺失</td>
          <td>網路中斷期間 buffer 寫滿，新事件沒有位置可放</td>
          <td><a href="/blog/devops/monitoring/03-sdk-design/" data-link-title="模組三：SDK 設計模式" data-link-desc="跨平台 SDK 的自動攔截、手動上報、攢批送出、離線 buffer 設計">SDK 設計模式</a></td>
      </tr>
      <tr>
          <td>跨平台的時間戳偏移</td>
          <td>JavaScript、Dart、Python 的 SDK 產生的時間戳精度不同</td>
          <td><a href="/blog/devops/monitoring/05-platform-adaptation/" data-link-title="模組五：平台適配" data-link-desc="JS CORS / Flutter isolate / Python GIL / Go graceful shutdown — 各平台的特殊考量">平台適配</a></td>
      </tr>
      <tr>
          <td>錯誤去重的 fingerprint 設計</td>
          <td>同一個 exception 在短時間內被重複回報</td>
          <td><a href="/blog/devops/monitoring/03-sdk-design/" data-link-title="模組三：SDK 設計模式" data-link-desc="跨平台 SDK 的自動攔截、手動上報、攢批送出、離線 buffer 設計">SDK 設計模式</a></td>
      </tr>
      <tr>
          <td>敏感資訊遮罩的誤判</td>
          <td>正常的欄位內容符合 secret 的比對樣式，被遮罩掉</td>
          <td><a href="/blog/devops/monitoring/07-security-privacy/" data-link-title="模組七：資安與隱私" data-link-desc="SDK redaction / transport 加密 / collector access control / 去識別化 — 蒐集的資料本身就是風險資產">資安與隱私</a></td>
      </tr>
      <tr>
          <td>聚合查詢的掃描量</td>
          <td>查詢「過去 7 天的趨勢」這類長時間範圍的聚合，掃過全部事件</td>
          <td><a href="/blog/devops/monitoring/04-collector/" data-link-title="模組四：Collector 設計" data-link-desc="收 → 驗 → 存 → 查 → 觸發的完整鏈路 — Go 單一 binary、可插拔 Storage Backend、rule engine">Collector 設計</a></td>
      </tr>
  </tbody>
</table>
<p>表裡的門檻（「約一萬筆」）與條件是整理這張表時預期的值；案例寫成文章時，換成那一次實作實際遇到的值，以及那個值依什麼而變。</p>
]]></content:encoded></item></channel></rss>