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 更新主機管理組態
開啟位於 https://console.aws.amazon.com/systems-manager/
的 AWS Systems Manager 主控台。 在導覽窗格中,選擇 Quick Setup。
-
在組態清單中,選擇您建立的主機管理組態。
-
選擇動作,然後選擇編輯組態。
-
在目標區段底部附近,從選擇將執行個體設為目標的方式下選擇手動。
-
在執行個體區段中,選擇您建立的執行個體。
-
選擇更新。
等待幾分鐘,讓 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 疑難排解。
無權啟動工作階段
問題:您嘗試啟動工作階段,但系統會提示您沒有必須的許可。
-
解決方案:系統管理者尚未授予您 AWS Identity and Access Management (IAM) 政策權限來開始 Session Manager 工作階段。如需相關資訊,請參閱控制使用者工作階段存取執行個體。
SSM Agent不在線
問題:您會在 Amazon EC2 執行個體 Session Manager 索引標籤上看到一則訊息,指出:SSM Agent不在線。SSM Agent無法連線到 Systems Manager 端點,因而無法自行註冊服務。
解決方案:SSM Agent 是在 Amazon EC2 執行個體上執行的 Amazon 軟體,因此 Session Manager 可以與其連線。如果看到此錯誤,表明 SSM Agent 無法與 Systems Manager 端點建立連線。問題的根源可能是防火牆限制、路由問題或沒有網際網路連線。若要解決此問題,請調查網路連線問題。
無權變更工作階段偏好設定
問題:您嘗試替您的組織更新公有的工作階段偏好設定,但系統會提示您沒有必須的許可。
-
解決方案:系統管理者尚未授予您 IAM 政策權限來設定 Session Manager 工作階段。如需相關資訊,請參閱 授與或拒絕使用者許可來更新Session Manager偏好設定。
受管節點無法使用或未設定用於 Session Manager
問題 1:您想要啟動工作階段在 Start a session (開啟工作階段) 主控台頁面,但受管節點不在清單中。
-
解決方案 A:您想要連線的受管節點可能尚未設定用於 AWS Systems Manager。如需詳細資訊,請參閱為組織設定 Systems Manager 統一主控台。
注意
當您連接 IAM 執行個體設定檔時,如果 AWS Systems Manager SSM Agent 已在受管節點上執行,您可能需要重新啟動代理程式,該執行個體才會列在 Start a session (啟動工作階段) 主控台頁面上。
-
解決方案 B:套用至受管節點上的 SSM Agent 的代理組態可能不正確。如果代理組態不正確,受管節點將無法連線到所需的服務端點,或節點可能會以不同的作業系統向 Systems Manager 報告。如需詳細資訊,請參閱 將 SSM Agent 設定為使用 Linux 節點上的代理 和 將 SSM Agent 設定為使用 Windows Server 執行個體的代理。
問題 2:您想要連接的受管節點位於 Start a session (開啟一個工作階段) 主控台頁面的清單裡,但頁面報告「您所選擇的執行個體沒有設定使用 Session Manager。」
-
解決方案 A:受管節點已經被設定成使用於 Systems Manager 服務,但附加在節點上的 IAM 執行個體設定檔可能不會包含 Session Manager 功能的許可。如需相關資訊,請參閱使用 Session Manager 許可以驗證或建立 IAM 執行個體設定檔。
-
解決方案 B:受管節點無法在支援 Session Manager 的 SSM Agent 版本上執行。在節點上更新 SSM Agent 至 2.3.68.0 版本或更新版本。
依照 在 Windows Server EC2 執行個體上手動安裝和解除安裝 SSM Agent、在 Linux EC2 執行個體上手動安裝和解除安裝 SSM Agent 或 在 macOS EC2 執行個體上手動安裝和解除安裝 SSM Agent 步驟在受管節點上手動更新 SSM Agent,這取決於作業系統。
或者您可以在一或多個受管節點上使用 Run Command 文件
AWS-UpdateSSMAgent
更新代理程式版本。如需相關資訊,請參閱 使用 Run Command 更新 SSM Agent。提示
若要一直持續更新您的代理程式到最新版本,我們建議您定義自動化排程來更新 SSM Agent 到最新版,請使用下列其中一種方法。
-
在 State Manager 關聯過程中執行
AWS-UpdateSSMAgent
。如需相關資訊,請參閱 演練:使用 AWS CLI 自動更新 SSM Agent。 -
在維護時段內執行
AWS-UpdateSSMAgent
。如需使用維護時段的資訊,請參閱 使用主控台建立和管理維護時段 及教學課程:使用 AWS CLI 建立和設定維護時段。
-
-
解決方案 C:受管節點無法連線到必需的服務端點。您可以使用由 AWS PrivateLink 支援的介面端點,以連線到 Systems Manager 端點,從而提升受管節點的安全狀態。使用介面端點的替代方案是在您的受管節點上啟用對外網際網路存取。如需詳細資訊,請參閱使用 PrivateLink 設定 Session Manager 的 VPC 端點。
-
解決方案 D:受管節點的可用 CPU 或記憶體資源有限。雖然您的受管節點可能是正常的,但如果節點沒有足夠的可用資源,則無法建立工作階段。如需詳細資訊,請參閱對無法連線的執行個體進行故障診斷。
找不到 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)
-
按下 Windows 鍵並輸入
environment variables
。 -
選擇 Edit environment variables for your account (編輯您帳戶的環境變數)。
-
選擇 PATH,然後選擇編輯。
-
新增路徑至 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\
-
-
選擇 OK (確定) 兩次以套用新的設定。
-
關閉所有正在執行的命令提示並重新開啟。
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) 儲存貯體未加密,但您已將
cloudWatchEncryptionEnabled
或s3EncryptionEnabled
輸入設定為true
。若要解決此問題,請使用已加密的日誌群組或 Amazon Simple Storage Service (Amazon S3) 儲存貯體更新工作階段偏好設定,或將cloudWatchEncryptionEnabled
或s3EncryptionEnabled
輸入設定為false
。此案例僅適用於使用命令列工具建立工作階段偏好設定的客戶。
受管節點在長時間執行工作階段期間變得沒有回應
問題:您的受管節點沒有回應或在長時間執行工作階段期間當機。
解決方案:減少 Session Manager 的 SSM Agent 日誌保留期限。
若要減少工作階段的 SSM Agent 日誌保留期限
-
在 Linux 的
/etc/amazon/ssm/
目錄或 Windows 的C:\Program Files\Amazon\SSM
目錄中找到amazon-ssm-agent.json.template
。 -
將
amazon-ssm-agent.json.template
的內容複製到同一目錄中的新檔案,名為amazon-ssm-agent.json
。 -
降低
SSM
屬性中SessionLogsRetentionDurationHours
值的預設值,並儲存檔案。 -
重新啟動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 中檢視連線階段文件清單。
若要檢視連線階段文件清單
開啟位於 AWS Systems Managerhttps://console.aws.amazon.com/systems-manager/ 的主控台。https://console.aws.amazon.com/systems-manager/
-
在導覽窗格中,選擇 Documents (文件)。
-
在類別清單中,選擇連線階段文件。