تعمل أداة سياق الإنذار (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]>
قم بتحديث متغيرات البيئة الإضافية إذا لزم الأمر
قم بتحديث موضوعات SNS الخاصة بك والتي تتلقى إشعارات من تنبيهات 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
في جزء التنقل، اختر السجلات ، ثم اختر رؤى السجلات .
في القائمة المنسدلة تحديد مجموعة (مجموعات) السجل، اختر /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
(شارع): منطقة AWS.functions_xray
)trace_ids
(قائمة): قائمة معرفات التتبع المطلوب معالجتها.start_time
(str): وقت البدء لمعالجة التتبع.end_time
(str): وقت انتهاء معالجة التتبع.region
(شارع): منطقة AWS. انظر المساهمة لمزيد من المعلومات.
هذه المكتبة مرخصة بموجب ترخيص MIT-0. انظر ملف الترخيص.