Инструмент контекста сигналов тревоги (ACT) расширяет возможности сигналов тревоги AWS CloudWatch, предоставляя дополнительный контекст для помощи в устранении неполадок и анализе. Используя такие сервисы AWS, как Lambda, CloudWatch, X-Ray и Amazon Bedrock, это решение объединяет и анализирует метрики, журналы и трассировки для получения значимой информации. Используя возможности генеративного искусственного интеллекта от Amazon Bedrock, он обобщает результаты, определяет потенциальные первопричины и предлагает соответствующие ссылки на документацию, которые помогают операторам более эффективно решать проблемы. Реализация предназначена для простого развертывания и интеграции в существующие конвейеры наблюдения, что значительно сокращает время реагирования и улучшает анализ первопричин.
Клонируем репозиторий:
git clone https://github.com/aws-samples/alarm-context-tool
cd alarm-context-tool
Установите зависимости, если вы планируете использовать свою IDE для обнаружения проблем в коде:
pip install -r ./dependencies_layer/requirements.txt
pip install aws_lambda_powertools
В некоторых регионах вам может потребоваться изменить версию слоя для Lambda Insights после двоеточия в файле template.yaml. См. https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Lambda-Insights-extension-versionsx86-64.html.
- !Sub arn:aws:lambda:${AWS::Region}:580247275435:layer:LambdaInsightsExtension:49
Отредактируйте файл template.yaml, указав адрес электронной почты получателя и адрес отправителя.
Resources :
AlarmContextFunction :
Type : AWS::Serverless::Function
Handler : lambda_function.alarm_handler
Runtime : python3.12
Environment :
Variables :
RECIPIENT : [email protected]
SENDER : Name <[email protected]>
При необходимости обновите дополнительные переменные среды.
Обновите свои темы в социальных сетях, которые получают уведомления о тревогах CloudWatch:
Для начала используйте управляемое развертывание:
sam build
sam deploy --guided
Впоследствии вы можете собрать, развернуть и протестировать, используя следующую команду: Тестовое событие должно быть общим. См. Тестирование
sam build ; sam deploy --no-confirm-changeset ; sam remote invoke --stack-name alarm-context-tool --region < aws-region > --test-event-name < test-event >
После развертывания функция Lambda будет активироваться темами SNS, подписанными на CloudWatch Alarms. Эта функция дополнит тревожное сообщение дополнительным контекстом, таким как связанные метрики, журналы и трассировки. Он использует Amazon Bedrock для анализа собранных данных и получения действенной информации.
Чтобы создать новый обработчик для другого сервиса AWS, выполните следующие действия:
Создайте новый файл обработчика . Создайте новый файл Python в каталоге handlers
. Например, new_service_handler.py
.
Определите функцию-обработчик : реализуйте функцию-обработчик, аналогичную существующим обработчикам. Вот шаблон:
import boto3
import botocore
from aws_lambda_powertools import Logger , Tracer
logger = Logger ()
tracer = Tracer ()
@ tracer . capture_method
def process_new_service ( dimensions , region , account_id , namespace , change_time , annotation_time , start_time , end_time , start , end ):
# Your implementation here
pass
Добавьте обработчик в функцию Lambda : обновите lambda_function.py
, чтобы импортировать и вызвать новый обработчик на основе триггера.
Обновите шаблон : измените template.yaml
, включив в него новый обработчик и обновив необходимые разрешения.
Resources :
AlarmContextFunction :
Type : AWS::Serverless::Function
Handler : lambda_function.alarm_handler
Runtime : python3.12
Policies :
- Statement :
- Effect : Allow
Action :
- new-service:Describe*
Resource : " * "
Добавьте необходимые разрешения . Убедитесь, что ваш новый обработчик имеет необходимые разрешения, обновив файл template.yaml
как показано выше.
Запустить сигнал тревоги : вручную активируйте сигнал тревоги, используя следующую команду, заменив <alarm_name> именем вашего сигнала тревоги:
aws cloudwatch set-alarm-state --state-value ALARM --state-reason " Testing " --alarm-name " <alarm_name> "
Используйте тестовые примеры, созданные в журналах . Основная функция Lambda генерирует тестовый пример, который можно использовать в консоли Lambda. См. раздел «Тестирование функций Lambda в консоли или с помощью sam remote invoke
.
Откройте консоль CloudWatch.
В области навигации выберите Журналы , а затем выберите Logs Insights .
В раскрывающемся списке «Выбрать группы журналов» выберите /aws/lambda/alarm-context-tool-AlarmContextFunction-xxxxxxxxxxxx.
Введите следующий запрос, заменив <alarm_name> именем вашего сигнала тревоги:
fields @timestamp, @message, @logStream, @log
| filter message = "test_case" AND Records.0.Sns.Message like /<alarm_name>/
Выберите «Выполнить запрос».
Разверните запись журнала и скопируйте все поле @message .
Затем вы можете использовать это для проверки вашей функции Lambda по требованию.
Для функции Lambda можно настроить следующие переменные среды:
AWS_LAMBDA_LOG_LEVEL
: устанавливает уровень журнала для журналов AWS Lambda (например, INFO, DEBUG). По умолчанию — INFO
.ANTHROPIC_VERSION
: указывает версию антропной модели, которая будет использоваться. По умолчанию используется bedrock-2023-05-31
BEDROCK_MODEL_ID
: идентификатор используемой модели Amazon Bedrock. По умолчанию — anthropic.claude-3-sonnet-20240229-v1:0
.BEDROCK_REGION
: регион AWS, в котором развернута модель Bedrock. По умолчанию — us-east-1
.BEDROCK_MAX_TOKENS
: максимальное количество токенов, которые будут использоваться моделью Bedrock. По умолчанию — 4000
.METRIC_ROUNDING_PRECISION_FOR_BEDROCK
: точность округления показателей перед отправкой в Bedrock. По умолчанию — 3
.POWERTOOLS_LOG_LEVEL
: устанавливает уровень журнала для журналов AWS Lambda Powertools (например, INFO, DEBUG). По умолчанию — INFO
.POWERTOOLS_LOGGER_LOG_EVENT
: включает регистрацию полного события в журналах Lambda Powertools. По умолчанию — True
.POWERTOOLS_SERVICE_NAME
: имя службы, которая будет использоваться в Lambda Powertools. По умолчанию установлено Alarm
.POWERTOOLS_TRACER_CAPTURE_RESPONSE
: определяет, следует ли захватывать ответ при трассировке. По умолчанию — False
.RECIPIENT
: адрес электронной почты для получения уведомлений.SENDER
: адрес электронной почты отправителя для уведомлений.USE_BEDROCK
: включает или отключает использование Amazon Bedrock для генеративного ИИ. По умолчанию — True
. Чтобы настроить эти переменные, обновите файл template.yaml
:
Resources :
AlarmContextFunction :
Type : AWS::Serverless::Function
Handler : lambda_function.alarm_handler
Runtime : python3.12
Environment :
Variables :
AWS_LAMBDA_LOG_LEVEL : INFO
ANTHROPIC_VERSION : bedrock-2023-05-31
BEDROCK_MODEL_ID : anthropic.claude-3-sonnet-20240229-v1:0
BEDROCK_REGION : us-east-1
BEDROCK_MAX_TOKENS : 4000
METRIC_ROUNDING_PRECISION_FOR_BEDROCK : 3
POWERTOOLS_LOG_LEVEL : INFO
POWERTOOLS_LOGGER_LOG_EVENT : " True "
POWERTOOLS_SERVICE_NAME : Alarm
POWERTOOLS_TRACER_CAPTURE_RESPONSE : " False "
RECIPIENT : [email protected]
SENDER : Name <[email protected]>
USE_BEDROCK : " True "
functions_logs
)log_group_name
(str): имя группы журналов.start_time
(str): время начала запроса.end_time
(str): время окончания запроса.query
(str): запрос Logs Insights.functions_metrics
)dashboard_metrics
(список): список метрик для информационной панели.annotation_time
(str): время аннотации для панели мониторинга.start
(str): время запуска панели мониторинга.end
(str): время окончания панели мониторинга.region
(str): регион AWS.functions_xray
)trace_ids
(список): список идентификаторов трассировки для обработки.start_time
(str): время начала обработки трассировки.end_time
(str): время окончания обработки трассировки.region
(str): регион AWS. Для получения дополнительной информации см. ВКЛАД.
Эта библиотека лицензируется по лицензии MIT-0. См. файл ЛИЦЕНЗИИ.