Session Manager 疑難排解 - AWS Systems Manager

Session Manager 疑難排解

使用以下資訊以協助您對 AWS Systems Manager Session Manager 的問題進行故障診斷。

文件程序意外失敗:文件工作者逾時

問題:在 Linux 主機啟動工作階段時,Systems Manager 會傳回下列錯誤:

document process failed unexpectedly: document worker timed out, check [ssm-document-worker]/[ssm-session-worker] log for crash reason

如果按 檢視 SSM Agent 日誌 中所述設定 SSM Agent 記錄,即可在偵錯日誌中檢視更多詳細資訊。針對此問題,Session Manager 會顯示下列日誌項目:

failed to create channel: too many open files

此錯誤通常表示執行的 Session Manager 工作者程序太多,且基礎作業系統已達到限制。有兩個選項可用來解決此問題。

解決方案 A:提高作業系統檔案通知限制

您可以從個別 Linux 主機執行下列命令來提高限制。此命令使用 Systems Manager Run Command。指定的值會將 max_user_instances 提高至 8192。此值遠高於預設值 128,但不會對主機資源造成壓力:

aws ssm send-command --document-name AWS-RunShellScript \ --instance-id i-02573cafcfEXAMPLE --parameters \ "commands=sudo sysctl fs.inotify.max_user_instances=8192"

解決方案 B:減少目標主機中 Session Manager 使用的檔案通知

從個別 Linux 主機執行下列命令,列出在目標主機上執行的工作階段:

aws ssm describe-sessions --state Active --filters key=Target,value=i-02573cafcfEXAMPLE

檢閱命令輸出,識別不再需要的工作階段。您可以從個別 Linux 主機執行下列命令來終止這些工作階段:

aws ssm terminate-session —session-id session ID

或者,只要遠端伺服器上不再有執行中的工作階段,您就可以從個別 Linux 主機執行下列命令來釋出其他資源。此命令會終止在遠端主機上執行的所有 Session Manager 程序,從而終止遠端主機的所有工作階段。在執行此命令之前,請確認是否有要保留的持續工作階段:

aws ssm send-command --document-name AWS-RunShellScript \ --instance-id i-02573cafcfEXAMPLE --parameters \ '{"commands":["sudo kill $(ps aux | grep ssm-session-worker | grep -v grep | awk '"'"'{print $2}'"'"')"]}'

Session Manager 無法從 Amazon EC2 主控台連線

問題:建立新執行個體之後,Amazon Elastic Compute Cloud (Amazon EC2) 主控台中的 Session Manager 索引標籤並未提供連線選項。

解決方案 A:建立執行個體設定檔:如果您尚未建立 AWS Identity and Access Management (IAM) 執行個體設定檔 (按照 EC2 主控台中 Session Manager 索引標籤上的資訊操作),請使用 Quick Setup 建立一個。Quick Setup 是 AWS Systems Manager 的一項功能。

Session Manager 需要 IAM 執行個體設定檔才能連線到執行個體。您可以使用 Quick Setup 建立主機管理組態,然後再建立執行個體設定檔並將其指派給執行個體。主機管理組態會建立具有必要許可的執行個體設定檔,並將其指派給執行個體。主機管理組態也可以啟用其他 Systems Manager 功能,並建立 IAM 角色來執行這些功能。使用 Quick Setup 或主機管理組態啟用的功能免費。開啟 Quick Setup 並建立主機管理組態

重要

建立主機管理組態後,Amazon EC2 可能需要幾分鐘的時間來登記變更並重新整理 Session Manager 索引標籤。如果在兩分鐘後索引標籤中仍未顯示連線按鈕,請重新啟動執行個體。重新啟動後,如果仍然看不到連線選項,請開啟 Quick Setup,確認僅存在一個主機管理組態。如果有兩個,請刪除較舊的組態並等待幾分鐘。

如果在建立主機管理組態後仍無法連線,或是收到錯誤訊息 (包含 SSM Agent 相關錯誤),請參閱下列其中一個解決方案:

解決方案 B:沒有錯誤,但仍無法連線

如果您已建立主機管理組態,而在等待數分鐘後再嘗試連線,但仍無法連線,則您可能需要手動將主機管理組態套用至執行個體。請遵循以下程序以更新 Quick Setup 主機管理組態,並將變更套用至執行個體。

使用 Quick Setup 更新主機管理組態
  1. 開啟位於 https://console.aws.amazon.com/systems-manager/ 的 AWS Systems Manager 主控台。

  2. 在導覽窗格中,選擇 Quick Setup

  3. 組態清單中,選擇您建立的主機管理組態。

  4. 選擇動作,然後選擇編輯組態

  5. 目標區段底部附近,從選擇將執行個體設為目標的方式下選擇手動

  6. 執行個體區段中,選擇您建立的執行個體。

  7. 選擇更新

等待幾分鐘,讓 EC2 重新整理 Session Manager 索引標籤。如果仍然無法連線或收到錯誤訊息,則請檢閱此問題的其餘解決方案。

解決方案 C:關於遺失 SSM Agent 的錯誤

如果您無法使用 Quick Setup 建立主機管理組態,或者收到關於 SSM Agent 未安裝的錯誤訊息,您可能需要在執行個體上手動安裝 SSM Agent。 SSM Agent 是一種 Amazon 軟體,它讓 Systems Manager 可以使用 Session Manager 連線到您執行個體。大多數 Amazon Elastic Compute (AMI) 預設會安裝 SSM Agent。如果您的執行個體是從非標準 AMI 或較舊的 AMI 建立的,您可能需要手動安裝該代理程式。如需安裝 SSM Agent 的程序,請參閱以下與您執行個體作業系統相對應的主題。

對於 SSM Agent 相關問題,請參閱 SSM Agent 疑難排解

無權啟動工作階段

問題:您嘗試啟動工作階段,但系統會提示您沒有必須的許可。

SSM Agent不在線

問題:您會在 Amazon EC2 執行個體 Session Manager 索引標籤上看到一則訊息,指出:SSM Agent不在線。SSM Agent無法連線到 Systems Manager 端點,因而無法自行註冊服務。

解決方案:SSM Agent 是在 Amazon EC2 執行個體上執行的 Amazon 軟體,因此 Session Manager 可以與其連線。如果看到此錯誤,表明 SSM Agent 無法與 Systems Manager 端點建立連線。問題的根源可能是防火牆限制、路由問題或沒有網際網路連線。若要解決此問題,請調查網路連線問題。

無權變更工作階段偏好設定

問題:您嘗試替您的組織更新公有的工作階段偏好設定,但系統會提示您沒有必須的許可。

受管節點無法使用或未設定用於 Session Manager

問題 1:您想要啟動工作階段在 Start a session (開啟工作階段) 主控台頁面,但受管節點不在清單中。

問題 2:您想要連接的受管節點位於 Start a session (開啟一個工作階段) 主控台頁面的清單裡,但頁面報告「您所選擇的執行個體沒有設定使用 Session Manager。」

找不到 Session Manager 外掛程式

若要使用 AWS CLI 執行工作階段命令,Session Manager 外掛程式也必須安裝在您的本機電腦上。如需相關資訊,請參閱 為 AWS CLI 安裝 Session Manager 外掛程式

Session Manager 外掛程式未自動新增到命令列路徑 (Windows)

當您在 Windows 上安裝 Session Manager 外掛程式,session-manager-plugin 可執行檔應該會自動新增到您的作業系統的 PATH 環境變數。如果在您執行之後命令失敗,請檢查 Session Manager 外掛程式是否正確地安裝 (aws ssm start-session --target instance-id),您可能需要使用以下程序手動設定。

修改 PATH 變數 (Windows)
  1. 按下 Windows 鍵並輸入 environment variables

  2. 選擇 Edit environment variables for your account (編輯您帳戶的環境變數)

  3. 選擇 PATH,然後選擇編輯

  4. 新增路徑至 Variable value (變數值) 欄位,以分號分隔,如下列範例所示:C:\existing\path;C:\new\path

    C:\existing\path 代表已經在欄位中的值。C:\new\path 代表您想要新增的路徑,如下列範例所示。

    • 64 位元機器C:\Program Files\Amazon\SessionManagerPlugin\bin\

    • 32 位元機器C:\Program Files (x86)\Amazon\SessionManagerPlugin\bin\

  5. 選擇 OK (確定) 兩次以套用新的設定。

  6. 關閉所有正在執行的命令提示並重新開啟。

Session Manager 外掛程式無回應

在連接埠轉送工作階段期間,如果您的本機電腦上安裝了防毒軟體,流量可能會停止轉送。在某些情況下,防毒軟體會干擾 Session Manager 外掛程式,從而導致程序死鎖。若要解決此問題,請在防毒軟體中允許或排除 Session Manager 外掛程式。如需有關 Session Manager 外掛程式的預設安裝路徑的相關資訊,請參閱 為 AWS CLI 安裝 Session Manager 外掛程式

TargetNotConnected

問題:您嘗試啟動工作階段,但系統傳回錯誤訊息:「呼叫 StartSession 操作時發生錯誤 (TargetNotConnected):未連接 InstanceID。」

  • 解決方案:當工作階段的指定目標受管節點未完全設定為與工作階段管理員搭配使用時,會傳回此錯誤。如需相關資訊,請參閱 設定 Session Manager

  • 解決方案 B:如果您嘗試啟動位於不同 AWS 帳戶 或 AWS 區域 受管節點上的工作階段,也會傳回此錯誤。

啟動工作階段後顯示空白畫面

問題:您啟動了工作階段,但 Session Manager 顯示空白畫面。

  • 解決方案 A:當受管節點上的根磁碟區滿載時,就可能發生此問題。因為缺少磁碟空間,所以節點上的 SSM Agent 停止運作。如果要解決此問題,請使用 Amazon CloudWatch 從作業系統收集指標和日誌。如需詳細資訊,請參閱《Amazon CloudWatch 使用者指南》中的 Collect metrics, logs, and traces with the CloudWatch agent

  • 解決方案 B:如果您使用包含不相符端點和區域配對的連結來存取主控台,則可能會顯示空白畫面。例如,在下列主控台 URL 中,us-west-2 是指定的端點,但 us-west-1 是指定的 AWS 區域:

    https://us-west-2.console.aws.amazon.com/systems-manager/session-manager/sessions?region=us-west-1
  • 解決方案 C:受管節點正在使用 VPC 端點連線至 Systems Manager,而您的 Session Manager 偏好設定會將工作階段輸出寫入 Amazon Simple Storage Service (Amazon S3) 儲存貯體或 Amazon CloudWatch Logs 日誌組,但 VPC 中不存在 s3 閘道端點或 logs 介面端點。如果您的受管節點使用 VPC 端點連線到 Systems Manager,則需要格式為 com.amazonaws.region.s3s3 端點,並且 Session Manager 偏好設定會將工作階段輸出寫入至 Amazon Simple Storage Service (Amazon S3) 儲存貯體。或者,如果您的受管節點使用 VPC 端點連線到 Systems Manager,則需要格式為 com.amazonaws.region.logslogs 端點,並且 Session Manager 偏好設定會將工作階段輸出寫入至 CloudWatch Logs 日誌群組。如需詳細資訊,請參閱若要建立 Systems Manager 的 VPC 端點

  • 解決方案 D:您在工作階段偏好設定中指定的日誌群組或 Amazon Simple Storage Service (Amazon S3) 儲存貯體已被刪除。若要解決此問題,請使用有效的日誌群組或 S3 儲存貯體來更新工作階段偏好設定。

  • 解決方案 E:您在工作階段偏好設定中指定的日誌群組或 Amazon Simple Storage Service (Amazon S3) 儲存貯體未加密,但您已將 cloudWatchEncryptionEnableds3EncryptionEnabled 輸入設定為 true。若要解決此問題,請使用已加密的日誌群組或 Amazon Simple Storage Service (Amazon S3) 儲存貯體更新工作階段偏好設定,或將 cloudWatchEncryptionEnableds3EncryptionEnabled 輸入設定為 false。此案例僅適用於使用命令列工具建立工作階段偏好設定的客戶。

受管節點在長時間執行工作階段期間變得沒有回應

問題:您的受管節點沒有回應或在長時間執行工作階段期間當機。

解決方案:減少 Session Manager 的 SSM Agent 日誌保留期限。

若要減少工作階段的 SSM Agent 日誌保留期限
  1. 在 Linux 的 /etc/amazon/ssm/ 目錄或 Windows 的 C:\Program Files\Amazon\SSM 目錄中找到 amazon-ssm-agent.json.template

  2. amazon-ssm-agent.json.template 的內容複製到同一目錄中的新檔案,名為 amazon-ssm-agent.json

  3. 降低 SSM 屬性中 SessionLogsRetentionDurationHours 值的預設值,並儲存檔案。

  4. 重新啟動SSM Agent。

呼叫 StartSession 操作時發生錯誤 (InvalidDocument)

問題:使用 AWS CLI 開始連線階段時,您收到下列錯誤。

An error occurred (InvalidDocument) when calling the StartSession operation: Document type: 'Command' is not supported. Only type: 'Session' is supported for Session Manager.

解決方案:您為 --document-name 參數指定的 SSM 文件不是連線階段文件。使用下列程序在 AWS Management Console 中檢視連線階段文件清單。

若要檢視連線階段文件清單
  1. 開啟位於 AWS Systems Managerhttps://console.aws.amazon.com/systems-manager/ 的主控台。https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Documents (文件)

  3. 類別清單中,選擇連線階段文件