الخلاصةيوضّح هذا الدليل كيفية مراقبة وظائف AWS Lambda باستخدام ClickStack عبر Rotel Lambda Extension لجمع سجلات الوظائف، وسجلات الامتداد، وبيانات OpenTelemetry وإرسالها مباشرةً إلى ClickHouse. ستتعلّم كيفية:
- نشر طبقة Rotel Lambda Extension على وظائف Lambda لديك
- تهيئة الامتداد لتصدير السجلات والتتبعات إلى ClickStack
- تعطيل CloudWatch Logs اختياريًا لتقليل التكاليف
التكامل مع وظائف Lambda الحالية
المتطلبات الأساسية
- مثيل ClickStack قيد التشغيل
- وظائف AWS Lambda المراد مراقبتها
- AWS CLI مُعدّ مع الأذونات المناسبة
- دور تنفيذ Lambda مزوّد بأذونات لإضافة الطبقات
اختر طبقة Rotel Lambda Extension المناسبة
اختر طبقة Lambda التي تتوافق مع معمارية بيئة تشغيل Lambda لديك. يعتمد الحقل{version}
على منطقة AWS التي تنشر إليها. راجع صفحة الإصدارات
للاطلاع على أحدث أرقام الإصدارات المطابقة لمنطقتك.| المعمارية | ARN |
|---|---|
| x86-64/amd64 | arn:aws:lambda:{region}:418653438961:layer:rotel-extension-amd64:{version} |
| arm64 | arn:aws:lambda:{region}:418653438961:layer:rotel-extension-arm64:{version} |
- us-east-, us-west-
- eu-central-1, eu-north-1, eu-west-
- ca-central-1
- ap-southeast-, ap-northeast-
- ap-south-1
- sa-east-1
أضِف طبقة Rotel إلى دالة Lambda الخاصة بك
في هذه الأمثلة، استبدل{arch} و{region} و{version} بالقيم المناسبة المذكورة أعلاه.الخيار 1: Console في AWS
- افتح Console الخاصة بـ AWS Lambda
- انتقل إلى دالة Lambda الخاصة بك
- مرّر إلى قسم Layers وانقر على Add a layer
- اختر Specify an ARN
- أدخل ARN الخاص بطبقة Rotel:
- انقر على Add
الخيار 2: AWS CLI
الخيار 3: AWS SAM
اضبط الامتداد للتصدير إلى ClickStack
يُضبط Rotel Lambda Extension باستخدام متغيرات البيئة. تحتاج إلى ضبط endpoint الخاص بمُصدِّر OTLP بحيث يشير إلى مثيل ClickStack الخاص بك. تفترض الأمثلة أن دالة AWS Lambda لديك قادرة على الوصول إلى مثيل ClickStack.الإعداد الأساسي (متغيرات البيئة)
أضف متغيرات البيئة هذه إلى دالة Lambda الخاصة بك:الإعدادات المتقدمة (باستخدام ملف .env)
لإعدادات أكثر تعقيدًا، أنشئ ملف rotel.env داخل حزمة Lambda function الخاصة بك:rotel.env:استخدام AWS Secrets Manager أو Parameter Store
في عمليات النشر الإنتاجية، خزّن القيم الحساسة مثل مفاتيح API في AWS Secrets Manager أو Parameter Store:مثال على AWS Secrets Manager:تضيف استدعاءات AWS API لاسترداد القيم السرية من 100 إلى 150 ملّي ثانية إلى زمن بدء التشغيل البارد. تُسترد القيم السرية على دفعات (حتى 10) وفقط عند التهيئة، لذا لا تتأثر عمليات الاستدعاء اللاحقة.
اختبر التكامل
استدعِ دالة Lambda الخاصة بك للتأكد من إرسال السجلات إلى ClickStack:تحقّق من السجلات في HyperDX
بعد اكتمال الإعداد، سجّل الدخول إلى HyperDX (واجهة مستخدم ClickStack) وتحقّق من وصول السجلات:ابحث عن السمات الأساسية التالية في السجلات:service.name: اسم دالة Lambda الخاصة بكfaas.name: اسم دالة AWS Lambdafaas.invocation_id: معرّف الاستدعاء الفريدcloud.provider: “aws”cloud.platform: “aws_lambda”
تعطيل CloudWatch Logs (لتحسين التكلفة)
إزالة أذونات CloudWatch من دور التنفيذ
- افتح AWS Console وانتقل إلى AWS Lambda
- انتقل إلى دالة Lambda الخاصة بك
- حدّد Configuration → Permissions
- انقر على اسم دور التنفيذ لفتح وحدة تحكم IAM
- عدّل الدور وأزل أي actions من نوع
logs:*:- إذا كنت تستخدم سياسة مخصصة، فعدّلها لإزالة
logs:CreateLogGroupوlogs:CreateLogStreamوlogs:PutLogEvents - إذا كنت تستخدم سياسة AWS المُدارة
AWSLambdaBasicExecutionRole، فأزلها من الدور
- إذا كنت تستخدم سياسة مخصصة، فعدّلها لإزالة
- احفظ الدور
التحقّق من تعطيل تسجيل CloudWatch
استدعِ دالتك مرة أخرى وتحقّق مما يلي:- عدم إنشاء أي streams جديدة للسجلات في CloudWatch
- استمرار ظهور السجلات في ClickStack/HyperDX
إضافة auto-instrumentation في OpenTelemetry
اختر طبقة auto-instrumentation المناسبة للغتك
توفّر AWS طبقات auto-instrumentation في OpenTelemetry لعدة لغات:| اللغة | نمط ARN للطبقة |
|---|---|
| Node.js | arn:aws:lambda:{region}:901920570463:layer:aws-otel-nodejs-{arch}-ver-{version} |
| Python | arn:aws:lambda:{region}:901920570463:layer:aws-otel-python-{arch}-ver-{version} |
| Java | arn:aws:lambda:{region}:901920570463:layer:aws-otel-java-agent-{arch}-ver-{version} |
اضبط auto-instrumentation
عيّن متغير البيئةAWS_LAMBDA_EXEC_WRAPPER لتمكين auto-instrumentation:بالنسبة إلى Node.js:تحقّق من تتبع في HyperDX
بعد استدعاء دالتك:- انتقل إلى عرض Traces في HyperDX
- ينبغي أن تظهر لك تتبع تتضمن spans من دالة Lambda الخاصة بك
- ستُربط تتبع مع سجل عبر السمتين
trace_idوspan_id
تطبيقات توضيحية
- Python + ClickHouse: تطبيق Python مزوّد بـ instrumentation يدوي لـ OpenTelemetry، يرسل تتبع وسجل مباشرةً إلى ClickHouse
انضم إلى مجتمع Rotel
موارد إضافية
- Rotel Lambda Extension: الشفرة المصدرية ووثائق مفصلة
- Rotel Core: مستوى بيانات OTel خفيف الوزن الذي يشغّل الامتداد