搭配 Systems Manager SSM 文件使用 AWS FIS - AWS 故障注入服務

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

搭配 Systems Manager SSM 文件使用 AWS FIS

AWS FIS 透過 AWS Systems Manager SSM客服人員和 AWS FIS動作 支援自訂故障類型aws:ssm:send-command。可用於建立常見錯誤注入動作的預先設定 Systems Manager SSM 文件 (SSM 文件),可作為以 字 AWSFIS首開頭的公有 AWS 文件。

SSM 代理程式是可在 Amazon EC2執行個體、內部部署伺服器或虛擬機器 () 上安裝和設定的 Amazon 軟體VMs。這可讓 Systems Manager 管理這些資源。代理程式會處理 Systems Manager 的請求,然後按照請求中指定的方式執行這些請求。您可以包含自己的SSM文件來插入自訂故障,或參考其中一個公有 Amazon 擁有的文件。

要求

對於需要SSM客服人員在目標上執行動作的動作,您必須確保下列事項:

使用 aws:ssm:send-command 動作

SSM 文件定義 Systems Manager 對受管執行個體執行的動作。Systems Manager 包含許多預先設定的文件,或者您可以建立自己的文件。如需建立您自己的SSM文件的詳細資訊,請參閱 AWS Systems Manager 使用者指南 中的建立 Systems Manager 文件。如需文件SSM的一般詳細資訊,請參閱 AWS Systems Manager 使用者指南 中的AWS Systems Manager 文件

AWS FIS 提供預先設定SSM的文件。您可以在 AWS Systems Manager 主控台中的SSM文件下檢視預先設定的文件https://console.aws.amazon.com/systems-manager/文件 。您也可以在主控台中選擇 AWS FIS預先設定的文件。如需詳細資訊,請參閱預先設定 AWS FISSSM的文件

若要在 AWS FIS實驗中使用SSM文件,您可以使用 aws:ssm:send-command動作。此動作會在目標執行個體上擷取並執行指定的SSM文件。

當您在實驗範本中使用 aws:ssm:send-command動作時,您必須為 動作指定其他參數,包括下列項目:

  • documentArn - 必要。SSM 文件的 Amazon Resource Name (ARN)。

  • documentParameters – 有條件。SSM 文件接受的必要和選用參數。格式是具有金鑰的JSON物件,這些金鑰是字串,而值可以是字串或字串陣列。

  • documentVersion - 選用。要執行SSM的文件版本。

您可以使用 Systems Manager 主控台或命令列來檢視SSM文件的資訊 (包括文件的參數)。

使用主控台檢視SSM文件的相關資訊
  1. 在 開啟 AWS Systems Manager 主控台https://console.aws.amazon.com/systems-manager/

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

  3. 選取文件,然後選擇詳細資訊索引標籤。

使用命令列檢視SSM文件的相關資訊

使用 SSM describe-document 命令。

預先設定 AWS FISSSM的文件

您可以在實驗範本中使用預先設定 AWS FISSSM的文件與 aws:ssm:send-command動作。

要求
  • 只有下列作業系統支援 AWS FIS提供的預先設定SSM文件:

    • Amazon Linux 2023、Amazon Linux 2、Amazon Linux

    • Ubuntu

    • RHEL 7、8、9

    • CentOS 8、9

  • 只有EC2執行個體支援 AWS FIS提供的預先設定SSM文件。其他類型的受管節點不支援這些節點,例如內部部署伺服器。

若要在ECS任務的實驗中使用這些SSM文件,請使用對應的 Amazon ECS動作。例如,aws:ecs:task-cpu-stress動作使用 AWSFIS-Run-CPU-Stress 文件。

動作持續時間與 DurationSeconds AWS FISSSM文件中 之間的差異

有些SSM文件會限制自己的執行時間,例如 DurationSeconds,某些預先設定 AWS FISSSM的文件會使用 參數。因此,您需要在 AWS FIS動作定義中指定兩個獨立的持續時間:

  • Action duration:對於具有單一動作的實驗,動作持續時間相當於實驗持續時間。對於多個動作,實驗持續時間取決於個別動作持續時間及其執行順序。 AWS FIS 會監控每個動作,直到其動作持續時間結束為止。

  • 文件參數 DurationSeconds:以秒為單位指定的持續時間,SSM文件將執行該持續時間。

您可以為兩種持續時間類型選擇不同的值:

  • Action duration exceeds DurationSeconds:SSM文件執行會在動作完成之前完成。 AWS FIS 會等到動作持續時間過了之後,再啟動後續動作。

  • Action duration is shorter than DurationSeconds:SSM文件會在動作完成後繼續執行。如果SSM文件執行仍在進行中,且動作持續時間已過,則動作狀態會設為已完成。 AWS FIS 只會監控執行,直到動作持續時間已過為止。

請注意,某些SSM文件具有可變持續時間。例如 AWS FIS,SSM文件可以選擇安裝先決條件,這可以將整體執行持續時間延長到指定的 DurationSeconds 參數之外。因此,如果您將動作持續時間和 DurationSeconds 設定為相同的值,則SSM指令碼執行的時間可能會超過動作持續時間。

AWSFIS-Run-CPU-Stress

使用 stress-ng工具在執行個體上執行CPU壓力。使用 AWSFIS-Run-CPU-Stress SSM 文件。

動作類型 (僅限主控台)

aws:ssm:send-command/AWSFIS-Run-CPU-Stress

ARN

arn:aws:ssm:region::document/AWSFIS-Run-CPU-Stress

文件參數
  • DurationSeconds - 必要。CPU 壓力測試的持續時間,以秒為單位。

  • CPU - 選用。要使用CPU的壓力源數量。預設值為 0,它使用所有CPU壓力源。

  • LoadPercent - 選用。目標CPU負載百分比,從 0 (無負載) 到 100 (滿載)。預設為 100。

  • InstallDependencies - 選用。如果值為 True,則 Systems Manager 會在目標執行個體尚未安裝時,安裝所需的相依性。預設值為 True。相依性為 stress-ng

以下是您可以在主控台中輸入的字串範例。

{"DurationSeconds":"60", "InstallDependencies":"True"}

AWSFIS-Run-Disk-Fill

在執行個體的根磁碟區上配置磁碟空間,以模擬磁碟完全故障。使用 AWSFIS-Run-Disk-Fill SSM 文件。

如果手動或透過停止條件來停止注入此故障的實驗, AWS FIS 會嘗試透過取消執行中的SSM文件來復原。不過,如果磁碟已滿 100%,無論是由於故障或故障加上應用程式活動,Systems Manager 都可能無法完成取消操作。因此,如果您可能需要停止實驗,請確保磁碟不會 100% 滿。

動作類型 (僅限主控台)

aws:ssm:send-command/AWSFIS-Run-Disk-Fill

ARN

arn:aws:ssm:region::document/AWSFIS-Run-Disk-Fill

文件參數
  • DurationSeconds - 必要。磁碟填充測試的持續時間,以秒為單位。

  • Percent - 選用。在磁碟填充測試期間要配置的磁碟百分比。預設值為 95%。

  • InstallDependencies - 選用。如果值為 True,則 Systems Manager 會在目標執行個體尚未安裝時,安裝所需的相依性。預設值為 True。相依性為 atdfallocate

以下是您可以在主控台中輸入的字串範例。

{"DurationSeconds":"60", "InstallDependencies":"True"}

AWSFIS-Run-IO-Stress

使用 stress-ng工具在執行個體上執行 IO 應力。使用 AWSFIS-Run-IO-Stress SSM 文件。

動作類型 (僅限主控台)

aws:ssm:send-command/AWSFIS-Run-IO-Stress

ARN

arn:aws:ssm:region::document/AWSFIS-Run-IO-Stress

文件參數
  • DurationSeconds - 必要。IO 壓力測試的持續時間,以秒為單位。

  • Workers - 選用。執行循序、隨機和記憶體映射讀取/寫入操作、強制同步和快取捨棄的工作者人數。多個子程序會在同一檔案上執行不同的 I/O 操作。預設為 1。

  • Percent - 選用。檔案系統上要在 IO 壓力測試期間使用的可用空間百分比。預設值為 80%。

  • InstallDependencies - 選用。如果值為 True,則 Systems Manager 會在目標執行個體尚未安裝時,安裝所需的相依性。預設值為 True。相依性為 stress-ng

以下是您可以在主控台中輸入的字串範例。

{"Workers":"1", "Percent":"80", "DurationSeconds":"60", "InstallDependencies":"True"}

AWSFIS-Run-Kill-Process

使用 killall命令停止執行個體中的指定程序。使用 AWSFIS-Run-Kill-Process SSM 文件。

動作類型 (僅限主控台)

aws:ssm:send-command/AWSFIS-Run-Kill-Process

ARN

arn:aws:ssm:region::document/AWSFIS-Run-Kill-Process

文件參數
  • ProcessName - 必要。要停止的程序名稱。

  • Signal - 選用。隨 命令一起傳送的訊號。可能的值為 SIGTERM(接收者可以選擇忽略) 和 SIGKILL(無法忽略)。預設值為 SIGTERM

  • InstallDependencies – 選用。如果值為 True,則 Systems Manager 會在目標執行個體尚未安裝時,安裝所需的相依性。預設值為 True。相依性為 killall

以下是您可以在主控台中輸入的字串範例。

{"ProcessName":"myapplication", "Signal":"SIGTERM"}

AWSFIS-Run-Memory-Stress

使用 stress-ng工具在執行個體上執行記憶體壓力。使用 AWSFIS-Run-Memory-Stress SSM 文件。

動作類型 (僅限主控台)

aws:ssm:send-command/AWSFIS-Run-Memory-Stress

ARN

arn:aws:ssm:region::document/AWSFIS-Run-Memory-Stress

文件參數
  • DurationSeconds - 必要。記憶體壓力測試的持續時間,以秒為單位。

  • Workers - 選用。虛擬記憶體壓力因素的數量。預設為 1。

  • Percent - 必要。在記憶體壓力測試期間要使用的虛擬記憶體百分比。

  • InstallDependencies - 選用。如果值為 True,則 Systems Manager 會在目標執行個體尚未安裝時,安裝所需的相依性。預設值為 True。相依性為 stress-ng

以下是您可以在主控台中輸入的字串範例。

{"Percent":"80", "DurationSeconds":"60", "InstallDependencies":"True"}

AWSFIS-Run-Network-Blackhole-Port

使用 iptables工具捨棄通訊協定和連接埠的傳入或傳出流量。使用 AWSFIS-Run-Network-Blackhole-Port SSM 文件。

動作類型 (僅限主控台)

aws:ssm:send-command/AWSFIS-Run-Network-Blackhole-Port

ARN

arn:aws:ssm:region::document/AWSFIS-Run-Network-Blackhole-Port

文件參數
  • Protocol - 必要。通訊協定。可能的值為 tcpudp

  • Port - 必要。連接埠號碼。

  • TrafficType - 選用。流量類型。可能的值為 ingressegress。預設值為 ingress

  • DurationSeconds - 必要。網路黑洞測試的持續時間,以秒為單位。

  • InstallDependencies - 選用。如果值為 True,則 Systems Manager 會在目標執行個體尚未安裝時,安裝所需的相依性。預設值為 True。相依性為 atddigiptables

以下是您可以在主控台中輸入的字串範例。

{"Protocol":"tcp", "Port":"8080", "TrafficType":"egress", "DurationSeconds":"60", "InstallDependencies":"True"}

AWSFIS-Run-Network-Latency

使用 tc工具將延遲新增至網路介面。使用 AWSFIS-Run-Network-Latency SSM 文件。

動作類型 (僅限主控台)

aws:ssm:send-command/AWSFIS-Run-Network-Latency

ARN

arn:aws:ssm:region::document/AWSFIS-Run-Network-Latency

文件參數
  • Interface - 選用。網路介面。預設值為 eth0

  • DelayMilliseconds – 選用。延遲,以毫秒為單位。預設值為 200。

  • DurationSeconds - 必要。網路延遲測試的持續時間,以秒為單位。

  • InstallDependencies - 選用。如果值為 True,則 Systems Manager 會在目標執行個體尚未安裝時,安裝所需的相依性。預設值為 True。相依性為 atddigtc

以下是您可以在主控台中輸入的字串範例。

{"DelayMilliseconds":"200", "Interface":"eth0", "DurationSeconds":"60", "InstallDependencies":"True"}

AWSFIS-Run-Network-Latency-Sources

使用 tc工具將延遲和抖動新增至網路介面,以用於往來特定來源的流量。使用 AWSFIS-Run-Network-Latency-Sources SSM 文件。

動作類型 (僅限主控台)

aws:ssm:send-command/AWSFIS-Run-Network-Latency-Sources

ARN

arn:aws:ssm:region::document/AWSFIS-Run-Network-Latency-Sources

文件參數
  • Interface - 選用。網路介面。預設值為 eth0

  • DelayMilliseconds – 選用。延遲,以毫秒為單位。預設值為 200。

  • JitterMilliseconds - 選用。抖動,以毫秒為單位。預設為 10。

  • Sources - 必要。來源,以逗號分隔。可能的值為:IPv4地址、IPv4CIDR區塊、網域名稱DYNAMODB、 和 S3。如果您指定 DYNAMODBS3,這僅適用於目前區域中的區域端點。

  • TrafficType - 選用。流量類型。可能的值為 ingressegress。預設值為 ingress

  • DurationSeconds - 必要。網路延遲測試的持續時間,以秒為單位。

  • InstallDependencies - 選用。如果值為 True,則 Systems Manager 會在目標執行個體尚未安裝時,安裝所需的相依性。預設值為 True。相依性為 atdjqdigtc

以下是您可以在主控台中輸入的字串範例。

{"DelayMilliseconds":"200", "JitterMilliseconds":"15", "Sources":"S3,www.example.com,72.21.198.67", "Interface":"eth0", "TrafficType":"egress", "DurationSeconds":"60", "InstallDependencies":"True"}

AWSFIS-Run-Network-Packet-Loss

使用 tc工具將封包遺失新增至網路介面。使用 AWSFIS-Run-Network-Packet-Loss SSM 文件。

動作類型 (僅限主控台)

aws:ssm:send-command/AWSFIS-Run-Network-Packet-Loss

ARN

arn:aws:ssm:region::document/AWSFIS-Run-Network-Packet-Loss

文件參數
  • Interface - 選用。網路介面。預設值為 eth0

  • LossPercent – 選用。封包遺失的百分比。預設值為 7%。

  • DurationSeconds - 必要。網路封包遺失測試的持續時間,以秒為單位。

  • InstallDependencies - 選用。如果值為 True,Systems Manager 會在目標執行個體上安裝所需的相依性。預設值為 True。相依性為 atddigtc

以下是您可以在主控台中輸入的字串範例。

{"LossPercent":"15", "Interface":"eth0", "DurationSeconds":"60", "InstallDependencies":"True"}

AWSFIS-Run-Network-Packet-Loss-Sources

使用 tc工具,將封包遺失新增至網路介面,以處理往來於特定來源的流量。使用 AWSFIS-Run-Network-Packet-Loss-Sources SSM 文件。

動作類型 (僅限主控台)

aws:ssm:send-command/AWSFIS-Run-Network-Packet-Loss-Sources

ARN

arn:aws:ssm:region::document/AWSFIS-Run-Network-Packet-Loss-Sources

文件參數
  • Interface - 選用。網路介面。預設值為 eth0

  • LossPercent – 選用。封包遺失的百分比。預設值為 7%。

  • Sources - 必要。來源,以逗號分隔。可能的值為:IPv4地址、IPv4CIDR區塊、網域名稱DYNAMODB、 和 S3。如果您指定 DYNAMODBS3,這僅適用於目前區域中的區域端點。

  • TrafficType - 選用。流量類型。可能的值為 ingressegress。預設值為 ingress

  • DurationSeconds - 必要。網路封包遺失測試的持續時間,以秒為單位。

  • InstallDependencies - 選用。如果值為 True,Systems Manager 會在目標執行個體上安裝所需的相依性。預設值為 True。相依性為 atdjqdigtc

以下是您可以在主控台中輸入的字串範例。

{"LossPercent":"15", "Sources":"S3,www.example.com,72.21.198.67", "Interface":"eth0", "TrafficType":"egress", "DurationSeconds":"60", "InstallDependencies":"True"}

範例

如需實驗範本範例,請參閱 執行預先設定 AWS FISSSM文件

如需教學課程範例,請參閱在執行個體上執行 CPU stress

故障診斷

使用下列程序對問題進行疑難排解。

疑難排解SSM文件的問題
  1. 在 開啟 AWS Systems Manager 主控台https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Node Management 執行命令

  3. 命令歷史記錄索引標籤上,使用篩選條件來尋找文件的執行。

  4. 選擇 命令的 ID 以開啟其詳細資訊頁面。

  5. 選擇執行個體的 ID。檢閱每個步驟的輸出和錯誤。