Cómo enviar registros de aplicaciones de Linux a AWS CloudWatch

AWS CloudWatch es un servicio de monitoreo proporcionado por la nube de AWS. AWS proporciona monitoreo predeterminado para los parámetros del servidor, como la utilización de la CPU, la entrada y la salida de la red, etc. AWS CloudWatch se puede usar para el monitoreo personalizado, como la utilización del disco y la utilización de la memoria (RAM). Para el monitoreo personalizado, debemos seguir algunos pasos para monitorearlo.
De la misma manera, AWS CloudWatch se puede utilizar para monitorear los registros del servidor o de la aplicación. Como esta no es una característica predeterminada de AWS por razones obvias, podemos configurarla según nuestros requisitos. Dependerá del usuario qué registros debemos enviar a AWS CloudWatch para su monitoreo.
No limitado a los recursos de AWS
Incluso si AWS CloudWatch es un servicio de AWS, no significa que solo se pueda usar para las instancias EC2, también se puede configurar para enviar registros de aplicaciones o servidores desde las VM de otros proveedores de la nube y también desde las VM en la unidad física. .
Cómo enviar registros de aplicaciones o servidores a AWS CloudWatch
Para enviar los registros de la aplicación o del servidor a AWS CloudWatch, debemos instalar el agente de CloudWatch en el servidor respectivo. Usaremos la instancia AWS EC2 para lograr nuestro objetivo en este blog.
Pasos
- Rol adecuado que se adjuntará a la instancia para comunicarse con AWS CloudWatch
- Instalación del agente de AWS CloudWatch
- Configuración del agente de AWS CloudWatch
- Probar registros en el portal de AWS CloudWatch
Rol de gestión de identidades y accesos
Para enviar los registros de la aplicación o del servidor a AWS CloudWatch, debemos asociar un rol a la instancia EC2 con los permisos adecuados. El rol permitirá realizar cambios en AWS CloudWatch.
Debe contener las siguientes políticas.
- CreateLogStream
- DescribeLogStream
- CreateLogGroup
- PutLogEvents
Vamos a crear un rol en AWS IAM.
Vaya a la sección IAM de la lista de Servicios en la consola de AWS. Si aún no tiene una cuenta de AWS, cree una desde aquí.
En el panel de control de IAM, vaya a Política y luego a Crear política.
En la página «Crear política», seleccione «JSON» en la pestaña y pegue la siguiente política JSON eliminando la predeterminada.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
Su política debe verse como a continuación. Una vez que haya terminado, haga clic en el botón «Revisar política» en la parte inferior de la página.
En la página siguiente, debe proporcionar el nombre de la política.
Una vez hecho esto, haga clic en el botón «Crear política» en la parte inferior de la página.
Una vez que cree una política, será redirigido a la página de funciones de IAM. Como ya hemos creado la política requerida, crearemos un rol que se adjuntará a la instancia.
En la página «Crear rol», seleccione «EC2». Como vamos a adjuntar el rol a la instancia EC2.
Haga clic en el botón «Siguiente: Permiso» en la parte inferior izquierda de la página.
En la página siguiente, se le pedirá que adjunte una política al rol. Busque el nombre de la política que proporcionó en el paso anterior. Una vez encontrada, seleccione la política de la lista.
Una vez hecho esto, haga clic en el botón «Siguiente: Etiquetas» en la parte inferior de la página.
En la página siguiente, se le pedirá que asigne algunas etiquetas al rol. Como ese es un paso opcional, no estoy asignando ninguna etiqueta al rol y me salté el paso.
Una vez que haga clic en siguiente, se le pedirá que asigne un nombre al rol.
Su rol se creará en unos segundos.
Ahora que hemos completado la configuración requerida desde el lado de la infraestructura, configuremos el agente de AWS CloudWatch en la instancia EC2.
Para este paso, necesita una instancia EC2 en estado de ejecución. Conéctese a la instancia de la manera que desee. Hay varias formas de conectarse a la instancia. Puedes consultarlos aquí.
Si tiene una instancia de Amazon Linux, siga los pasos mencionados a continuación.
Si inicia sesión en la instancia por primera vez, asegúrese de ejecutar el siguiente comando de actualización.
A continuación los pasos que puede seguir para amazonas linux máquinas.
sudo yum update -y
Una vez que se complete la actualización, ejecute el siguiente comando para instalar el awslogs paquete.
sudo yum install -y awslogs
Una vez instalado el paquete, puede cambiar la región en /etc/awslogs/awscli.conf expediente.
Ahora, para configurar los registros que le gustaría enviar en AWS CloudWatch, abra el archivo /etc/awslogs/awslogs.conf y verifique las siguientes líneas.
[/var/log/messages] datetime_format = %b %d %H:%M:%S file = /var/log/messages buffer_duration = 5000 log_stream_name = {instance_id} initial_position = start_of_file log_group_name = Amazon-Linux-2
La configuración anterior indica que la ruta del archivo de registro de su sistema /var/log/messages se cargará en AWS CloudWatch. La configuración anterior creará un grupo de registros en AWS CloudWatch con el nombre mencionado en el parámetro log_group_name. Además, tendrá la jerarquía mencionada en log_stream_name. Para el tiempo de búfer, podemos cambiar el valor de buffer_duration. El valor predeterminado de buffer_duration es 5000ms.
Una vez que realice los cambios, reinicie la aplicación ejecutando el siguiente comando. Reiniciará la aplicación awslog y el agente comenzará a cargar los registros en AWS CloudWatch.
$ sudo service awslogsd start
Para instalar y configurar el agente de AWS CloudWatch en RHEL o CentOS, puede seguir los pasos a continuación.
Ejecute el siguiente comando para descargar el paquete.
curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
Encontrará un archivo con el nombre awslogs-agent-setup.py en la ubicación actual. Como el archivo descargado es un script de python, debe tener python instalado en su máquina para el siguiente paso. Asegúrese de tener un paquete de python instalado y luego ejecute el siguiente comando. Debe especificar la región en el siguiente comando. También puede cambiar lo mismo en la configuración más adelante si lo desea.
python ./awslogs-agent-setup.py --region ap-south-1
Una vez que ejecute el comando anterior, le pedirá algunas entradas. Mencione lo mismo según los requisitos.
El script anterior generará el archivo de configuración /var/awslogs/etc/awslogs.conf. Los detalles que proporcionó en el script se guardarán en el archivo de configuración.
aún puede modificar el archivo de configuración según sus requisitos.
Una vez que haya terminado con todos los cambios, reinicie el agente ejecutando el siguiente comando.
# systemctl start awslogs
Verificar la configuración configurada
1. Vuelva a iniciar sesión en su cuenta de AWS.
2. Busque CloudWatch en la lista de Servicios.
3. Elija el Grupo de registros opción de los menús del lado izquierdo.
4. Busque el valor que proporcionó en el parámetro log_stram_name en la configuración.
5. Verá que los registros se envían desde el servidor a AWS CloudWatch.
Conclusión
Puede configurar cualquier archivo de registro de su servidor para enviarlo a AWS CloudWatch. Esto se puede configurar para los servidores que no están en la nube de AWS. Es decir, puede enviar los registros desde cualquiera de sus servidores alojados en Azure, GCP o cualquier otro proveedor de la nube o incluso un servidor local.