Implementar alarmas de AWS CloudWatch con GitLab

Para demostrar cómo desarrollar, implementar y gestionar aplicaciones con Jira Software y varias herramientas conectadas, nuestro equipo creó ImageLabeller, una sencilla aplicación de demostración creada con AWS que utiliza el aprendizaje automÔtico para aplicar etiquetas a las imÔgenes.
Esta pÔgina explica cómo monitorizar ImageLabeller con Opsgenie. Antes de empezar, te recomendamos que leas las pÔginas de arquitectura de ImageLabeller y de Implementar ImageLabeller con GitLab para ver el contexto.
Añade un repositorio de alarmas para la integración de Opsgenie
Ve a Jira y crea una incidencia de Jira para aƱadir un repositorio de alarmas de AWS CloudWatch a GitLab. En este ejemplo, el identificador de la incidencia de Jira es IM-6.

Ve a GitLab y crea un nuevo proyecto. Actualiza la URL del proyecto para usar el grupo que has vinculado a Jira. Haz clic en Crear proyecto.

En tu terminal, ve al repositorio de CloudWatchAlarms y ejecuta lo siguiente para enviar tu archivo AWS CloudFormation template.yml a GitLab.
git add --all
git commit -m "IM-6 add CloudWatchAlarms repository to gitlab"
git remote add origin git@gitlab.com:pmmquickstartguides/cloudwatchalarms.git
git branch -m mainline
git push -u origin mainlineComo en el caso de repositorios anteriores, debes añadir las claves de acceso de AWS, configurar las ramas protegidas y configurar los entornos de implementación.
Alarms template.yml
Description: 'A description'
Resources:
OpsGenieSNS:
Type: AWS::SNS::Topic
Properties:
DisplayName: 'Opsgenie'
Subscription:
- Endpoint: 'https://api.opsgenie.com/v1/json/cloudwatch?apiKey=a4449509-6998-4d55-841d-2e6b363520c7'
Protocol: 'HTTPS'
TopicName: 'Opsgenie'
SubmitImageLambdaAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmActions:
- !Ref 'OpsGenieSNS'
AlarmDescription: 'SubmitImage Too Many Invocations'
ComparisonOperator: 'GreaterThanThreshold'
Dimensions:
- Name: FunctionName
Value: !ImportValue 'SubmitImageFunctionName'
EvaluationPeriods: 1
MetricName: 'Invocations'
Namespace: 'AWS/Lambda'
Period: 60
Statistic: 'Sum'
Threshold: 10Configura el endpoint de suscripción por tema de SNS en la URL del endpoint que copiaste de Opsgenie. El SubmitImageLambdaAlarm monitoriza una sola métrica emitida por la AWS Lambda de SubmitImage. Si hay mÔs de 10 invocaciones en un minuto, se da la alarma.
.gitlab-ci.yml para implementar en AWS
Ve al repositorio de CloudWatchAlarms de tu terminal y crea una rama con el nombre de tu identificador de incidencia de Jira.
git checkout -b IM-6Crea un archivo .gitlab-ci.yml con el siguiente yaml. Esto define un flujo de trabajo de implementación para tus entornos de pruebas, ensayo y producción.
stages:
- merge-request
- test-us-west-1
- test-us-east-2
- production-us-west-2
- production-us-east-1
- production-ca-central-1Enviar a una rama de funciones
Ejecuta lo siguiente desde la lĆnea de comandos para enviar los cambios a la rama IM-6 del repositorio de CloudWatchAlarms. Incluye el identificador de incidencia de Jira en los mensajes de confirmación y los nombres de las ramas para que la integración de Jira con GitLab pueda hacer un seguimiento de lo que ocurre en tu proyecto.
git add --all
git commit -m "IM-6 .gitlab-ci.yml to CloudWatchAlarms repo"
git push -u origin IM-6Haz clic en CI/CD y, a continuación, en Pipelines (Canalizaciones) para ver cómo se ejecuta la canalización.
Crear una solicitud de fusión
Crea una solicitud de fusión para implementarla en tus entornos de producción después de que GitLab se implemente en tus entornos de pruebas.

Fusiona los cambios en la rama principal una vez que se complete el proceso de canalización de fusión. Haz clic en CI/CD y, a continuación, en Pipelines (Canalizaciones) para ver la canalización del entorno de producción en ejecución.

Probar la alarma
Genera una alerta desencadenando la alarma de AWS CloudWatch que acabas de configurar o haciendo clic en Crear alerta.

Comprueba Slack para ver si ha aparecido la notificación.

”Bravo! Lo has conseguido. ImageLabeller ya estÔ en funcionamiento.