# Cron 監控

Source: https://instatus.com/help/zh-tw/monitoring/cron

Cron 監控會給每個排程工作（備份、批次處理或定期腳本）一個專屬 URL 供它 ping，並在 ping 延遲或沒有送達時警示你。工作超過週期時間未 ping 會標記為效能下降，連寬限時間也超過時則標記為故障。

就像[其他監控](https://instatus.com/help/zh-tw/monitoring)一樣，當 cron 工作失敗時，你可以與團隊一起[解決該事件](https://instatus.com/help/zh-tw/incident-response)，並視需要更新你的[狀態頁](https://instatus.com/help/zh-tw/status-page)。

| At a glance | Details |
| :-- | :-- |
| [運作方式](https://instatus.com/help/zh-tw/monitoring/cron#監控類型) | 工作每次執行時 ping 一個專屬 URL |
| [週期時間](https://instatus.com/help/zh-tw/monitoring/cron#監控成功的條件) | 工作應該多久執行一次 |
| [寬限時間](https://instatus.com/help/zh-tw/monitoring/cron#監控成功的條件) | 延遲的工作被標記為故障前的額外時間 |
| [Ping 延遲](https://instatus.com/help/zh-tw/monitoring/cron#監控成功的條件) | 超過週期為效能下降，超過寬限時間為故障 |
| [失敗訊號](https://instatus.com/help/zh-tw/monitoring/cron#主動回報失敗) | 請求 URL 並在後面加上 /fail |
| [執行時間](https://instatus.com/help/zh-tw/monitoring/cron#量測工作執行時間) | 工作開始時 ping /start，結束時 ping URL |

以下是 cron 監控清單的樣子：

![cron 監控清單](https://instatus.com/help/monitors/cron-list.png)

## Cron 監控會做什麼？

- 透過工作送來的 ping 確認 cron 工作有按時執行。
- 工作延遲或沒有完成時收到警報。
- 整合 Slack、電子郵件、簡訊、電話通知等管道來接收警報。

點擊某個 cron 監控後，可以看到更多詳細資訊：

![cron 監控詳細資訊](https://instatus.com/help/monitors/cron-item.png)

## 如何新增 cron 監控？

前往你的專案 → 監控 → 新增監控，選擇 **Cron/Heartbeat**，接著讓你的工作對產生的 URL 發出請求，並設定它的週期時間與寬限時間。

![新增監控](https://instatus.com/help/monitors/cron-add.png)

### 監控類型

把監控類型選為 **Cron/Heartbeat**。

![cron 監控類型](https://instatus.com/help/monitors/type-cron.png)

系統會為你產生一個專屬 URL。你的 cron 工作每次執行時，都應該對這個 URL 發出 HTTP 請求（`HEAD`、`GET` 或 `POST`）。

### 監控成功的條件

當你的工作按排程 ping 這個產生的 URL 時，cron 監控就算成功。你可以設定：

- **週期時間：**工作應該多久執行一次（例如每 15 分鐘）。
- **寬限時間：**在判定工作故障之前額外允許的時間。

如果到了週期時間工作仍未 ping，監控會被標記為效能下降。

如果到了寬限時間工作仍未 ping，監控會被標記為故障。

你可以設定[警報](https://instatus.com/help/zh-tw/monitoring/alerts)，在工作失敗、效能下降或恢復時收到通知。

## 主動回報失敗

對監控 URL 後面加上 `/fail` 發出請求，即可把工作標記為失敗，即使它已經執行並 ping 過監控。

當你的腳本遇到錯誤、希望 Instatus 立刻把這次工作記為失敗時，這個做法很有用。

- **成功 ping**：`https://cron.instatus.com/your-unique-url`
- **失敗 ping**：`https://cron.instatus.com/your-unique-url/fail`

收到失敗訊號後，監控會被標記為故障，並立即依你的[警報設定](https://instatus.com/help/zh-tw/monitoring/alerts)發送警報。

## 量測工作執行時間

送出兩個請求：工作開始時請求 `/start`，結束時送出成功或失敗的 ping，Instatus 就會把兩者之間的時間記錄為工作的執行時間：

1. **開始訊號**：工作開始時對 `/start` 發出請求
2. **成功／失敗訊號**：工作完成或失敗時對基礎 URL 發出請求

- **開始 ping**：`https://cron.instatus.com/your-unique-url/start`
- **成功 ping**：`https://cron.instatus.com/your-unique-url`
- **失敗 ping**：`https://cron.instatus.com/your-unique-url/fail`

開始訊號與成功訊號之間的時間會被記錄為工作的執行時間。這有助於你追蹤效能，找出耗時超出預期的工作。

如果工作在送出開始訊號之後失敗，請改送失敗訊號而不是成功訊號，這樣既能標記為失敗，也仍會記錄執行時間。

恭喜，你已經新增了第一個 cron 監控！

- [Ping 監控](https://instatus.com/help/zh-tw/monitoring/ping): 了解如何監控 ping 目標的正常運行時間與效能
