<?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>Collection-Strategy on Tarragon</title><link>https://tarrragon.github.io/blog/tags/collection-strategy/</link><description>Recent content in Collection-Strategy 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 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/collection-strategy/index.xml" rel="self" type="application/rss+xml"/><item><title>從需求推導「該收集哪些事件」</title><link>https://tarrragon.github.io/blog/monitoring/01-mental-model/derive-collection-from-requirements/</link><pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/monitoring/01-mental-model/derive-collection-from-requirements/</guid><description>&lt;p>事件收集策略的起點是需求，而非技術能力。「能收集什麼」取決於 SDK 和 collector 的實作；「該收集什麼」取決於誰需要這些資料、用來做什麼決策。從需求推導收集策略，避免兩個極端：什麼都收（儲存成本高、隱私風險大、真正重要的事件淹沒在噪音中）和什麼都不收（問題發生時沒有資料可查）。&lt;/p>
&lt;h2 id="四個需求方向">四個需求方向&lt;/h2>
&lt;h3 id="debug-需求問題發生時能定位根因">Debug 需求：問題發生時能定位根因&lt;/h3>
&lt;p>Debug 需求驅動的事件收集目標是「問題發生時，開發者能從事件記錄中重建問題的 context」。&lt;/p>
&lt;p>需要的事件類型：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Error&lt;/strong>：例外、非預期狀態、API 錯誤回應。包含 stack trace、error code、觸發條件。&lt;/li>
&lt;li>&lt;strong>Lifecycle&lt;/strong>：問題發生時的系統狀態 — app 版本、OS 版本、網路狀態、前景/背景。&lt;/li>
&lt;li>&lt;strong>Event（最近操作）&lt;/strong>：問題發生前使用者做了哪些操作。不需要完整的操作歷史，最近 10-20 個操作通常足夠。&lt;/li>
&lt;/ul>
&lt;p>推導方法：列出最近三個月遇到的 debug 困難場景，問「如果當時有哪些事件記錄，debug 時間能從 30 分鐘降到 5 分鐘？」。答案就是 debug 需求驅動的事件清單。&lt;/p>
&lt;p>app_tunnel（透過 WebSocket 連接遠端終端機的 Flutter app）的 T.C4 案例是典型的 debug 需求缺口 — 六個元件中四個零 log，debug 只能靠實機反覆測試。如果在企劃階段就設計了連線生命週期的五步 log，auth token 問題在第一次連線就能從 log 定位（&lt;a href="https://tarrragon.github.io/blog/testing/02-client-observability/" data-link-title="模組二：客戶端可觀測性" data-link-desc="連線生命週期 log、protocol 訊息 log、使用者行為 log — log 設計是功能規格的一部分">testing 模組二&lt;/a>）。&lt;/p>
&lt;p>具體的事件表和查詢場景見 &lt;a href="https://tarrragon.github.io/blog/monitoring/01-mental-model/motivation-to-event-mapping/" data-link-title="動機驅動的事件設計" data-link-desc="Debug / 商業 / 資安 / 效能四個動機各自需要什麼事件 — 從「為什麼收」反推「收什麼」和「什麼階段啟用」">動機驅動的事件設計&lt;/a>。&lt;/p>
&lt;h3 id="行為分析需求使用者如何使用產品">行為分析需求：使用者如何使用產品&lt;/h3>
&lt;p>行為分析需求驅動的事件收集目標是「回答產品決策的問題」。&lt;/p>
&lt;p>需要的事件類型：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Event&lt;/strong>：使用者操作的完整記錄。需要足夠的粒度來回答「使用者在哪一步流失」（&lt;a href="https://tarrragon.github.io/blog/monitoring/knowledge-cards/funnel-analysis/" data-link-title="Funnel Analysis" data-link-desc="說明追蹤使用者在多步驟流程中每一步的轉換率和流失率的分析方法">funnel&lt;/a>）和「不同使用者群體的行為差異」（&lt;a href="https://tarrragon.github.io/blog/monitoring/knowledge-cards/cohort-analysis/" data-link-title="Cohort Analysis" data-link-desc="說明把使用者按共同特徵分群、比較不同群組行為差異的分析方法">cohort&lt;/a>）。&lt;/li>
&lt;li>&lt;strong>Lifecycle&lt;/strong>：session 的開始和結束，用於計算使用時長和 session 頻率。&lt;/li>
&lt;/ul>
&lt;p>推導方法：列出產品團隊最常問的 3-5 個問題（「新功能有多少人用」「註冊流程在哪一步流失最多」「付費使用者和免費使用者的行為差異」），為每個問題列出需要的事件。&lt;/p>
&lt;p>自用工具通常沒有行為分析需求 — 使用者就是開發者本人。這個方向的事件可以跳過。&lt;/p>
&lt;p>具體的事件表和查詢場景見 &lt;a href="https://tarrragon.github.io/blog/monitoring/01-mental-model/motivation-to-event-mapping/" data-link-title="動機驅動的事件設計" data-link-desc="Debug / 商業 / 資安 / 效能四個動機各自需要什麼事件 — 從「為什麼收」反推「收什麼」和「什麼階段啟用」">動機驅動的事件設計&lt;/a>。&lt;/p>
&lt;h3 id="效能需求系統是否在可接受的範圍內運作">效能需求：系統是否在可接受的範圍內運作&lt;/h3>
&lt;p>效能需求驅動的事件收集目標是「發現效能退化和容量瓶頸」。&lt;/p>
&lt;p>需要的事件類型：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Metric&lt;/strong>：回應時間、frame rate、記憶體使用量、佇列長度。定期取樣或事件觸發。&lt;/li>
&lt;/ul>
&lt;p>推導方法：列出使用者會感知到的效能指標（頁面載入時間、動畫流暢度、操作回應延遲），為每個指標定義可接受的範圍和取樣頻率。&lt;/p>
&lt;p>具體的事件表和查詢場景見 &lt;a href="https://tarrragon.github.io/blog/monitoring/01-mental-model/motivation-to-event-mapping/" data-link-title="動機驅動的事件設計" data-link-desc="Debug / 商業 / 資安 / 效能四個動機各自需要什麼事件 — 從「為什麼收」反推「收什麼」和「什麼階段啟用」">動機驅動的事件設計&lt;/a>。&lt;/p>
&lt;h3 id="合規需求法規要求收集或禁止收集什麼">合規需求：法規要求收集或禁止收集什麼&lt;/h3>
&lt;p>合規需求同時驅動「必須收集」和「禁止收集」。&lt;/p>
&lt;p>必須收集：access log（誰在什麼時間存取了什麼資料）、audit trail（誰修改了什麼設定）。&lt;/p>
&lt;p>禁止收集：未經同意的個人識別資訊、兒童資料（COPPA）、健康資料（HIPAA）。&lt;/p>
&lt;p>推導方法：確認適用的法規（GDPR、CCPA、個資法），列出法規要求的最小收集項目和禁止項目。&lt;/p>
&lt;p>具體的事件表和查詢場景見 &lt;a href="https://tarrragon.github.io/blog/monitoring/01-mental-model/motivation-to-event-mapping/" data-link-title="動機驅動的事件設計" data-link-desc="Debug / 商業 / 資安 / 效能四個動機各自需要什麼事件 — 從「為什麼收」反推「收什麼」和「什麼階段啟用」">動機驅動的事件設計&lt;/a>。&lt;/p>
&lt;h2 id="從需求到事件清單的步驟">從需求到事件清單的步驟&lt;/h2>
&lt;ol>
&lt;li>&lt;strong>列出需求方向&lt;/strong>：Debug / 行為分析 / 效能 / 合規，每個方向的消費者是誰（開發者 / 產品團隊 / 維運 / 法務）。&lt;/li>
&lt;li>&lt;strong>每個方向列出問題&lt;/strong>：消費者最常需要回答的 3-5 個問題。&lt;/li>
&lt;li>&lt;strong>每個問題列出需要的事件&lt;/strong>：回答這個問題需要哪些事件類型和哪些屬性。&lt;/li>
&lt;li>&lt;strong>去重和分類&lt;/strong>：不同方向可能需要同一個事件（error 事件同時服務 debug 和效能監控）。去重後按四類事件分類。&lt;/li>
&lt;li>&lt;strong>排優先順序&lt;/strong>：按「缺少這個事件的損失」排序。Debug 需求的 error 事件通常是最高優先。&lt;/li>
&lt;/ol>
&lt;h2 id="下一步路由">下一步路由&lt;/h2>
&lt;ul>
&lt;li>四類事件的定義 → &lt;a href="https://tarrragon.github.io/blog/monitoring/01-mental-model/four-event-types/" data-link-title="四類事件的完整定義" data-link-desc="Event / Error / Metric / Lifecycle 四類事件各自的語意、觸發時機和典型用途 — 分類是監控體系的統一語言">四類事件的完整定義&lt;/a>&lt;/li>
&lt;li>事件的命名和結構化 → &lt;a href="https://tarrragon.github.io/blog/monitoring/01-mental-model/event-naming-convention/" data-link-title="事件命名規範" data-link-desc="namespace.action 格式的事件命名、命名一致性的工程價值、和商業方案命名慣例的對應">事件命名規範&lt;/a>&lt;/li>
&lt;li>收集到的事件怎麼處理 → &lt;a href="https://tarrragon.github.io/blog/monitoring/04-collector/" data-link-title="模組四：Collector 設計" data-link-desc="收 → 驗 → 存 → 查 → 觸發的完整鏈路 — Go 單一 binary、可插拔 Storage Backend、rule engine">模組四 Collector 設計&lt;/a>&lt;/li>
&lt;li>四個方向展開到具體事件名稱級 → &lt;a href="https://tarrragon.github.io/blog/monitoring/01-mental-model/motivation-to-event-mapping/" data-link-title="動機驅動的事件設計" data-link-desc="Debug / 商業 / 資安 / 效能四個動機各自需要什麼事件 — 從「為什麼收」反推「收什麼」和「什麼階段啟用」">動機驅動的事件設計&lt;/a>&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>事件收集策略的起點是需求，而非技術能力。「能收集什麼」取決於 SDK 和 collector 的實作；「該收集什麼」取決於誰需要這些資料、用來做什麼決策。從需求推導收集策略，避免兩個極端：什麼都收（儲存成本高、隱私風險大、真正重要的事件淹沒在噪音中）和什麼都不收（問題發生時沒有資料可查）。</p>
<h2 id="四個需求方向">四個需求方向</h2>
<h3 id="debug-需求問題發生時能定位根因">Debug 需求：問題發生時能定位根因</h3>
<p>Debug 需求驅動的事件收集目標是「問題發生時，開發者能從事件記錄中重建問題的 context」。</p>
<p>需要的事件類型：</p>
<ul>
<li><strong>Error</strong>：例外、非預期狀態、API 錯誤回應。包含 stack trace、error code、觸發條件。</li>
<li><strong>Lifecycle</strong>：問題發生時的系統狀態 — app 版本、OS 版本、網路狀態、前景/背景。</li>
<li><strong>Event（最近操作）</strong>：問題發生前使用者做了哪些操作。不需要完整的操作歷史，最近 10-20 個操作通常足夠。</li>
</ul>
<p>推導方法：列出最近三個月遇到的 debug 困難場景，問「如果當時有哪些事件記錄，debug 時間能從 30 分鐘降到 5 分鐘？」。答案就是 debug 需求驅動的事件清單。</p>
<p>app_tunnel（透過 WebSocket 連接遠端終端機的 Flutter app）的 T.C4 案例是典型的 debug 需求缺口 — 六個元件中四個零 log，debug 只能靠實機反覆測試。如果在企劃階段就設計了連線生命週期的五步 log，auth token 問題在第一次連線就能從 log 定位（<a href="/blog/testing/02-client-observability/" data-link-title="模組二：客戶端可觀測性" data-link-desc="連線生命週期 log、protocol 訊息 log、使用者行為 log — log 設計是功能規格的一部分">testing 模組二</a>）。</p>
<p>具體的事件表和查詢場景見 <a href="/blog/monitoring/01-mental-model/motivation-to-event-mapping/" data-link-title="動機驅動的事件設計" data-link-desc="Debug / 商業 / 資安 / 效能四個動機各自需要什麼事件 — 從「為什麼收」反推「收什麼」和「什麼階段啟用」">動機驅動的事件設計</a>。</p>
<h3 id="行為分析需求使用者如何使用產品">行為分析需求：使用者如何使用產品</h3>
<p>行為分析需求驅動的事件收集目標是「回答產品決策的問題」。</p>
<p>需要的事件類型：</p>
<ul>
<li><strong>Event</strong>：使用者操作的完整記錄。需要足夠的粒度來回答「使用者在哪一步流失」（<a href="/blog/monitoring/knowledge-cards/funnel-analysis/" data-link-title="Funnel Analysis" data-link-desc="說明追蹤使用者在多步驟流程中每一步的轉換率和流失率的分析方法">funnel</a>）和「不同使用者群體的行為差異」（<a href="/blog/monitoring/knowledge-cards/cohort-analysis/" data-link-title="Cohort Analysis" data-link-desc="說明把使用者按共同特徵分群、比較不同群組行為差異的分析方法">cohort</a>）。</li>
<li><strong>Lifecycle</strong>：session 的開始和結束，用於計算使用時長和 session 頻率。</li>
</ul>
<p>推導方法：列出產品團隊最常問的 3-5 個問題（「新功能有多少人用」「註冊流程在哪一步流失最多」「付費使用者和免費使用者的行為差異」），為每個問題列出需要的事件。</p>
<p>自用工具通常沒有行為分析需求 — 使用者就是開發者本人。這個方向的事件可以跳過。</p>
<p>具體的事件表和查詢場景見 <a href="/blog/monitoring/01-mental-model/motivation-to-event-mapping/" data-link-title="動機驅動的事件設計" data-link-desc="Debug / 商業 / 資安 / 效能四個動機各自需要什麼事件 — 從「為什麼收」反推「收什麼」和「什麼階段啟用」">動機驅動的事件設計</a>。</p>
<h3 id="效能需求系統是否在可接受的範圍內運作">效能需求：系統是否在可接受的範圍內運作</h3>
<p>效能需求驅動的事件收集目標是「發現效能退化和容量瓶頸」。</p>
<p>需要的事件類型：</p>
<ul>
<li><strong>Metric</strong>：回應時間、frame rate、記憶體使用量、佇列長度。定期取樣或事件觸發。</li>
</ul>
<p>推導方法：列出使用者會感知到的效能指標（頁面載入時間、動畫流暢度、操作回應延遲），為每個指標定義可接受的範圍和取樣頻率。</p>
<p>具體的事件表和查詢場景見 <a href="/blog/monitoring/01-mental-model/motivation-to-event-mapping/" data-link-title="動機驅動的事件設計" data-link-desc="Debug / 商業 / 資安 / 效能四個動機各自需要什麼事件 — 從「為什麼收」反推「收什麼」和「什麼階段啟用」">動機驅動的事件設計</a>。</p>
<h3 id="合規需求法規要求收集或禁止收集什麼">合規需求：法規要求收集或禁止收集什麼</h3>
<p>合規需求同時驅動「必須收集」和「禁止收集」。</p>
<p>必須收集：access log（誰在什麼時間存取了什麼資料）、audit trail（誰修改了什麼設定）。</p>
<p>禁止收集：未經同意的個人識別資訊、兒童資料（COPPA）、健康資料（HIPAA）。</p>
<p>推導方法：確認適用的法規（GDPR、CCPA、個資法），列出法規要求的最小收集項目和禁止項目。</p>
<p>具體的事件表和查詢場景見 <a href="/blog/monitoring/01-mental-model/motivation-to-event-mapping/" data-link-title="動機驅動的事件設計" data-link-desc="Debug / 商業 / 資安 / 效能四個動機各自需要什麼事件 — 從「為什麼收」反推「收什麼」和「什麼階段啟用」">動機驅動的事件設計</a>。</p>
<h2 id="從需求到事件清單的步驟">從需求到事件清單的步驟</h2>
<ol>
<li><strong>列出需求方向</strong>：Debug / 行為分析 / 效能 / 合規，每個方向的消費者是誰（開發者 / 產品團隊 / 維運 / 法務）。</li>
<li><strong>每個方向列出問題</strong>：消費者最常需要回答的 3-5 個問題。</li>
<li><strong>每個問題列出需要的事件</strong>：回答這個問題需要哪些事件類型和哪些屬性。</li>
<li><strong>去重和分類</strong>：不同方向可能需要同一個事件（error 事件同時服務 debug 和效能監控）。去重後按四類事件分類。</li>
<li><strong>排優先順序</strong>：按「缺少這個事件的損失」排序。Debug 需求的 error 事件通常是最高優先。</li>
</ol>
<h2 id="下一步路由">下一步路由</h2>
<ul>
<li>四類事件的定義 → <a href="/blog/monitoring/01-mental-model/four-event-types/" data-link-title="四類事件的完整定義" data-link-desc="Event / Error / Metric / Lifecycle 四類事件各自的語意、觸發時機和典型用途 — 分類是監控體系的統一語言">四類事件的完整定義</a></li>
<li>事件的命名和結構化 → <a href="/blog/monitoring/01-mental-model/event-naming-convention/" data-link-title="事件命名規範" data-link-desc="namespace.action 格式的事件命名、命名一致性的工程價值、和商業方案命名慣例的對應">事件命名規範</a></li>
<li>收集到的事件怎麼處理 → <a href="/blog/monitoring/04-collector/" data-link-title="模組四：Collector 設計" data-link-desc="收 → 驗 → 存 → 查 → 觸發的完整鏈路 — Go 單一 binary、可插拔 Storage Backend、rule engine">模組四 Collector 設計</a></li>
<li>四個方向展開到具體事件名稱級 → <a href="/blog/monitoring/01-mental-model/motivation-to-event-mapping/" data-link-title="動機驅動的事件設計" data-link-desc="Debug / 商業 / 資安 / 效能四個動機各自需要什麼事件 — 從「為什麼收」反推「收什麼」和「什麼階段啟用」">動機驅動的事件設計</a></li>
</ul>
]]></content:encoded></item></channel></rss>