<?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>Health-Check on Tarragon</title><link>https://tarrragon.github.io/blog/tags/health-check/</link><description>Recent content in Health-Check on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Sat, 20 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/health-check/index.xml" rel="self" type="application/rss+xml"/><item><title>模組一：負載平衡與反向代理</title><link>https://tarrragon.github.io/blog/devops/01-load-balancing/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/devops/01-load-balancing/</guid><description>&lt;p>回答「一個入口、多個後端實例，流量怎麼分」。反向代理是 DevOps 最基礎的元件。&lt;/p>
&lt;h2 id="待寫章節">待寫章節&lt;/h2>
&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> 反向代理的職責（TLS 終止、路由、負載分散、健康檢查）&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 負載分散演算法（round-robin / least-connections / IP hash / consistent hash）&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> nginx 實務配置（upstream + health_check + 常見 gotcha）&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 健康檢查路由設計（被動 vs 主動、check interval、unhealthy threshold）&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 和模組二（水平擴展）的銜接：LB 是水平擴展的前提&lt;/li>
&lt;/ul>
&lt;h2 id="跨分類引用">跨分類引用&lt;/h2>
&lt;ul>
&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">monitoring 模組四 Collector 架構&lt;/a>：Collector 多實例部署時的 LB 設計&lt;/li>
&lt;li>→ &lt;a href="https://tarrragon.github.io/blog/backend/05-deployment-platform/" data-link-title="模組五：部署平台與網路入口" data-link-desc="整理 Kubernetes、systemd、load balancer、container 與服務生命週期合約">backend 部署平台&lt;/a>：PaaS / container 的 LB 內建 vs 自管&lt;/li>
&lt;li>→ &lt;a href="https://tarrragon.github.io/blog/infra/03-network-foundation/" data-link-title="模組三：網路地基 — VPC 與分層" data-link-desc="VPC、public / private subnet 切分、route table、NAT、security group 設計">infra 模組三：網路地基&lt;/a>：ALB 掛在 public subnet、後端在 private subnet 的網路分層設計&lt;/li>
&lt;li>→ &lt;a href="https://tarrragon.github.io/blog/infra/05-core-services/loadbalancer-alb/" data-link-title="入口上 IaC — ALB、TLS 與健康檢查" data-link-desc="Application Load Balancer 的 listener、target group、健康檢查閾值設計，以及用 ACM 把 TLS 憑證的簽發、驗證與掛載整條鏈寫進版本控制">infra 模組五：入口上 IaC&lt;/a>：ALB 的 listener、target group、TLS 與健康檢查在 IaC 裡怎麼描述&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>回答「一個入口、多個後端實例，流量怎麼分」。反向代理是 DevOps 最基礎的元件。</p>
<h2 id="待寫章節">待寫章節</h2>
<ul>
<li><input disabled="" type="checkbox"> 反向代理的職責（TLS 終止、路由、負載分散、健康檢查）</li>
<li><input disabled="" type="checkbox"> 負載分散演算法（round-robin / least-connections / IP hash / consistent hash）</li>
<li><input disabled="" type="checkbox"> nginx 實務配置（upstream + health_check + 常見 gotcha）</li>
<li><input disabled="" type="checkbox"> 健康檢查路由設計（被動 vs 主動、check interval、unhealthy threshold）</li>
<li><input disabled="" type="checkbox"> 和模組二（水平擴展）的銜接：LB 是水平擴展的前提</li>
</ul>
<h2 id="跨分類引用">跨分類引用</h2>
<ul>
<li>→ <a href="/blog/monitoring/04-collector/" data-link-title="模組四：Collector 設計" data-link-desc="收 → 驗 → 存 → 查 → 觸發的完整鏈路 — Go 單一 binary、可插拔 Storage Backend、rule engine">monitoring 模組四 Collector 架構</a>：Collector 多實例部署時的 LB 設計</li>
<li>→ <a href="/blog/backend/05-deployment-platform/" data-link-title="模組五：部署平台與網路入口" data-link-desc="整理 Kubernetes、systemd、load balancer、container 與服務生命週期合約">backend 部署平台</a>：PaaS / container 的 LB 內建 vs 自管</li>
<li>→ <a href="/blog/infra/03-network-foundation/" data-link-title="模組三：網路地基 — VPC 與分層" data-link-desc="VPC、public / private subnet 切分、route table、NAT、security group 設計">infra 模組三：網路地基</a>：ALB 掛在 public subnet、後端在 private subnet 的網路分層設計</li>
<li>→ <a href="/blog/infra/05-core-services/loadbalancer-alb/" data-link-title="入口上 IaC — ALB、TLS 與健康檢查" data-link-desc="Application Load Balancer 的 listener、target group、健康檢查閾值設計，以及用 ACM 把 TLS 憑證的簽發、驗證與掛載整條鏈寫進版本控制">infra 模組五：入口上 IaC</a>：ALB 的 listener、target group、TLS 與健康檢查在 IaC 裡怎麼描述</li>
</ul>
]]></content:encoded></item><item><title>模組四：服務探活與自動恢復</title><link>https://tarrragon.github.io/blog/devops/04-service-health/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/devops/04-service-health/</guid><description>&lt;p>回答「服務掛了怎麼知道、知道了怎麼自動恢復」。探活是所有自動恢復機制的前提。&lt;/p>
&lt;h2 id="待寫章節">待寫章節&lt;/h2>
&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> Health check endpoint 設計（什麼算健康、什麼算不健康、check 的深度）&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Liveness vs Readiness（活著 vs 準備好接流量 — Kubernetes 的兩種 probe）&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> systemd watchdog + 自動重啟（WatchdogSec + Restart=on-failure）&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Process supervisor 的選型（systemd / supervisord / Docker restart policy）&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> Graceful shutdown（收到 SIGTERM 後的清理流程）&lt;/li>
&lt;/ul>
&lt;h2 id="跨分類引用">跨分類引用&lt;/h2>
&lt;ul>
&lt;li>→ &lt;a href="https://tarrragon.github.io/blog/monitoring/04-collector/dashboard-devops/" data-link-title="DevOps Dashboard 設計" data-link-desc="Collector 和 SDK 是否健康 — 日常監控的服務狀態卡、吞吐量曲線、儲存用量，以及告警觸發後的排障視圖">monitoring 模組四 Dashboard DevOps&lt;/a>：DevOps dashboard 的服務狀態卡依賴 health check&lt;/li>
&lt;li>→ &lt;a href="https://tarrragon.github.io/blog/backend/05-deployment-platform/" data-link-title="模組五：部署平台與網路入口" data-link-desc="整理 Kubernetes、systemd、load balancer、container 與服務生命週期合約">backend 部署平台&lt;/a>：部署平台的 health check 整合&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>回答「服務掛了怎麼知道、知道了怎麼自動恢復」。探活是所有自動恢復機制的前提。</p>
<h2 id="待寫章節">待寫章節</h2>
<ul>
<li><input disabled="" type="checkbox"> Health check endpoint 設計（什麼算健康、什麼算不健康、check 的深度）</li>
<li><input disabled="" type="checkbox"> Liveness vs Readiness（活著 vs 準備好接流量 — Kubernetes 的兩種 probe）</li>
<li><input disabled="" type="checkbox"> systemd watchdog + 自動重啟（WatchdogSec + Restart=on-failure）</li>
<li><input disabled="" type="checkbox"> Process supervisor 的選型（systemd / supervisord / Docker restart policy）</li>
<li><input disabled="" type="checkbox"> Graceful shutdown（收到 SIGTERM 後的清理流程）</li>
</ul>
<h2 id="跨分類引用">跨分類引用</h2>
<ul>
<li>→ <a href="/blog/monitoring/04-collector/dashboard-devops/" data-link-title="DevOps Dashboard 設計" data-link-desc="Collector 和 SDK 是否健康 — 日常監控的服務狀態卡、吞吐量曲線、儲存用量，以及告警觸發後的排障視圖">monitoring 模組四 Dashboard DevOps</a>：DevOps dashboard 的服務狀態卡依賴 health check</li>
<li>→ <a href="/blog/backend/05-deployment-platform/" data-link-title="模組五：部署平台與網路入口" data-link-desc="整理 Kubernetes、systemd、load balancer、container 與服務生命週期合約">backend 部署平台</a>：部署平台的 health check 整合</li>
</ul>
]]></content:encoded></item><item><title>Readiness / Health Check</title><link>https://tarrragon.github.io/blog/ci/knowledge-cards/readiness-health-check/</link><pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/ci/knowledge-cards/readiness-health-check/</guid><description>&lt;p>Readiness / Health Check 的核心概念是「服務活著」與「服務可接流量」是兩個不同訊號。部署放行通常依賴 readiness，而非僅看 process alive。&lt;/p>
&lt;h2 id="概念位置">概念位置&lt;/h2>
&lt;p>Readiness / Health Check 位在 rollout、load balancer 與 runtime platform 之間，是流量切換前的核心 gate。&lt;/p>
&lt;h2 id="可觀察訊號">可觀察訊號&lt;/h2>
&lt;ul>
&lt;li>部署後健康檢查綠燈但請求仍大量失敗。&lt;/li>
&lt;li>新版啟動中就提早接到流量。&lt;/li>
&lt;li>rollout 失敗時缺少可觀測放行條件。&lt;/li>
&lt;/ul>
&lt;h2 id="接近真實服務的例子">接近真實服務的例子&lt;/h2>
&lt;p>Kubernetes liveness 通過只代表 process 存活；readiness 通過才代表連線池、依賴服務與必要資料都已準備完成。&lt;/p>
&lt;h2 id="設計責任">設計責任&lt;/h2>
&lt;p>Readiness / Health Check 要定義檢查內容、容錯窗口與失敗處理，讓 rollout decision 有可信訊號。&lt;/p></description><content:encoded><![CDATA[<p>Readiness / Health Check 的核心概念是「服務活著」與「服務可接流量」是兩個不同訊號。部署放行通常依賴 readiness，而非僅看 process alive。</p>
<h2 id="概念位置">概念位置</h2>
<p>Readiness / Health Check 位在 rollout、load balancer 與 runtime platform 之間，是流量切換前的核心 gate。</p>
<h2 id="可觀察訊號">可觀察訊號</h2>
<ul>
<li>部署後健康檢查綠燈但請求仍大量失敗。</li>
<li>新版啟動中就提早接到流量。</li>
<li>rollout 失敗時缺少可觀測放行條件。</li>
</ul>
<h2 id="接近真實服務的例子">接近真實服務的例子</h2>
<p>Kubernetes liveness 通過只代表 process 存活；readiness 通過才代表連線池、依賴服務與必要資料都已準備完成。</p>
<h2 id="設計責任">設計責任</h2>
<p>Readiness / Health Check 要定義檢查內容、容錯窗口與失敗處理，讓 rollout decision 有可信訊號。</p>
]]></content:encoded></item><item><title>Health Check</title><link>https://tarrragon.github.io/blog/backend/knowledge-cards/health-check/</link><pubDate>Fri, 24 Apr 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/backend/knowledge-cards/health-check/</guid><description>&lt;p>Health Check 的核心概念是「讓平台用一個簡單回應判斷服務是否值得接流量或是否需要介入」。它是狀態判斷的入口語意，不等於 readiness、liveness 或 diagnostic endpoint 本身。 可先對照 &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/histogram/" data-link-title="Histogram" data-link-desc="說明 histogram 如何用分桶統計延遲、大小與分布">Histogram&lt;/a>。&lt;/p>
&lt;h2 id="概念位置">概念位置&lt;/h2>
&lt;p>Health Check 位在 load balancer、platform、diagnostic endpoint 與 application 之間。平台會依這個回應決定是否導流、是否重啟，或是否需要進一步檢查。 可先對照 &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/histogram/" data-link-title="Histogram" data-link-desc="說明 histogram 如何用分桶統計延遲、大小與分布">Histogram&lt;/a>。&lt;/p>
&lt;h2 id="可觀察訊號">可觀察訊號&lt;/h2>
&lt;p>系統需要 health check 的訊號是服務需要一個快速、低成本、可自動化的狀態回應，讓平台不用靠猜測判斷是否正常。&lt;/p>
&lt;h2 id="接近真實網路服務的例子">接近真實網路服務的例子&lt;/h2>
&lt;p>Load balancer 以 health check 判斷 instance 能否接新流量；運維工具以 health check 快速確認服務是否仍回應；Kubernetes 會把 health check 的責任拆到 readiness / liveness / startup probe。&lt;/p>
&lt;h2 id="設計責任">設計責任&lt;/h2>
&lt;p>設計時要讓 health check 保持簡單、穩定、低成本，並且只反映它被設計要回答的問題。更細的流量條件交給 readiness，更細的存活條件交給 liveness，更完整的操作介面交給 diagnostic endpoint。&lt;/p></description><content:encoded><![CDATA[<p>Health Check 的核心概念是「讓平台用一個簡單回應判斷服務是否值得接流量或是否需要介入」。它是狀態判斷的入口語意，不等於 readiness、liveness 或 diagnostic endpoint 本身。 可先對照 <a href="/blog/backend/knowledge-cards/histogram/" data-link-title="Histogram" data-link-desc="說明 histogram 如何用分桶統計延遲、大小與分布">Histogram</a>。</p>
<h2 id="概念位置">概念位置</h2>
<p>Health Check 位在 load balancer、platform、diagnostic endpoint 與 application 之間。平台會依這個回應決定是否導流、是否重啟，或是否需要進一步檢查。 可先對照 <a href="/blog/backend/knowledge-cards/histogram/" data-link-title="Histogram" data-link-desc="說明 histogram 如何用分桶統計延遲、大小與分布">Histogram</a>。</p>
<h2 id="可觀察訊號">可觀察訊號</h2>
<p>系統需要 health check 的訊號是服務需要一個快速、低成本、可自動化的狀態回應，讓平台不用靠猜測判斷是否正常。</p>
<h2 id="接近真實網路服務的例子">接近真實網路服務的例子</h2>
<p>Load balancer 以 health check 判斷 instance 能否接新流量；運維工具以 health check 快速確認服務是否仍回應；Kubernetes 會把 health check 的責任拆到 readiness / liveness / startup probe。</p>
<h2 id="設計責任">設計責任</h2>
<p>設計時要讓 health check 保持簡單、穩定、低成本，並且只反映它被設計要回答的問題。更細的流量條件交給 readiness，更細的存活條件交給 liveness，更完整的操作介面交給 diagnostic endpoint。</p>
]]></content:encoded></item></channel></rss>