

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon EKS 中提醒
<a name="alerting"></a>

警示是管理和維護在 Amazon EKS 上執行之應用程式的關鍵元件。它可做為早期警告系統，在潛在問題、異常或效能降低情況升級為可能影響服務可用性或使用者體驗的嚴重問題之前，通知操作員和開發人員。提醒涉及監控 Kubernetes 叢集的各個層面，包括：
+ 基礎設施運作狀態
+ 應用程式效能
+ 容器指標
+ 自訂業務指標

Amazon EKS 中的有效提醒不僅止於設定通知。它需要well-thought-out的策略，以平衡對及時資訊的需求和提醒疲勞的可能性。此策略應該：
+ 定義有意義的閾值和條件。
+ 根據嚴重性和影響排定警示的優先順序。
+ 實作適當的路由和呈報程序。
+ 與事件管理和通訊工具整合。

**Topics**
+ [工具](alerting-tools.md)
+ [最佳實務](alerting-best-practices.md)

# Amazon EKS 警示工具
<a name="alerting-tools"></a>

Amazon EKS 支援數個 AWS 和第三方選項來實作提醒。當您選擇 Amazon EKS 警示的工具時，請考慮整合功能、可擴展性、易用性、成本和符合監控和警示需求的特定功能等因素。許多組織使用這些工具的組合，為其 Amazon EKS 環境建立全面的監控和提醒解決方案。
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html)：** **AWS 服務 用於監控和可觀測性

  CloudWatch 為 EKS 叢集提供指標、日誌和警示，並與其他叢集完美整合 AWS 服務。
+ [Prometheus](https://docs.aws.amazon.com/eks/latest/userguide/deploy-prometheus.html)：Kubernetes 的開放原始碼監控和提醒工具

  Prometheus 提供強大的查詢語言 (PromQL) 來定義警示條件。
+ [Alertmanager](https://prometheus.io/docs/alerting/latest/alertmanager/)：搭配 Prometheus 處理提醒

  Alertmanager 提供重複資料刪除、分組和警示路由。它支援各種通知管道，包括電子郵件、Slack 和 PagerDuty。
+ [Grafana](https://aws.amazon.com/grafana/)：用於監控和可觀測性的開放原始碼平台

  Grafana 提供視覺化和提醒功能。它可以與各種資料來源整合，包括 Prometheus 和 CloudWatch。
+ [Elastic Stack (ELK Stack)](https://aws.amazon.com/what-is/elk-stack/)：Elasticsearch、Logstash 和 Kibana 的組合

  此工具適用於日誌彙總、分析和提醒。它可以透過 Elastic 的可觀測性功能進行擴展。
+ 第三方解決方案

  市場上有許多可用的工具，包括  Datadog、New Relic、Sysdig、Dynatrace、Zabbix、Nagios、Splunk、IBM Instana 和 AppDynamics。

# 在 Amazon EKS 中提醒的最佳實務
<a name="alerting-best-practices"></a>

本節說明建立強大提醒系統的最佳實務，以增強 Amazon EKS 中以 Kubernetes 為基礎的應用程式的可靠性和效能。

定義清除提醒閾值：
+ 根據歷史資料和業務需求設定有意義的閾值。
+ 在適當的情況下使用動態閾值，以考慮不同的工作負載。

實作警示優先順序：
+ 依嚴重性分類警示 （例如，嚴重、高、中、低）。
+ 使警示優先順序與業務影響保持一致。

避免警示疲勞：
+ 透過消除備援或低值警示來減少雜訊。
+ 將警示與群組相關問題建立關聯。

使用多階段提醒：
+ 在達到關鍵層級之前實作警告閾值。
+ 針對不同的提醒嚴重性使用不同的通知管道。

實作適當的提醒路由：
+ 確定警示已傳送給正確的團隊或個人。
+ 使用全天、每天涵蓋範圍的隨需排程和輪換。

利用 Kubernetes 原生指標：
+ 監控核心 Kubernetes 元件 （節點、Pod、服務）。
+ 針對其他 Kubernetes 物件指標使用 [kube-state-metrics (KSM)](https://github.com/kubernetes/kube-state-metrics)。

同時監控基礎設施和應用程式：
+ 設定叢集運作狀態、節點狀態和資源使用率的提醒。
+ 實作應用程式特定的提醒，例如錯誤率和延遲。

使用 Prometheus 和 Alertmanager：
+ 使用 Prometheus 進行指標收集和 PromQL 定義警示條件。
+ 使用 Alertmanager 進行警示路由和重複資料刪除。

與 Amazon CloudWatch 整合：
+ 針對 Amazon EKS 特定指標使用 [CloudWatch Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html)。
+ 設定關鍵 AWS 資源指標的 [CloudWatch 警示](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

實作內容豐富的提醒：
+ 在警示訊息中包含相關資訊，例如叢集名稱、命名空間和 Pod 詳細資訊。
+ 在提醒中提供相關儀表板或 Runbook 的連結。

使用異常偵測：
+ 針對複雜模式實作機器學習型異常偵測。
+ 使用 CloudWatch 異常偵測或第三方工具等服務。

實作提醒抑制和靜音：
+ 允許暫時抑制已知問題。
+ 實作維護時段，以減少規劃停機時間期間的噪音。

監控警示效能：
+ 追蹤警示頻率、解決時間和誤報率等指標。
+ 根據這些指標定期檢閱和精簡提醒規則。

實作呈報程序：
+ 定義未解決警示的明確呈報路徑。
+ 使用 PagerDuty 或 Opsgenie 等工具進行自動呈報。

定期測試提醒系統：
+ 定期測試您的警示管道。
+ 在災難復原演練中包含提醒測試。

使用範本來確保警示一致性：
+ 為常見案例建立標準化提醒範本。
+ 確保所有警示的格式和資訊一致。

實作速率限制：
+ 對經常觸發的警示實作速率限制，以防止警示風暴。

使用自訂指標：
+ 實作自訂指標以進行應用程式特定的監控。
+ 使用 Kubernetes 自訂指標 API 根據這些指標進行自動擴展。

實作記錄整合：
+ 將警示與相關日誌建立關聯，以加快故障診斷速度。
+ 搭配提醒系統使用 Grafana Loki 或 ELK Stack 等工具。

考慮成本提醒：
+ 設定資源用量或成本意外尖峰的提醒。
+ 使用 [AWS Budgets](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) 或第三方成本管理工具。

使用分散式追蹤：
+ 整合分散式追蹤工具，例如 Jaeger 或 [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html)。
+ 設定異常追蹤模式或延遲的提醒。

文件提醒 Runbook：
+ 為每個警示類型建立清晰、可行的 Runbook。
+ 在 Runbook 中包含故障診斷步驟和呈報程序。

透過遵循這些最佳實務，您可以為 Amazon EKS 環境建立強大、有效率且有效的提醒系統。這將有助於確保以 Kubernetes 為基礎的應用程式的高可用性、快速問題解決和最佳效能。