

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

# 對 Amazon EKS 上的 Container Insights 進行故障診斷
<a name="container-insights-eks-troubleshooting"></a>

本節涵蓋您在 Amazon EKS 上設定或操作 Container Insights 時可能遇到的常見問題。無論您使用 OTel 還是 Classic 方法，都請使用下表和診斷命令來識別和解決問題。

如需特定方法的設定指引，請參閱 [快速入門：Amazon EKS 上的 OTel Container Insights](container-insights-eks-otel-quickstart.md)或 [設定指南 (AWS CLI)](container-insights-eks-classic-setup.md)。若要比較方法，請參閱 [比較 Container Insights 方法](container-insights-eks-compare.md)。

## 指標未顯示在 CloudWatch 中
<a name="container-insights-eks-troubleshooting-metrics"></a>

如果您在`ContainerInsights`命名空間中看不到指標，請使用下表來識別原因。


| 徵狀 | 原因 | Resolution | 
| --- | --- | --- | 
| ContainerInsights 命名空間中沒有指標 | IAM 角色缺少cloudwatch:PutMetricData許可 | 將 CloudWatchAgentServerPolicy受管政策連接至客服人員 IAM 角色。 | 
| 指標對某些節點顯示，但對其他節點顯示 | 由於污點，代理程式 DaemonSet 未排程在所有節點上 | 將容錯新增至代理程式 DaemonSet，以允許在污點節點上排程。 | 
| 指標停止顯示 | 代理程式 Pod 已 OOMKilled 或正在重新啟動 | 增加代理程式 Pod 資源規格中的記憶體限制。 | 
| 指標為過時或零 | 網路連線已封鎖 | 檢查 VPC 安全群組，並確認 CloudWatch VPC 端點是否存在。 | 
| 缺少增強型指標 | 代理程式未設定為增強可觀測性 | 在代理程式組態enhancedObservability: true中設定 。 | 

## 代理程式 Pod 未啟動
<a name="container-insights-eks-troubleshooting-agent-pods"></a>

如果代理程式 Pod 無法啟動或保持非執行中狀態，請使用下表來診斷問題。


| 徵狀 | 原因 | Resolution | 
| --- | --- | --- | 
| ImagePullBackOff | 無法連線 Amazon ECR 或映像標籤不正確 | 驗證映像 URI 並確認節點可存取 Amazon ECR。 | 
| Pending | 節點上的 CPU 或記憶體不足 | 擴展節點群組或減少代理程式 Pod 規格中的資源請求。 | 
| CrashLoopBackOff | 無效的組態或缺少磁碟區掛載 | 透過在受影響的 Pod kubectl logs上執行 ，檢查 Pod 日誌是否有組態錯誤。 | 
| FailedScheduling | 節點親和性或污點會阻止排程 | 檢閱 DaemonSet 規格中的 nodeSelector和 容錯。 | 
| 結束程式碼 1 | 服務帳戶缺少 IRSA 註釋 | 確認服務帳戶具有 eks.amazonaws.com/role-arn註釋。 | 

## 附加元件安裝失敗
<a name="container-insights-eks-troubleshooting-addon"></a>

如果附加`amazon-cloudwatch-observability`元件無法安裝或報告運作狀態不佳的狀態，請使用下表進行故障診斷。


| 徵狀 | 原因 | Resolution | 
| --- | --- | --- | 
| CREATE\_FAILED | 先前安裝的資源衝突 | 刪除衝突的資源，並在建立附加元件--resolve-conflicts OVERWRITE時使用 。 | 
| 找不到 OIDC 提供者 | 叢集不存在 IAM OIDC 身分提供者 | 執行 來建立提供者eksctl utils associate-iam-oidc-provider。 | 
| 版本衝突 | 附加元件版本與 Kubernetes 版本不相容 | 執行 以列出相容的版本aws eks describe-addon-versions。 | 
| DEGRADED 狀態 | 由於缺少許可，運作狀態檢查失敗 | 檢查 Pod 日誌，並確認 IRSA 角色已連接必要的政策。 | 

## 日誌交付問題
<a name="container-insights-eks-troubleshooting-logs"></a>

如果容器日誌未出現在 Amazon CloudWatch Logs 中，請使用下表來識別原因。


| 徵狀 | 原因 | Resolution | 
| --- | --- | --- | 
| 日誌群組不存在 | 缺少logs:CreateLogGroup許可 | 將 Amazon CloudWatch Logs 許可新增至代理程式 IAM 角色。 | 
| 日誌群組存在，但空白 | 未為日誌設定代理程式，或區域不相符 | 確認代理程式組態包含日誌集合，且 區域符合您的叢集區域。 | 
| 日誌延遲超過 5 分鐘 | 排清間隔太高或節點負載過重 | 減少代理程式組態中的force\_flush\_interval值。 | 
| 缺少效能日誌 | 代理程式僅針對應用程式日誌設定 | 確認 Container Insights 效能日誌區段存在於代理程式組態中。 | 

## 遷移特定問題
<a name="container-insights-eks-troubleshooting-migration"></a>

如果您在 Container Insights 方法之間遷移時遇到問題，請使用下表。如需完整的遷移工作流程，請參閱 [遷移指南](container-insights-eks-migration-hub.md)。


| 徵狀 | 原因 | Resolution | 
| --- | --- | --- | 
| 平行執行期間重複的指標 | 這兩種方法同時發佈指標 | 此行為預期會在平行執行期間發生。驗證新方法之後，請停用舊版方法。 | 
| 方法之間的不同指標值 | 不同的計算方法 | 預期會有些微的差異 （低於 5%)。大差異表示方法之間的組態不相符。 | 
| 轉返失敗 | 自訂組態未重新套用 | 當您轉返時，請重新套用完整的組態值。 | 
| 警示在遷移期間觸發 | 轉換期間的指標差距 | 暫時將受影響警示notBreaching上遺失的資料處理設定為 。 | 

## OTel Container Insights 問題
<a name="container-insights-eks-troubleshooting-otel"></a>

以下是 OTel Container Insights 方法特有的問題。如需一般設定指引，請參閱 [快速入門：Amazon EKS 上的 OTel Container Insights](container-insights-eks-otel-quickstart.md)。


| 徵狀 | 原因 | Resolution | 
| --- | --- | --- | 
| 403 禁止的匯出工具錯誤 | IAM 角色缺少 CloudWatch 許可 | 確認 CloudWatchAgentServerPolicy 已連接至客服人員角色。 | 
| 指標端點上的連線遭拒 | 收集器無法連接 kubelet | 確認hostNetwork: true已在 Pod 規格中設定 ，或確認服務帳戶具有必要的許可。 | 
| 高記憶體用量 | 批次處理器佇列太大 | 減少收集器組態中的 batch/timeout和 batch/send\_batch\_size值。 | 
| 自訂指標未顯示 | 未為應用程式端點設定接收器 | 新增 Prometheus 接收器，以收集器組態中的應用程式指標連接埠為目標。 | 

## 一般診斷命令
<a name="container-insights-eks-troubleshooting-commands"></a>

使用下列命令來收集容器洞見部署的相關資訊。

若要檢查代理程式 Pod 狀態，請執行下列命令。

```
kubectl get pods -n amazon-cloudwatch
```

若要檢視代理程式 Pod 日誌，請執行下列命令。

```
kubectl logs -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent --tail=50
```

若要檢查代理程式 DaemonSet 狀態，請執行下列命令。

```
kubectl get daemonset -n amazon-cloudwatch
```

若要驗證服務帳戶的 IAM 角色，請執行下列命令。

```
kubectl get serviceaccount -n amazon-cloudwatch -o yaml
```

若要檢查叢集附加元件狀態，請執行下列命令。使用 Amazon EKS 叢集的名稱取代 {{cluster-name}}。

```
aws eks describe-addon --cluster-name {{cluster-name}} --addon-name amazon-cloudwatch-observability
```

若要列出 Container Insights 日誌群組，請執行下列命令。使用 Amazon EKS 叢集的名稱取代 {{cluster-name}}。

```
aws logs describe-log-groups --log-group-name-prefix "/aws/containerinsights/{{cluster-name}}"
```

## 相關資源
<a name="container-insights-eks-troubleshooting-related"></a>

如需在 Amazon EKS 上設定和操作 Container Insights 的詳細資訊，請參閱下列主題。
+ [快速入門：Amazon EKS 上的 OTel Container Insights](container-insights-eks-otel-quickstart.md) – 設定 OTel Container Insights
+ [設定指南 (AWS CLI)](container-insights-eks-classic-setup.md) – 設定 Classic Container Insights
+ [遷移指南](container-insights-eks-migration-hub.md) – 在方法之間遷移
+ [比較 Container Insights 方法](container-insights-eks-compare.md) – 比較 Container Insights 方法