CloudWatch nos permite monitorear diferentes tipos de métricas de los servicios de AWS, sin embargo si queremos monitorear la memoria de nuestras maquinas EC2, es necesario realizar la instalación del agente de CloudWatch para este fin.
En este ejemplo vamos a utilizar el servicio de Systems Manager _para realizar la instalación del agente en una instancia _EC2.
Los pasos a realizar son los siguientes.
1.Tener una(s) instancia(s) en EC2 ejecutándose con un ROL que tenga los siguientes permisos: CloudWatchAgentServerPolicy, AmazonSSMManagedInstanceCore.
2.Instalar el agente en nuestra(s) maquina EC2.
3.Configurar un Parametro en Parameter Store para almacenar la configuración del agente de CloudWatch.
4.Configurar el agente de CloudWatch.
5.Crear dashboard en CloudWatch.
Vamos a partir que tenemos una instancia EC2 en ejecución con un ROL que cuente con los permisos mencionados en el punto 1.
Para la instalación del agente vamos a utilizar el servicio Systems Manager que dentro de sus funciones esta controlar la infraestructura que tenemos desplegada.
Empecemos:
Vamos al servicio system manager y seleccionamos Run Command.
En la barra de búsqueda de la sección Command document vamos a buscar el comando: AWS-ConfigureAWSPackage y lo seleccionamos.
Nos dirigimos a la sección Command parameters en donde vamos a definir el paquete que queremos instalar y en el campo name colocamos: AmazonCloudWatchAgent
Después de haber definido el comando y el paquete que queremos ejecutar, debemos seleccionar la(s) instancia(s) en la(s) cual(es) queremos que se realice la ejecución del comando.Para esto nos dirigimos a la sección targets y seleccionamos la opción Choose instances manually y en el resultado de búsqueda realizamos la selección deseada, que para este caso es una única instancia.
Para ver los resultados de ejecución del comando podemos seleccionar un bucket en el cual se deben almacenar los resultados de la ejecución, pero para este ejercicio no vamos a activar que los resultados se guarden en un bucket de S3, por lo tanto debemos desactivar la opción en la sección Output options y damos click en el botón Run.
Al ejecutar el comando vamos a ver una pantalla como la siguiente, donde vamos a poder ver el estado de la ejecución del comando.
El siguiente paso que debemos hacer es configurar las métricas que el agente va a monitorear (memoria en uso, memoria disponible y memoria total). Vamos a crear un parámetro en Parameter Store con la siguiente configuración:
{
"agent": {
"metrics_collection_interval": 60,
"logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log"
},
"metrics": {
"metrics_collected": {
"mem": {
"measurement": [
{ "name": "mem_used", "rename": "MemoryUsed" },
{ "name": "mem_available", "rename": "MemoryAvailable" },
{ "name": "mem_total", "rename": "TotalMemory" }
]
}
},
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
}
}
}
Para configurar el parámetro vamos a Parameter Store que se encuentra dentro de System Mananager y damos click en Create Parameter.
Diligenciamos las campos requeridos del parámetro y damos click en Create parameter. En el campo value se agrega el json definido arriba.
Para terminar la configuración de nuestro agente debemos ejecutar nuevamente otro comando con la siguiente configuración:
Buscamos y seleccionamos el comando: AmazonCloudWatch-ManageAgent
Definimos la configuración que va tener el comando y pasamos el nombre del parámetro que creamos en Parameter Store que para este caso su nombre es: EC2AgentMemory
Ahora debe seleccionamos la(s) instancia(s) en la(s) cuales queremos ejecutar el comando, podemos quitar la selección para que nuestros resultados de ejecución se guarden en S3 cómo lo hicimos anteriormente, damos click en Run y vemos que nuestro comando se ejecute correctamente.
Ya que hemos instalado y configurado el agente de CloudWatch en nuestra instancia podemos ir a CloudWatch a Crear nuestro Dashboard.
Buscamos en la barra de búsquedas el servicio de CloudWatch y lo seleccionamos. Ya en la pagina principal de CloudWatch damos click en Dashboards y damos click en Create dashboard.
Le damos el nombre a nuestro Dashboard
En la siguiente pantalla seleccionamos el tipo de widget que queremos utilizar para la métrica que vamos a seleccionar.
Ahora debemos seleccionar si queremos como fuente de datos de nuestro widget una métrica o un log. Para nuestro caso seleccionamos Metrics.
En la siguiente pantalla vemos una sección llamada Custom namespaces. Esta sección se creo cuando ejecutamos los comandos desde parameter store.Damos click en CWAgent.
Damos click en InstanceId.
Ahora vamos a seleccionar las métricas: MemoryAvailable y MemoryUsed y damos click en *Create widget *.
Vemos que nuestro widget fue agregado a nuestro Dashboard. Damos click en Save dashboard para almacenar los cambios.
Hemos visto cómo configurar el agente de cloud watch para monitorear el uso de memoria en una o varias instancias EC2.Hay formas de hacer este procedimiento desde la terminal, sin embargo lo debemos hacer en cada instancia por separado. Lo que nos ofrece Systems Manager es poder realizar este tipo de configuraciones en varias instancias con un único procedimiento.
Como vimos en el ejemplo solo agregamos un widget a nuestro Dashboard con dos métricas, ahora pueden agregar un nuevo widget al dashboard de tipo numero para ver el total de memoria de la instancia EC2.
Me pueden encontrar en
Top comments (0)