0Pricing
Cloud & IT Cert Prep · درس

سجلات CloudWatch وLog Insights

اجمع السجلات من EC2 وLambda والحاويات في مجموعات سجلات، وشغّل استعلامات CloudWatch Logs Insights للعثور على الأخطاء والأنماط

سجلات CloudWatch وLog Insights درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

نظرة عامة على CloudWatch Logs

إن Amazon CloudWatch Logs خدمة مُدارة بالكامل لتجميع السجلات، تجمع بيانات السجلات من خدمات AWS وتطبيقاتك الخاصة وتخزنها وتحللها. وعلى خلاف إدارة السجلات التقليدية التي تتطلب الاتصال بخوادمك عبر SSH لقراءة الملفات، توحّد CloudWatch Logs جميع السجلات في مخزن متين ومشفّر، مع إمكانات مدمجة للاستعلام والتصفية واستخراج المقاييس وإدارة الاحتفاظ. وتتُكامل أصلًا مع EC2 وLambda وECS وEKS وAPI Gateway وCloudTrail وVPC Flow Logs.

مجموعات السجلات وتدفقات السجلات

تُنظّم السجلات هرميًا: مجموعة السجلات حاوية مُسمّاة للسجلات التي تشترك في إعدادات الاحتفاظ والتحكم في الوصول نفسها (مثل /aws/lambda/my-function). وضمن مجموعة السجلات، يمثل كل تدفق سجلات مصدرًا واحدًا لأحداث السجل المتسلسلة — مثيل EC2 واحدًا أو حاوية Lambda واحدة أو مهمة ECS واحدة. ويمكن أن تضم مجموعة السجلات آلاف التدفقات، لكن كل تدفق ينتمي إلى مجموعة سجلات واحدة فقط.

# Create a log group with 30-day retention
aws logs create-log-group \
  --log-group-name /myapp/production/api

aws logs put-retention-policy \
  --log-group-name /myapp/production/api \
  --retention-in-days 30

# List log streams in a group
aws logs describe-log-streams \
  --log-group-name /myapp/production/api \
  --order-by LastEventTime \
  --descending

إرسال السجلات من Lambda وEC2

ترسل AWS Lambda تلقائيًا جميع مخرجات stdout وstderr إلى CloudWatch Logs — وكل ما تحتاج إليه هو أن يتضمن دور تنفيذ Lambda الصلاحيات logs:CreateLogGroup وlogs:CreateLogStream وlogs:PutLogEvents. وبالنسبة إلى مثيلات EC2، تثبّت CloudWatch Agent وتضبط ملفات السجلات التي تريد متابعتها (مثل /var/log/nginx/access.log)، ومجموعة السجلات التي تريد الكتابة إليها، والنمط الذي يحدد إدخالات السجل الفردية.

# CloudWatch Agent config for tailing an application log file
# /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
# {
#   "logs": {
#     "logs_collected": {
#       "files": {
#         "collect_list": [{
#           "file_path": "/var/log/myapp/app.log",
#           "log_group_name": "/myapp/production/api",
#           "log_stream_name": "{instance_id}",
#           "timestamp_format": "%Y-%m-%dT%H:%M:%S"
#         }]
#       }
#     }
#   }
# }

CloudWatch Logs Insights

إن CloudWatch Logs Insights محرك استعلام تفاعلي يتيح لك البحث في بيانات السجلات وتحليلها باستخدام لغة استعلام مخصصة لهذا الغرض. ويمكنك تشغيل الاستعلامات عبر مجموعة سجلات واحدة أو أكثر، والتصفية حسب النطاق الزمني، واستخراج الحقول من أسطر السجلات المنظمة أو غير المنظمة، وتجميع البيانات، وعرض النتائج في صورة مخططات شريطية أو سلاسل زمنية. تُشغّل الاستعلامات عند الطلب وتُحتسب تكلفتها لكل جيجابايت من البيانات الممسوحة — ويؤدي تنظيم السجلات بصيغة JSON إلى تقليل حجم المسح بدرجة كبيرة.

# Find the top 10 slowest Lambda invocations in the last hour
aws logs start-query \
  --log-group-name /aws/lambda/my-function \
  --start-time $(date -d '1 hour ago' +%s) \
  --end-time $(date +%s) \
  --query-string 'filter @type = "REPORT"
| fields @requestId, @duration
| sort @duration desc
| limit 10'

لغة استعلام Logs Insights

تستخدم لغة استعلام Logs Insights أوامر مفصولة بعلامات الأنابيب: يحدد fields الحقول التي سيتم عرضها، ويضيّق filter نطاق الأحداث (ويدعم التعبيرات العادية باستخدام like و=~)، ويجمع stats البيانات، ويرتب sort النتائج، ويحد limit العدد الأقصى للنتائج. تكتشف الخدمة الحقول تلقائيًا في أسطر السجلات المنسقة بصيغة JSON. وبالنسبة إلى السجلات غير المنظمة، يمكنك تحليل القيم باستخدام parse مع أنماط glob أو التعبيرات العادية.

# Count errors by status code in the last 24 hours
fields @timestamp, @message
| filter @message like /ERROR/
| parse @message '* * * [*] "* *" * *' as host, user, datetime, request, method, status, bytes
| stats count(*) as errorCount by status
| sort errorCount desc
| limit 20

مرشحات المقاييس: من السجلات إلى المقاييس

تفحص مرشحات المقاييس أحداث السجلات الواردة باستمرار بحثًا عن أنماط، وتزيد مقياس CloudWatch مخصصًا في كل مرة يتم فيها العثور على تطابق. فعلى سبيل المثال، يمكنك إنشاء مرشح مقاييس على مجموعة سجلات Lambda يزيد مقياس ErrorCount في كل مرة يحتوي فيها سطر سجل على ERROR. ثم تنشئ إنذار CloudWatch على هذا المقياس لتنبيه فريقك. ويحوّل ذلك سجلاتك إلى مقاييس قابلة لاتخاذ إجراء دون تخزين النتائج في قاعدة بيانات منفصلة.

# Create a metric filter that counts ERROR lines
aws logs put-metric-filter \
  --log-group-name /myapp/production/api \
  --filter-name ErrorCount \
  --filter-pattern 'ERROR' \
  --metric-transformations \
    metricName=ApplicationErrors,metricNamespace=MyApp,metricValue=1,defaultValue=0

# Now create an alarm on the resulting metric
aws cloudwatch put-metric-alarm \
  --alarm-name HighErrorRate \
  --metric-name ApplicationErrors \
  --namespace MyApp \
  --statistic Sum \
  --period 60 \
  --evaluation-periods 1 \
  --threshold 10 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:Ops

اشتراكات السجلات وبثها

يبث مرشح الاشتراك أحداث السجلات في شبه الوقت الفعلي إلى خدمة أخرى لمعالجتها أو تخزينها. ويمكنك البث إلى AWS Lambda (لتحويل السجلات وتوجيهها)، أو Amazon Kinesis Data Streams (لمعالجة كميات كبيرة من السجلات)، أو Amazon Kinesis Firehose (لتسليمها إلى S3 أو OpenSearch أو Splunk). وتدعم كل مجموعة سجلات ما يصل إلى مرشحي اشتراك. ويتطلب بث السجلات بين الحسابات وجهةً تتضمن سياسة موارد مناسبة.

# Stream all logs containing ERROR to a Kinesis Firehose for S3 archiving
aws logs put-subscription-filter \
  --log-group-name /myapp/production/api \
  --filter-name ErrorsToFirehose \
  --filter-pattern 'ERROR' \
  --destination-arn arn:aws:firehose:us-east-1:111122223333:deliverystream/LogArchive \
  --distribution 'ByLogStreamName'

سياسات الاحتفاظ وإدارة التكاليف

يخزن CloudWatch Logs البيانات إلى أجل غير مسمى افتراضيًا، وقد يصبح ذلك مكلفًا. عيّن سياسات الاحتفاظ لكل مجموعة سجلات لحذف أحداث السجل القديمة تلقائيًا. ومن فترات الاحتفاظ الشائعة 7 أيام لسجلات تصحيح الأخطاء، و30 يومًا لسجلات التطبيقات، ومن سنة إلى 5 سنوات لسجلات التدقيق. ويمكنك تصدير مجموعات السجلات إلى S3 لأرشفتها طويلًا بتكلفة منخفضة باستخدام واجهة API‏ create-export-task، إلا أن عمليات التصدير تُنفذ على دفعات وليست فورية.

# Set retention on all log groups that have no retention policy
aws logs describe-log-groups \
  --query 'logGroups[?!retentionInDays].logGroupName' \
  --output text | tr '\t' '\n' | while read lg; do
    aws logs put-retention-policy \
      --log-group-name "$lg" \
      --retention-in-days 90
    echo "Set 90-day retention on $lg"
done

سجلات تدفق VPC

تلتقط VPC Flow Logs بيانات وصفية حول حركة مرور IP المتدفقة من واجهات الشبكة في VPC أو الشبكات الفرعية أو ENIs الفردية وإليها. وتُخزن هذه السجلات في CloudWatch Logs أو S3. وتتضمن سجلات التدفق عنوان IP المصدر، وعنوان IP الوجهة، والمنفذ، والبروتوكول، وعدد الحزم، وعدد البايتات، والإجراء (ACCEPT أو REJECT)، والطابع الزمني. وهي بالغة الأهمية في استكشاف أخطاء قواعد مجموعات الأمان وNACL وإصلاحها، واكتشاف عمليات فحص المنافذ، وتدقيق أنماط حركة المرور — لكنها لا تلتقط حمولات الحزم الفعلية.

# Enable VPC Flow Logs to CloudWatch Logs
aws ec2 create-flow-logs \
  --resource-ids vpc-0abc1234def567890 \
  --resource-type VPC \
  --traffic-type ALL \
  --log-destination-type cloud-watch-logs \
  --log-group-name /aws/vpc/flow-logs \
  --deliver-logs-permission-arn arn:aws:iam::111122223333:role/FlowLogsRole

الاستعلام عن سجلات تدفق VPC باستخدام Insights

يتميز CloudWatch Logs Insights بفعالية خاصة في تحليل سجلات تدفق VPC. إذ يمكنك تحديد حركة المرور المرفوضة بسرعة، والعثور على أكثر المتحدثين إرسالًا للبيانات حسب حجم البايتات، واكتشاف الاتصالات غير المعتادة، أو عزل حركة المرور الخاصة بمثيل معين. ويكون تنسيق سجل التدفق مفصولًا بالمسافات افتراضيًا، لكن نشره بتنسيق JSON إلى CloudWatch Logs يجعل استخراج الحقول تلقائيًا في استعلامات Insights.

# Find top 10 source IPs by rejected byte volume in the last day
fields srcAddr, dstAddr, dstPort, action, bytes
| filter action = 'REJECT'
| stats sum(bytes) as rejectedBytes by srcAddr
| sort rejectedBytes desc
| limit 10

تشفير السجلات باستخدام KMS

يشفّر CloudWatch Logs جميع البيانات غير المتصلة افتراضيًا باستخدام مفاتيح مُدارة من AWS. ولتعزيز الأمان — خصوصًا في البيئات الخاضعة للوائح — يمكنك ربط مفتاح KMS مُدار من العميل بمجموعة سجلات. ويمنحك ذلك التحكم في تدوير المفتاح والوصول إليه، كما يتيح لك إلغاء الوصول إلى جميع بيانات السجلات عبر تعطيل المفتاح. ويجب أن تتضمن سياسة مفتاح KMS صلاحيةً تمنح CloudWatch Logs الإذن باستخدامه للتشفير وفك التشفير.

# Associate a KMS key with a log group
aws logs associate-kms-key \
  --log-group-name /myapp/production/api \
  --kms-key-id arn:aws:kms:us-east-1:111122223333:key/KEY_ID

# Verify encryption is configured
aws logs describe-log-groups \
  --log-group-name-prefix /myapp/production \
  --query 'logGroups[].{Name:logGroupName,KmsKey:kmsKeyId}'

تحقق سريع

اختبر مدى فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.

مراجعة الدرس

تعلمتم في هذا الدرس أن مجموعات السجلات وتدفقاتها تنظّم السجلات حسب المصدر مع إمكانية ضبط مدة الاحتفاظ، وأن Logs Insights تتيح لكم الاستعلام عن بيانات السجلات وتجميعها باستخدام لغة استعلام قوية قائمة على الأنابيب، وأن مرشحات المقاييس تحوّل أنماط السجلات إلى مقاييس CloudWatch يمكنها تشغيل التنبيهات. في الخطوة التالية، سنستكشف لوحات معلومات CloudWatch وContainer Insights للحصول على رؤية تشغيلية.

الأسئلة الشائعة

هل درس «سجلات CloudWatch وLog Insights» مجاني؟

نعم — نص درس «سجلات CloudWatch وLog Insights» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ماذا ستتعلم في «سجلات CloudWatch وLog Insights»؟

اجمع السجلات من EC2 وLambda والحاويات في مجموعات سجلات، وشغّل استعلامات CloudWatch Logs Insights للعثور على الأخطاء والأنماط تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟

لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «سجلات CloudWatch وLog Insights»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟

نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مقاييس CloudWatch ومساحات الأسماء والأبعاد
  2. إنذارات CloudWatch والإنذارات المركّبة
  3. سجلات CloudWatch وLog Insights
  4. لوحات معلومات CloudWatch وContainer Insights
← العودة إلى Cloud & IT Cert Prep