Configuración de Registros de Amazon CloudWatch para Run Command - AWS Systems Manager

Configuración de Registros de Amazon CloudWatch para Run Command

Cuando se envía un comando mediante Run Command, una capacidad de AWS Systems Manager, es posible especificar la ubicación a la que se enviará la salida del comando. De manera predeterminada, Systems Manager devuelve únicamente los 24 000 primeros caracteres de la salida del comando. Si desea ver todos los detalles de la salida del comando, puede especificar un bucket de Amazon Simple Storage Service (Amazon S3). También puede especificar Registros de Amazon CloudWatch. Si especifica Registros de CloudWatch, Run Command enviará periódicamente la totalidad de la salida de los comandos y los registros de errores a Registros de CloudWatch. Puede monitorear los logs de salida prácticamente en tiempo real, buscar frases, valores o patrones específicos y crear alarmas en función de la búsqueda.

Si ha configurado el nodo para que utilicen las políticas administradas de AWS Identity and Access Management (IAM), AmazonSSMManagedInstanceCore y CloudWatchAgentServerPolicy, el nodo no requiere ninguna configuración adicional para enviar la salida a Registros de CloudWatch. Elija esta opción si se van a enviar comandos desde la consola o bien agregue la sección cloud-watch-output-config y el parámetro CloudWatchOutputEnabled si se va a utilizar la AWS Command Line Interface, (AWS CLI), AWS Tools for Windows PowerShell o una operación de la API. La sección cloud-watch-output-config y el parámetro CloudWatchOutputEnabled se describen con más detalle más adelante en este tema.

Para obtener información sobre cómo agregar políticas a un perfil de instancia para instancias de EC2, consulte Configuración de permisos de instancia requeridos para Systems Manager. Para obtener información sobre cómo agregar políticas a un rol de servicio para servidores locales y máquinas virtuales que tenga previsto utilizar como nodos administrados, consulte Creación del rol de servicio de IAM requerido para Systems Manager en entornos híbridos y multinube.

Si va a utilizar una política personalizada en los nodos, deberá actualizar la política en cada nodo para permitir que Systems Manager envíe la salida y los registros a Registros de CloudWatch. Agregue los objetos de política siguientes a la política personalizada. Para obtener más información acerca de la actualización de políticas de IAM, consulte la Edición de políticas de IAM en la Guía del usuario de IAM.

{ "Effect": "Allow", "Action": "logs:DescribeLogGroups", "Resource": "*" }, { "Effect":"Allow", "Action":[ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource":"arn:aws:logs:*:*:log-group:/aws/ssm/*" },

Especificación de Registros de CloudWatch al momento de enviar comandos

Para especificar Registros de CloudWatch como salida cuando envíe un comando desde la AWS Management Console, elija CloudWatch Output (Salida de CloudWatch) en la sección Output options (Opciones de salida). Si lo prefiere, puede especificar el nombre del grupo de Registros de CloudWatch al que desea enviar la salida del comando. Si no especifica un nombre de grupo, Systems Manager crea automáticamente un grupo de registros. El grupo de registro utiliza un nombre con el siguiente formato: /aws/ssm/SystemsManagerDocumentName

Si ejecuta comandos mediante la AWS CLI, especifique la sección cloud-watch-output-config en el comando. En esta sección podrá especificar el parámetro CloudWatchOutputEnabled y, si lo desea, el parámetro CloudWatchLogGroupName. A continuación se muestra un ejemplo.

Linux & macOS
aws ssm send-command \ --instance-ids "instance ID" \ --document-name "AWS-RunShellScript" \ --parameters "commands=echo helloWorld" \ --cloud-watch-output-config "CloudWatchOutputEnabled=true,CloudWatchLogGroupName=log group name"
Windows
aws ssm send-command ^ --document-name "AWS-RunPowerShellScript" ^ --parameters commands=["echo helloWorld"] ^ --targets "Key=instanceids,Values=an instance ID” ^ --cloud-watch-output-config '{"CloudWatchLogGroupName":"log group name","CloudWatchOutputEnabled":true}'

Visualización de la salida de comandos en Registros de CloudWatch

Tan pronto como el comando comienza a ejecutarse, Systems Manager envía la salida a Registros de CloudWatch prácticamente en tiempo real. La salida tiene el siguiente formato en Registros de CloudWatch:

CommandID/InstanceID/PluginID/stdout

CommandID/InstanceID/PluginID/stderr

La salida de la ejecución se carga cada 30 segundos o cada vez que el búfer contiene más de 200 KB, lo que suceda antes.

nota

Los flujos de registro únicamente se crean si hay datos de salida disponibles. Por ejemplo, si no hay datos de error para una ejecución, el flujo stderr no se crea.

A continuación, se ofrece un ejemplo de la salida de comandos tal y como se muestra en Registros de CloudWatch.

Group - /aws/ssm/AWS-RunShellScript
Streams – 
1234-567-8910/i-abcd-efg-hijk/AWS-RunPowerShellScript/stdout
24/1234-567-8910/i-abcd-efg-hijk/AWS-RunPowerShellScript/stderr