Escenarios comunes con el agente de CloudWatch - Amazon CloudWatch

Escenarios comunes con el agente de CloudWatch

En esta sección encontrará diferentes escenarios en los que se describen algunas de las tareas comunes de configuración y personalización con el agente de CloudWatch.

Ejecución del agente de CloudWatch como otro usuario

En los servidores Linux, CloudWatch se ejecuta como el superusuario de forma predeterminada. Para que el agente se ejecute como otro usuario, utilice el parámetro run_as_user en la sección agent del archivo de configuración del agente de CloudWatch. Esta opción solo está disponible en los servidores Linux.

Si ya está ejecutando el agente con el usuario raíz y desea usar otro usuario, utilice uno de los siguientes procedimientos.

Para ejecutar el agente de CloudWatch como otro usuario en una instancia EC2 que ejecuta Linux
  1. Descargue e instale un nuevo paquete del agente de CloudWatch. Para obtener más información, consulte Descargue del paquete de del agente de CloudWatch.

  2. Cree un nuevo usuario de Linux o utilice el nombre de usuario de Linux predeterminado cwagent que creó el archivo RPM o DEB.

  3. Proporcione credenciales para este usuario en una de estas formas:

    • Si el archivo .aws/credentials existe en el directorio inicial del superusuario, debe crear un archivo de credenciales para el usuario que va a utilizar para ejecutar el agente de CloudWatch. Este archivo de credenciales será /home/username/.aws/credentials. A continuación, establezca el valor del parámetro shared_credential_file en common-config.toml para el nombre de ruta del archivo de credenciales. Para obtener más información, consulte (Opcional) Modifique la configuración común para la información del proxy o de la región.

    • Si el archivo .aws/credentials no existe en el directorio inicial del superusuario, puede realizar una de las siguientes opciones:

      • Cree un archivo de credenciales para el usuario que va a utilizar para ejecutar el agente de CloudWatch. Este archivo de credenciales será /home/username/.aws/credentials. A continuación, establezca el valor del parámetro shared_credential_file en common-config.toml para el nombre de ruta del archivo de credenciales. Para obtener más información, consulte (Opcional) Modifique la configuración común para la información del proxy o de la región.

      • En lugar de crear un archivo de credenciales, adjunte un rol de IAM a la instancia. El agente utiliza este rol como el proveedor de credenciales.

  4. En el archivo de configuración del agente de CloudWatch, agregue la siguiente línea a la sección agent:

    "run_as_user": "username"

    Realice otras modificaciones en el archivo de configuración según sea necesario. Para obtener más información, consulte Cree el archivo de configuración del agente de CloudWatch

  5. Otorgar al usuario los permisos necesarios. El usuario debe tener permisos Read (r) para los archivos de registro que se van a recopilar y el permiso Execute (x) en cada directorio de la ruta de los archivos de registro.

  6. Inicie el agente con el archivo de configuración que acaba de modificar.

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:configuration-file-path
Para ejecutar el agente de CloudWatch como otro usuario en un servidor en las instalaciones que ejecuta Linux
  1. Descargue e instale un paquete nuevo del agente de CloudWatch. Para obtener más información, consulte Descargue del paquete de del agente de CloudWatch.

  2. Cree un nuevo usuario de Linux o utilice el nombre de usuario de Linux predeterminado cwagent que creó el archivo RPM o DEB.

  3. Almacene las credenciales de este usuario en una ruta a la que el usuario pueda obtener acceso, como /home/username/.aws/credentials.

  4. Establezca el valor del parámetro shared_credential_file en common-config.toml para nombre de ruta del archivo de credenciales. Para obtener más información, consulte (Opcional) Modifique la configuración común para la información del proxy o de la región.

  5. En el archivo de configuración del agente de CloudWatch, agregue la siguiente línea a la sección agent:

    "run_as_user": "username"

    Realice otras modificaciones en el archivo de configuración según sea necesario. Para obtener más información, consulte Cree el archivo de configuración del agente de CloudWatch

  6. Otorgar los permisos necesarios para el usuario. El usuario debe tener permisos Read (r) para los archivos de registro que se van a recopilar y el permiso Execute (x) en cada directorio de la ruta de los archivos de registro.

  7. Inicie el agente con el archivo de configuración que acaba de modificar.

    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:configuration-file-path

Cómo el agente de CloudWatch maneja los archivos de registro dispersos

Los archivos dispersos son archivos con bloques vacíos y contenido real. Un archivo disperso utiliza el espacio en disco de manera más eficiente escribiendo información breve que representa los bloques vacíos en el disco en lugar de los bytes nulos reales que componen el bloque. Esto hace que el tamaño real de un archivo disperso sea generalmente mucho más pequeño que su tamaño aparente.

Sin embargo, el agente de CloudWatch no trata los archivos dispersos de manera distinta a los archivos normales. Cuando el agente lee un archivo disperso, los bloques vacíos se tratan como bloques «reales» rellenos de bytes nulos. Debido a esto, el agente de CloudWatch publica tantos bytes como el tamaño aparente de un archivo disperso en CloudWatch.

La configuración del agente de CloudWatch para publicar un archivo disperso puede causar costos de CloudWatch superiores a los esperados, por lo que se recomienda no configurarlo de esa manera. Por ejemplo, /var/logs/lastlog en Linux suele ser un archivo muy disperso y se recomienda que no lo publique en CloudWatch.

Adición de dimensiones personalizadas a métricas que el agente de CloudWatch recopila

Para añadir dimensiones personalizadas, como etiquetas, a métricas recopiladas por el agente, añada el campo append_dimensions a la sección del archivo de configuración del agente que enumera dichas métricas.

Por ejemplo, la siguiente sección de ejemplo del archivo de configuración añade una dimensión personalizada denominada stackName con un valor de Prod a las métricas cpu y disk recopiladas por el agente.

"cpu":{ "resources":[ "*" ], "measurement":[ "cpu_usage_guest", "cpu_usage_nice", "cpu_usage_idle" ], "totalcpu":false, "append_dimensions":{ "stackName":"Prod" } }, "disk":{ "resources":[ "/", "/tmp" ], "measurement":[ "total", "used" ], "append_dimensions":{ "stackName":"Prod" } }

Recuerde que cada vez que cambie el archivo de configuración del agente, debe reiniciar el agente para que los cambios surtan efecto.

Varios archivos de configuración del agente de CloudWatch

En los servidores Linux y Windows, puede configurar el agente de CloudWatch para que utilice varios archivos de configuración. Por ejemplo, puede utilizar un archivo de configuración común que recopile un conjunto de métricas, registros y seguimientos que siempre desea recopilar de todos los servidores de la infraestructura. Y también puede utilizar archivos de configuración adicionales que recopilen métricas de determinadas aplicaciones o en situaciones concretas.

Para realizar esta configuración, primero debe crear los archivos de configuración que desea utilizar. Los archivos de configuración que se vayan a utilizar conjuntamente en el mismo servidor deben tener nombres diferentes. Puede almacenar los archivos de configuración en los servidores o en el almacén de parámetros.

Inicie el agente de CloudWatch mediante la opción fetch-config y especifique el primer archivo de configuración. Para añadir el segundo archivo de configuración al agente en ejecución, utilice el mismo comando pero con la opción append-config. Se recopilan todas las métricas, registros y seguimientos indicados en los dos archivos de configuración. Los siguientes comandos de ejemplo ilustran este escenario mediante almacenes de configuración como archivos. La primera línea inicia el agente mediante el archivo de configuración infrastructure.json y la segunda añade el archivo de configuración app.json.

Los siguientes comandos de ejemplo son para Linux.

/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/tmp/infrastructure.json
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -m ec2 -s -c file:/tmp/app.json

Los siguientes comandos de ejemplo son para Windows Server.

& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\infrastructure.json"
& "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a append-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\app.json"

Los siguientes archivos de configuración de ejemplo ilustran un uso de esta característica. El primer archivo de configuración se utiliza para todos los servidores de la infraestructura y el segundo solo recopila los registros de una determinada aplicación y se asocia a los servidores que ejecutan dicha aplicación.

infrastructure.json

{ "metrics": { "metrics_collected": { "cpu": { "resources": [ "*" ], "measurement": [ "usage_active" ], "totalcpu": true }, "mem": { "measurement": [ "used_percent" ] } } }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log", "log_group_name": "amazon-cloudwatch-agent.log" }, { "file_path": "/var/log/messages", "log_group_name": "/var/log/messages" } ] } } } }

app.json

{ "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/app/app.log*", "log_group_name": "/app/app.log" } ] } } } }

Los archivos de configuración que se añadan a la configuración deben tener nombres diferentes y distintos del archivo de configuración inicial. Si utiliza append-config con un archivo de configuración que tiene el mismo nombre que otro que ya está utilizando el agente, el comando append sobrescribe la información del primer archivo de configuración en lugar de añadirle nuevo contenido. Esto es válido incluso si los dos archivos de configuración con el mismo nombre se encuentran en diferentes rutas de archivo.

El ejemplo anterior muestra el uso de dos archivos de configuración, pero no existe ningún límite respecto al número de archivos de configuración que se pueden añadir a la configuración del agente. También puede combinar el uso de archivos de configuración ubicados en servidores con las configuraciones ubicadas en el almacén de parámetros.

Adición o acumulación de las métricas que el agente de CloudWatch recopila

Para agregar o acumular las métricas recopiladas por el agente, añada un campo aggregation_dimensions a la sección de dicha métrica en el archivo de configuración del agente.

Por ejemplo, el siguiente fragmento del archivo de configuración acumula métricas en la dimensión AutoScalingGroupName. Se agregan las métricas de todas las instancias de cada grupo de Auto Scaling y se pueden ver como un conjunto.

"metrics": { "cpu":{...} "disk":{...} "aggregation_dimensions" : [["AutoScalingGroupName"]] }

Para acumularlas en función de la combinación de cada una de las dimensiones InstanceId y InstanceType, además de acumularlas por el nombre de grupo de Auto Scaling, agregue lo siguiente.

"metrics": { "cpu":{...} "disk":{...} "aggregation_dimensions" : [["AutoScalingGroupName"], ["InstanceId", "InstanceType"]] }

Para acumular las métricas en una colección en su lugar, utilice [].

"metrics": { "cpu":{...} "disk":{...} "aggregation_dimensions" : [[]] }

Recuerde que cada vez que cambie el archivo de configuración del agente, debe reiniciar el agente para que los cambios surtan efecto.

Recopilación de métricas de alta resolución con el agente de CloudWatch

El campo metrics_collection_interval especifica el intervalo de tiempo de las métricas recopiladas, en segundos. Al especificar un valor de menos de 60 para este campo, las métricas se recopilan como métricas de alta resolución.

Por ejemplo, si todas las métricas deben ser de alta resolución y se recopilan cada 10 segundos, especifique 10 como el valor de metrics_collection_interval en la sección agent como un intervalo de recopilación de métricas globales.

"agent": { "metrics_collection_interval": 10 }

De forma alternativa, el siguiente ejemplo establece las métricas de cpu que se van a recopilar cada segundo, mientras que las demás métricas se recopilan cada minuto.

"agent":{ "metrics_collection_interval": 60 }, "metrics":{ "metrics_collected":{ "cpu":{ "resources":[ "*" ], "measurement":[ "cpu_usage_guest" ], "totalcpu":false, "metrics_collection_interval": 1 }, "disk":{ "resources":[ "/", "/tmp" ], "measurement":[ "total", "used" ] } } }

Recuerde que cada vez que cambie el archivo de configuración del agente, debe reiniciar el agente para que los cambios surtan efecto.

Envío de métricas, registros y seguimientos a una cuenta diferente

Para que el agente de CloudWatch envíe las métricas, los registros o los seguimientos a una cuenta diferente, especifique un parámetro role_arn en el archivo de configuración del agente en el servidor de envío. El valor de role_arn especifica un rol de IAM en la cuenta de destino que el agente utiliza al enviar datos a dicha cuenta. Este rol permite que la cuenta de envío asuma un rol correspondiente en la cuenta de destino al enviar las métricas o los registros a la cuenta de destino.

También puede especificar cadenas role_arn distintas en el archivo de configuración del agente: una para utilizarla al enviar métricas, otra para enviar registros y otra para enviar seguimientos.

El siguiente ejemplo de parte de la sección agent del archivo de configuración establece que el agente utilice CrossAccountAgentRole al enviar datos a una cuenta diferente.

{ "agent": { "credentials": { "role_arn": "arn:aws:iam::123456789012:role/CrossAccountAgentRole" } }, ..... }

Por otro lado, el siguiente ejemplo establece diferentes funciones para la cuenta de envío cuando se envían métricas, registros y seguimientos:

"metrics": { "credentials": { "role_arn": "RoleToSendMetrics" }, "metrics_collected": {....
"logs": { "credentials": { "role_arn": "RoleToSendLogs" }, ....

Políticas necesarias

Cuando especifica un role_arn en el archivo de configuración del agente, también debe asegurarse de que los roles de IAM de las cuentas de envío y de destino cuenten con determinadas políticas. Los roles de las cuentas de envío y de destino deben tener la política CloudWatchAgentServerPolicy. Para obtener más información sobre cómo asignar esta política a un rol, consulte Cree roles de IAM para utilizarlos con el agente de CloudWatch en instancias de Amazon EC2.

El rol de la cuenta de envío también debe incluir la política siguiente. Esta política se añade en la pestaña Permissions (Permisos) de la consola de IAM al editar el rol.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": [ "arn:aws:iam::target-account-ID:role/agent-role-in-target-account" ] } ] }

El rol de la cuenta de destino debe incluir la siguiente política, de modo que reconozca el rol de IAM que la cuenta de envío utilice. Esta política se añade en la pestaña Trust relationships (Relaciones de confianza) de la consola de IAM al editar el rol. El rol de la cuenta de destino a la que se añade esta política es el rol que creó en Cree roles de IAM y usuarios para utilizarlos con el agente de CloudWatch. Este rol es el rol especificado en agent-role-in-target-account en la política utilizada por la cuenta de envío.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::sending-account-ID:role/role-in-sender-account" ] }, "Action": "sts:AssumeRole" } ] }

Diferencias de marcas de tiempo entre el agente unificado de CloudWatch y el agente de CloudWatch Logs anterior

El agente de CloudWatch admite un conjunto diferente de símbolos para formatos de marca de tiempo, en comparación con el agente de CloudWatch Logs anterior. Estas diferencias se muestran en la siguiente tabla.

Símbolos que ambos agentes admiten Símbolos que solo el agente unificado de CloudWatch admite Símbolos que solo el agente de CloudWatch Logs anterior admite

%A, %a, %b, %B, %d, %f, %H, %l, %m, %M, %p, %S, %y, %Y, %Z, %z

%-d, %-l, %-m, %-M, %-S

%c,%j, %U, %W, %w

Para obtener más información sobre el significado de los símbolos que admite el nuevo agente de CloudWatch, consulte CloudWatch Agent Configuration File: Logs Section (Archivo de configuración del agente de CloudWatch: sección de registros) en la Guía del usuario de Amazon CloudWatch. Para obtener más información acerca de los símbolos que admite el agente de CloudWatch Logs, consulte Agent Configuration File (Archivo de configuración del agente) en la Guía del usuario de Amazon CloudWatch Logs.