Usar documentos do SSM do Systems Manager com o AWS FIS - AWS Fault Injection Service

Usar documentos do SSM do Systems Manager com o AWS FIS

O AWS FIS oferece suporte a tipos de falha personalizados por meio do Atendente SSM AWS Systems Manager e da ação do AWS FIS aws:ssm:send-command. Documentos do SSM do Systems Manager (documentos do SSM) pré-configurados que podem ser usados para criar ações comuns de injeção de falhas estão disponíveis como documentos públicos da AWS que começam com o prefixo AWSFIS-.

O Atendente SSM é um software da Amazon que pode ser instalado e configurado em instâncias do Amazon EC2, em servidores on-premises ou máquinas virtuais (VMs). Isso permite que o Systems Manager gerencie esses recursos. O agente processa solicitações do Systems Manager e, em seguida, as executa conforme especificado na solicitação. Você pode incluir seu próprio documento do SSM para injetar falhas personalizadas ou fazer referência a um dos documentos públicos de propriedade da Amazon.

Requisitos

Para ações que exigem que o Atendente SSM execute a ação no destino, você deve garantir o seguinte:

Usar a ação aws:ssm:send-command

Um documento do SSM define as ações que o Systems Manager realiza nas suas instâncias gerenciadas. O Systems Manager inclui vários documentos pré-configurados, ou você pode criar seus próprios. Para obter mais informações sobre como criar seu próprio documento do SSM, consulte Criar documentos do Systems Manager no Guia do usuário do AWS Systems Manager. Para obter mais informações sobre documentos do SSM em geral, consulte Documentos do AWS Systems Manager no Guia do usuário do AWS Systems Manager.

O AWS FIS fornece documentos do SSM pré-configurados. Você pode ver os documentos do SSM pré-configurados em Documentos no console do AWS Systems Manager: https://console.aws.amazon.com/systems-manager/documents. Você também pode escolher entre uma seleção de documentos pré-configurados no console do AWS FIS. Para ter mais informações, consulte Documentos do AWS FIS SSM pré-configurados.

Para usar um documento do SSM em seus experimentos do AWS FIS, você pode usar a ação aws:ssm:send-command. Essa ação busca e executa o documento do SSM especificado em suas instâncias de destino.

Ao usar a ação aws:ssm:send-command em seu modelo de experimento, você deve especificar parâmetros adicionais para a ação, incluindo o seguinte:

  • documentArn – obrigatório. O nome do recurso da Amazon (ARN) é o nome do documento do SSM.

  • documentParameters – Condicional. Os parâmetros necessários e opcionais que o documento do SSM aceita. O formato é um objeto JSON com chaves que são strings e valores que são strings ou arrays de strings.

  • documentVersion: optional. A versão do documento do SSM a ser executada.

Você pode visualizar as informações de um documento do SSM (incluindo os parâmetros do documento) usando o console do Systems Manager ou a linha de comando.

Para visualizar informações sobre um documento do SSM usando o console
  1. Abra o console AWS Systems Manager em https://console.aws.amazon.com/systems-manager/.

  2. No painel de navegação, escolha Documents.

  3. Selecione o documento e escolha a guia Detalhes.

Para visualizar informações sobre um documento do SSM usando a linha de comando

Use o comando describe-document do SSM.

Documentos do AWS FIS SSM pré-configurados

Você pode usar documentos do AWS FIS SSM pré-configurados com a ação aws:ssm:send-commandem seus modelos de experimento.

Requisitos
  • Os documentos do SSM pré-configurados fornecidos pelo AWS FIS são compatíveis somente com os seguintes sistemas operacionais:

    • Amazon Linux 2023, Amazon Linux 2, Amazon Linux

    • Ubuntu

    • RHEL 7, 8, 9

    • CentOS 8, 9

  • Os documentos do SSM pré-configurados fornecidos pelo AWS FIS são compatíveis somente com instâncias do EC2. Eles não são compatíveis com outros tipos de nós gerenciados, como servidores on-premises.

Para usar esses documentos do SSM em experimentos em tarefas do ECS, use o Ações do Amazon ECS correspondente. Por exemplo, a ação aws:ecs:task-cpu-stress usa o documento AWSFIS-Run-CPU-Stress.

Diferença entre duração da ação e DurationSeconds em documentos do SSM do AWS FIS

Alguns documentos do SSM limitam o próprio tempo de execução. Por exemplo, o parâmetro DurationSeconds é usado por alguns dos documentos do SSM do AWS FIS pré-configurados. Como resultado, você precisa especificar duas durações independentes na definição da ação do AWS FIS:

  • Action duration: para experimentos com uma única ação, a duração da ação é equivalente à duração do experimento. Com várias ações, a duração do experimento depende das durações individuais das ações e da ordem em que elas são executadas. O AWS FIS monitora cada ação até o fim da duração da ação.

  • Parâmetro de documento DurationSeconds: a duração, especificada em segundos, pela qual o documento do SSM será executado.

Você pode escolher valores diferentes para os dois tipos de duração:

  • Action duration exceeds DurationSeconds: a execução do documento do SSM termina antes que a ação seja concluída. O AWS FIS espera até o fim da duração da ação para que as ações subsequentes sejam iniciadas.

  • Action duration is shorter than DurationSeconds: o documento do SSM continua a execução após a conclusão da ação. Se a execução do documento do SSM ainda estiver em andamento e a duração da ação tiver expirado, o status da ação será definido como Concluído. O AWS FIS monitora a execução somente até o fim da duração da ação.

Observe que alguns documentos do SSM têm durações variáveis. Por exemplo, os documentos do SSM do AWS FIS têm a opção de instalar pré-requisitos, o que pode estender a duração geral da execução para além do parâmetro DurationSeconds especificado. Portanto, se você definir a duração da ação e DurationSeconds com o mesmo valor, o script do SSM poderá ser executado por mais tempo do que a duração da ação.

AWSFIS-Run-CPU-Stress

Executa o estresse da CPU em uma instância usando a ferramenta stress-ng. Usa o documento do SSM AWSFIS-Run-CPU-Stress.

Tipo de ação (somente console)

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

ARN

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

Parâmetros do documento
  • DurationSeconds – obrigatório. A duração do teste de estresse da CPU, em segundos.

  • CPU: optional. O número de estressores da CPU a usar. O padrão é 0, que usa todos os estressores da CPU.

  • LoadPercent: optional. A porcentagem da carga da CPU de destino, de 0 (sem carga) a 100 (carga total). O padrão é 100.

  • InstallDependencies: optional. Se o valor for True, o Systems Manager instalará as dependências necessárias nas instâncias de destino, caso elas ainda não estejam instaladas. O padrão é True. A dependência é stress-ng.

Veja a seguir um exemplo da string que você pode inserir no console.

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

AWSFIS-Run-Disk-Fill

Aloca espaço em disco no volume raiz de uma instância para simular uma falha no disco cheio. Usa o documento do SSM AWSFIS-Run-Disk-Fill.

Se o experimento de injeção dessa falha for interrompido, manualmente ou por meio de uma condição de parada, o AWS FIS tentará reverter cancelando o documento do SSM em execução. No entanto, se o disco estiver 100% cheio, devido à falha ou à falha mais a atividade do aplicativo, o Systems Manager talvez não consiga concluir a operação de cancelamento. Portanto, se você precisar interromper o experimento, certifique-se de que o disco não fique 100% cheio.

Tipo de ação (somente console)

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

ARN

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

Parâmetros do documento
  • DurationSeconds – obrigatório. A duração do teste de preenchimento de disco, em segundos.

  • Percent: optional. A porcentagem do disco para alocar durante o teste de preenchimento do disco. O padrão é 95%.

  • InstallDependencies: optional. Se o valor for True, o Systems Manager instalará as dependências necessárias nas instâncias de destino, caso elas ainda não estejam instaladas. O padrão é True. As dependências são atd e fallocate.

Veja a seguir um exemplo da string que você pode inserir no console.

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

AWSFIS-Run-IO-Stress

Executa o estresse de E/S em uma instância usando a ferramenta stress-ng. Usa o documento do SSM AWSFIS-Run-IO-Stress.

Tipo de ação (somente console)

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

ARN

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

Parâmetros do documento
  • DurationSeconds – obrigatório. A duração do teste de estresse de E/S, em segundos.

  • Workers: optional. O número de funcionários que realizam uma combinação de operações de leitura/gravação sequenciais, aleatórias e mapeadas na memória, sincronização forçada e descarte de cache. Vários processos secundários realizam diferentes operações de E/S no mesmo arquivo. O padrão é um.

  • Percent: optional. A porcentagem de espaço livre no sistema de arquivos a ser usada durante o teste de estresse de E/S. O padrão é 80%.

  • InstallDependencies: optional. Se o valor for True, o Systems Manager instalará as dependências necessárias nas instâncias de destino, caso elas ainda não estejam instaladas. O padrão é True. A dependência é stress-ng.

Veja a seguir um exemplo da string que você pode inserir no console.

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

AWSFIS-Run-Kill-Process

Interrompe o processo especificado na instância usando o comando killall. Usa o documento do SSM AWSFIS-Run-Kill-Process.

Tipo de ação (somente console)

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

ARN

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

Parâmetros do documento
  • ProcessName – obrigatório. O nome do processo a interromper.

  • Signal: optional. O sinal a ser enviado junto com o comando. Os valores possíveis são SIGTERM (que o receptor pode optar por ignorar) e SIGKILL (que não pode ser ignorado). O padrão é SIGTERM.

  • InstallDependencies: opcional. Se o valor for True, o Systems Manager instalará as dependências necessárias nas instâncias de destino, caso elas ainda não estejam instaladas. O padrão é True. A dependência é killall.

Veja a seguir um exemplo da string que você pode inserir no console.

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

AWSFIS-Run-Memory-Stress

Executa o estresse de memória em uma instância usando a ferramenta stress-ng. Usa o documento do SSM AWSFIS-Run-Memory-Stress.

Tipo de ação (somente console)

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

ARN

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

Parâmetros do documento
  • DurationSeconds – obrigatório. A duração do teste de estresse de memória, em segundos.

  • Workers: optional. O número de estressores da memória virtual. O padrão é um.

  • Percent – obrigatório. A porcentagem de memória virtual a ser usada durante o teste de estresse de memória.

  • InstallDependencies: optional. Se o valor for True, o Systems Manager instalará as dependências necessárias nas instâncias de destino, caso elas ainda não estejam instaladas. O padrão é True. A dependência é stress-ng.

Veja a seguir um exemplo da string que você pode inserir no console.

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

AWSFIS-Run-Network-Blackhole-Port

Reduz o tráfego de entrada ou saída do protocolo e da porta usando a ferramenta iptables. Usa o documento do SSM AWSFIS-Run-Network-Blackhole-Port.

Tipo de ação (somente console)

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

ARN

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

Parâmetros do documento
  • Protocol – obrigatório. O protocolo. Os valores possíveis são tcp e udp.

  • Port – obrigatório. O número da porta.

  • TrafficType: optional. O tipo de tráfego. Os valores possíveis são ingress e egress. O padrão é ingress.

  • DurationSeconds – obrigatório. A duração do teste de buraco negro da rede, em segundos.

  • InstallDependencies: optional. Se o valor for True, o Systems Manager instalará as dependências necessárias nas instâncias de destino, caso elas ainda não estejam instaladas. O padrão é True. As dependências são atd, dig e iptables.

Veja a seguir um exemplo da string que você pode inserir no console.

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

AWSFIS-Run-Network-Latency

Adiciona latência à interface de rede usando a ferramenta tc. Usa o documento do SSM AWSFIS-Run-Network-Latency.

Tipo de ação (somente console)

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

ARN

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

Parâmetros do documento
  • Interface: optional. A interface de rede. O padrão é eth0.

  • DelayMilliseconds: opcional. O atraso, em milissegundos. O padrão é 200.

  • DurationSeconds – obrigatório. A duração do teste de latência da rede, em segundos.

  • InstallDependencies: optional. Se o valor for True, o Systems Manager instalará as dependências necessárias nas instâncias de destino, caso elas ainda não estejam instaladas. O padrão é True. As dependências são atd, dig e tc.

Veja a seguir um exemplo da string que você pode inserir no console.

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

AWSFIS-Run-Network-Latency-Sources

Adiciona latência e instabilidade à interface de rede usando a ferramenta tc para tráfego de ou para fontes específicas. Usa o documento do SSM AWSFIS-Run-Network-Latency-Sources.

Tipo de ação (somente console)

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

ARN

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

Parâmetros do documento
  • Interface: optional. A interface de rede. O padrão é eth0.

  • DelayMilliseconds: opcional. O atraso, em milissegundos. O padrão é 200.

  • JitterMilliseconds: optional. O jitter, em milissegundos. O padrão é 10.

  • Sources – obrigatório. As fontes, separadas por vírgulas. Os valores possíveis são: um endereço IPv4, um bloco CIDR IPv4, um nome de domínio e DYNAMODB e S3. Se você especificar DYNAMODB ouS3, isso se aplica somente ao endpoint regional na região atual.

  • TrafficType: optional. O tipo de tráfego. Os valores possíveis são ingress e egress. O padrão é ingress.

  • DurationSeconds – obrigatório. A duração do teste de latência da rede, em segundos.

  • InstallDependencies: optional. Se o valor for True, o Systems Manager instalará as dependências necessárias nas instâncias de destino, caso elas ainda não estejam instaladas. O padrão é True. As dependências são atd, dig, jq e tc.

Veja a seguir um exemplo da string que você pode inserir no console.

{"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

Adiciona perda de pacotes à interface de rede usando a ferramenta tc. Usa o documento do SSM AWSFIS-Run-Network-Packet-Loss.

Tipo de ação (somente console)

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

ARN

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

Parâmetros do documento
  • Interface: optional. A interface de rede. O padrão é eth0.

  • LossPercent: opcional. A porcentagem de perda de pacotes. O padrão é 7%.

  • DurationSeconds – obrigatório. A duração do teste de perda de pacotes de rede, em segundos.

  • InstallDependencies: optional. Se o valor for True, o Systems Manager instalará as dependências necessárias nas instâncias de destino. O padrão é True. As dependências são atd, dig e tc.

Veja a seguir um exemplo da string que você pode inserir no console.

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

AWSFIS-Run-Network-Packet-Loss-Sources

Adiciona perda de pacotes à interface de rede usando a ferramenta tc para tráfego de ou para fontes específicas. Usa o documento do SSM AWSFIS-Run-Network-Packet-Loss-Sources.

Tipo de ação (somente console)

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

ARN

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

Parâmetros do documento
  • Interface: optional. A interface de rede. O padrão é eth0.

  • LossPercent: opcional. A porcentagem de perda de pacotes. O padrão é 7%.

  • Sources – obrigatório. As fontes, separadas por vírgulas. Os valores possíveis são: um endereço IPv4, um bloco CIDR IPv4, um nome de domínio e DYNAMODB e S3. Se você especificar DYNAMODB ouS3, isso se aplica somente ao endpoint regional na região atual.

  • TrafficType: optional. O tipo de tráfego. Os valores possíveis são ingress e egress. O padrão é ingress.

  • DurationSeconds – obrigatório. A duração do teste de perda de pacotes de rede, em segundos.

  • InstallDependencies: optional. Se o valor for True, o Systems Manager instalará as dependências necessárias nas instâncias de destino. O padrão é True. As dependências são atd, dig, jq e tc.

Veja a seguir um exemplo da string que você pode inserir no console.

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

Exemplos

Para obter um exemplo de modelo de experimento, consulte Executar um documento do SSM do AWS FIS.

Para obter um tutorial de exemplo, consulte Executar o estresse da CPU em uma instância.

Solução de problemas

Use o procedimento a seguir para solucionar problemas.

Para solucionar problemas com documentos do SSM
  1. Abra o console AWS Systems Manager em https://console.aws.amazon.com/systems-manager/.

  2. No painel de navegação, em Gerenciamento de nós, Executar comando.

  3. Na guia Histórico de comandos, use os filtros para localizar a execução do documento.

  4. Escolha o ID do comando para abrir sua página de detalhes.

  5. Escolha o ID da instância. Analise a saída e os erros de cada etapa.