Implementar alarmas de AWS CloudWatch con Bitbucket
Warren Marusiak
Divulgador técnico sénior
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 la página de arquitectura de ImageLabeller para ver el contexto.
Añade un repositorio de alarmas para la integración de Opsgenie
Ve a Jira y crea una nueva incidencia de Jira para añadir un repositorio de alarmas AWS CloudWatch a Bitbucket. En este ejemplo, el identificador de la incidencia de Jira es IM-9.
Ve a Bitbucket y haz clic en Crear y, a continuación, en Repositorio.
Selecciona el espacio de trabajo y el proyecto adecuados. Configura el nombre de la rama predeterminada en la rama principal. Haz clic en Crear repositorio para continuar.
Ve al repositorio de CloudWatchAlarms de tu terminal y ejecuta lo siguiente para enviar el código de la plantilla de AWS CloudFormation a Bitbucket.
git add --all
git commit -m "IM-9 add CloudWatchAlarms to Bitbucket"
git remote add origin git@bitbucket.org:pmmquickstartguides01/cloudwatchalarms.git
git branch -m mainline
git push -u origin mainline
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: 10
Configura 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.
bitbucket-pipelines.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.
definitions:
steps:
- step: &deploy-test-usw1
name: Deploy Test us-west-1
script:
- pipe: atlassian/aws-cloudformation-deploy:0.10.0
variables:
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_DEFAULT_REGION: 'us-west-1'
STACK_NAME: 'OpenDevOpsAlarms'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
WAIT: 'true'
TEMPLATE: 'template.yml'
- step: &deploy-staging-use2
name: Deploy Staging us-east-2
script:
- pipe: atlassian/aws-cloudformation-deploy:0.10.0
variables:
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_DEFAULT_REGION: 'us-east-2'
STACK_NAME: 'OpenDevOpsAlarms'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
WAIT: 'true'
TEMPLATE: 'template.yml'
- step: &deploy-production-usw2
name: Deploy Production us-west-2
script:
- pipe: atlassian/aws-cloudformation-deploy:0.10.0
variables:
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_DEFAULT_REGION: 'us-west-2'
STACK_NAME: 'OpenDevOpsAlarms'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
WAIT: 'true'
TEMPLATE: 'template.yml'
- step: &deploy-production-use1
name: Deploy Proudction us-east-1
script:
- pipe: atlassian/aws-cloudformation-deploy:0.10.0
variables:
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_DEFAULT_REGION: 'us-east-1'
STACK_NAME: 'OpenDevOpsAlarms'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
WAIT: 'true'
TEMPLATE: 'template.yml'
- step: &deploy-production-cac1
name: Deploy Production ca-central-1
script:
- pipe: atlassian/aws-cloudformation-deploy:0.10.0
variables:
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_DEFAULT_REGION: 'ca-central-1'
STACK_NAME: 'OpenDevOpsAlarms'
CAPABILITIES: ['CAPABILITY_IAM', 'CAPABILITY_AUTO_EXPAND']
WAIT: 'true'
TEMPLATE: 'template.yml'
pipelines:
default:
- step:
<<: *deploy-test-usw1
deployment: Test us-west-1
- step:
<<: *deploy-staging-use2
deployment: Staging us-east-2
branches:
mainline:
- step:
<<: *deploy-production-usw2
deployment: Production us-west-2
- step:
<<: *deploy-production-use1
deployment: Production us-east-1
- step:
<<: *deploy-production-cac1
deployment: Production ca-central-1
Recuerda que debes habilitar Pipelines, configurar los entornos de implementación y añadir claves de acceso de AWS al repositorio antes de que se ejecuten las canalizaciones.
Enviar a una rama de funciones
Ejecuta lo siguiente desde la línea de comandos para enviar los cambios a la rama IM-9 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 Bitbucket pueda hacer un seguimiento de lo que ocurre en tu proyecto.
git add --all
git commit -m "IM-9 add bitbucket-pipelines.yml to CloudWatchAlarms"
git push -u origin IM-9
Haz clic en Canalizaciones y, a continuación, en IM-9 para ver la canalización en ejecución.
Crea una solicitud de incorporación de cambios
Para crear una solicitud de incorporación de cambios, haz clic en Solicitudes de incorporación de cambios y, a continuación, en Crear solicitud de incorporación de cambios. Termina la solicitud de incorporación de cambios y haz clic en Canalizaciones para ver la implementación del entorno de producción.
Probar la alarma
Genera una alerta desencadenando la alarma de AWS CloudWatch que acabas de configurar o haciendo clic en Crear alerta.
¡Bravo! Lo has conseguido. ImageLabeller ya está en funcionamiento.
Compartir este artículo
Tema siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.