AWS CloudWatch Agent en Linux Ubuntu

CloudWatch Agent es un programa que podemos instalar en servidores (EC2, servidores físicos o incluso servidores en otras nubes) para que recolecte datos detallados y los envíe a AWS CloudWatch.

Puede recolectar datos como uso de memoria RAM (¡por defecto EC2 no reporta memoria!), Uso de disco (lectura, escritura, espacio libre), Detalles avanzados de CPU (por núcleo, I/O wait, etc.). Uso de red a nivel de sistema operativo.
Tambier archivos de logs como /var/log/syslog, Logs de aplicaciones (Nginx, Apache, aplicaciones personalizadas). Y se usa para monitorear mejor tu infraestructura. Para crear alertas más inteligentes. Para detectar problemas (como disco lleno, errores en aplicaciones) antes de que afecten a los usuarios. Para centralizar los logs de varios servidores en un solo lugar (CloudWatch Logs).
Para instalar el agente en cualquier SO debemos tener un rol de IAM el cual se utilizará para escrinir métricas en CloudWatch.
Vamos a IAM -> roles -> crear Rol -> Tipo de Identidad de Confianza: AWS Service -> Seleccionamos EC2 en la lista desplegable.
Esto permitirá que las instancias EC2 utilicen el rol. -> Next.
Ahora necesitamos adjuntar una política d permisos -> Buscamos la que dice CloudWatchAgentServerPolicy

-> Next.
Le asignamos un nombre por ejemplo: AgenteCloudWatch. -> Crear Rol.

A este rol no tiene permiso para realizar la acción ssm:PutParameter de AWS Systems Manager (SSM), el cual vamos a utilizar mas adelante.
Con el Rol que creamos AgenteCloudWatch vamos a Agregar permiso -> Crear politica en linea

En el editor de políticas debemos seleccionar JSON y dejamos solo el siguiente código

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "Statement1",
			"Effect": "Allow",
			"Action": [],
			"Resource": []
		}
	]
}

Debe verse así ->

Next -> Crear.
Listo.

Vamos a la instancia EC2 a la cual queremos instalar el agente CloudWatch y l adjuntamos el rol
Seleccionamos la instancia -> Acciones -> seguridad -> Modificar rol AIM.
Luego, seleccionamos el rol que creamos en la lista desplegable. -> Actualizar

Accedemos a la instancia por ssh (Ubuntu Linux)
Comprobamos que tenemos instalada la AWS CLI

En caso de no estar instalada

sudo apt update
sudo apt install unzip curl -y
sudo curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
sudo unzip awscliv2.zip
sudo ./aws/install

Verificamos
aws –version

Nos logueamos
Debemos estar logueados en AWS con

aws configure 

Nos pedirá nuestras credenciales de seguridad.

Si no tenemos creada una Access Key aquí te muestro como

Ver video crear access key en AWS (abrir en nueva pestaña)

Instalación del cloudWatch Agent
Obtenemos el instalador

sudo wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb

Lo instalamos con

sudo dpkg -i -E ./amazon-cloudwatch-agent.deb

Verificamos

which amazon-cloudwatch-agent

Lo Iniciamos

sudo systemctl start amazon-cloudwatch-agent
sudo systemctl enable amazon-cloudwatch-agent

Ejecutamos el comando para iniciar el asistente de configuracion de cloudwatch

sudo systemctl start amazon-cloudwatch-agent

Seleccionamos la opcion que requerimos. En este caso la default o presionamos la opcion 1 de Linux.
Seguidamente nos pregunta si estamos en una instancia EC2 o una maquina On-premises

Presionamos la opcion 1 – EC2.
Ahora especificamos el usuario que ejecutará el agente.

Elegimos root
Las siguientes opciones las definiremos así:

Intervalos de 60 segundos
Debemos tener en cuenta que las métricas de mayor resolución tienen un mayor costo.
El resto de las opciones podemos dejarlas por defecto.

Nos preguntará si estamos de acuerdo con la configuración

Presionamos enter.
En la siguiente, nos pregunta si tenemos otrop agente de CloudWatch. En este caso le decimos que no

Si queremos los archivos de registro del monitor generados por la aplicación podríamos decir que si y especificar el nombre de la carpeta que queremos monitorear. En este caso le diremos que no

La siguiente opción le decimos que no

Con la siguiente opción comenzamos la configuración en un almacén de parámetros SSM

Esto nos proporciona un almacenamiento seguro y jerárquico para administrar los datos de configuración y las claves secretas. (Contraseñas, cadenas de conexión a las bases de datos, códigos de licencia como valores de parámetros. etc.)
De forma predeterminada se llamará así:

Si tiene mas parámetros, seria conveniente colocarle un nombre mas especifico.

También debeos especificar la región donde queremos almacenar la configuración en el almacén de parámetros.

Ahora debemos especificar las credenciales de AWS que se deben usar para enviar la configuración json al almacén de parámetros.
Ya lo configuramos anteriormente cuando usamos AWS configure.

Y por ultimo se requiere se una identidad de AWS (usuario IAM, rol IAM o instancia EC2 con rol asignado) con permisos explícitos para ejecutar la acción ssm:PutParameter, necesaria para enviar configuraciones en formato JSON al Parameter Store.
Podemos usar el mismo que hemos configurado al principio.

Una vez terminada la configuración nos debe mostrar el siguiente mensaje

Antes de iniciar el servicio, debemos hacer algunos ajustes.
Creamos el directorio

sudo mkdir -p /usr/share/collectd/

Creamos el archivo

sudo touch /usr/share/collectd/types.db

Iniciamos el agente de CloudWatch con el siguiente comando

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:AmazonCloudWatch-linux -s

Para comprobarlo

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a status

Mostrará el mensaje:

Desde ahora nuestro agente de CloudWatch está recopilando datos y enviándolos a CloudWatch para que podamos analizarlo.

En un par de horas puedes ir a CloudWatch y revisar tus métricas.

Agregar un comentario

Tu dirección de correo electrónico no será publicada. Los campos requeridos están marcados *