Python تتبع الأخطاء
تم تصميم حزمة Incastic لتكون تلقائية بالكامل ولكن إذا حدث شيء خاطئ ، من فضلك ملف بطاقة طلب الخدمة ودعنا نعرف ! ونحن نحب أن نسمع ردود الفعل (جيدة أو سيئة) حتى نتمكن من التحسين المستمر.
توضح الصفحة التالية بعض الخطوات التي يمكنك اتخاذها لتشخيص أي مشاكل قد تنشأ.
- المكونات المدعمة
- Logging & Environment Variables
- مسائل المراقبة
- مساحات المشاكل العامة
- التتبعات غير موجودة من تطبيق Python
- ارجع أيضا الى
مكونات
المدعمة
قبل أن أقضي الكثير من الوقت في تشخيص قضية ما ، تأكد أولا من أن العنصر موضع السؤال يتم دعمه. يمكن ايجاد كشف بكل المكونات المدعمة في صفحة المكونات والنسخ التي يتم دعمها بواسطة Python .
Logging & Environment Variables
وبصفة مفترضة ، ستقوم مجموعة البرامج بتسجيل الرسائل التي تشير الى ما اذا كانت هناك أي مشاكل قد تم مواجهتها. اذا كنت ترغب في مزيد من مخرجات تسجيل التوضيح ، قم بتحديدINSTANA_DEBUGمتغير بيئة التشغيل. وهو يتيح تسجيل مستوى تصحيح الأخطاء في نظام Inhastana gem.
توجد طرق أكثر للتحكم في مخرجات التسجيل. ارجع الى صفحة توصيف Python للحصول على مزيد من التفاصيل.
مشاكل في مراقبة 
فشل
AutoTrace™
نوع اصدار المراقبة : python_autotrace_failed
قام وكيل النظام الرئيسي الى Instent host agent بمحاولة تنفيذ عملية Python آليا كما هو موضح في القسم تركيب آلي ، ولكن المحاولات لم تنجح.
حلول
المحتملة
- اذا كانت عمليات Python الخاصة بك يتم تشغيلها على Kubbertenes أو OpenShift أو PaaS المماثل ، برجاء التأكد من أنك قمت بقراءة واتباع الوثيقة توصيف Network Access for Monitored Applications
اذا لم يكن قد تم حل المشكلة بأعلى ، برجاء القراءة من خلال قسم تصحيح الأخطاء لم يتم عرض عملية Python في الاستعراض البياني.
لم يتم تركيب مجس
Python
نوع اصدار المراقبة : python_sensor_not_installed
يتم تشغيل عملية Python على بيئة تشغيل نقوم بدعمها لا للأجهزة الآلية ، ولم يتم استخدام طرق تشغيل بدون تغييرات الكود أو تشغيل مع تغييرات الكود للصك بالعملية.
حلول
المحتملة
- الاستفادة من تعليمات التركيب اليدوية لمراقبة تطبيقات Python بطريقة صحيحة.
AutoTrace™ prerequisites check failed
نوع اصدار المراقبة : python_autotrace_prerequisites_failed
حلول
المحتملة
بالنسبة لوظيفة Intana AutoTrace™ للعمل ، يجب تحقق العديد من المتطلبات الأساسية. برجاء التحقق من وجود ما يلي :
- مستوى-النظام
pipأوpip3متاح الى Intasانة host agent - قد يتم ايجاد الارتباطات المطلوبة وتركيبها بواسطة Agent (ارجع الى ملف سجل البرنامج الوسيط مع اتاحة تسجيل مستوى DEBUG)
- مستوى-النظام
مساحات المشاكل العامة
Python Process doesn't show up in dashboard
1. تأكد من أن متغير بيئة تشغيل TERM لم يتم تحديده وأن العملية غير موجودة في كشف العمليات المستبعدة
سيقوم هذا النظام بتخطي محاولة تتبع أي عملية تحتوي علىTERMتم تحديد متغير بيئة التشغيل أو تم توصيفه فيexcludesالقسم الخاص بتوصيف البرنامج الوسيط الى Python AutoTrace.
بصفة عامة ، يتم تحديد هذه القيمة فقط عند تشغيل عملية Python من وحدة طرفية متصلة بجلسة مستخدم فعالة. للتحقق مما اذاTERMتم تحديده ، تشغيلcat /proc/<pid>/environأين<pid>هو كود العملية الخاص بعملية Python في السؤال.
واذاTERMيحتاج أن يتم تحديده ويجب أن يتم تجهيز العملية ، للتفكير في استخدام الخطوات المفصلة في "تشغيل بدون تغييرات الكود".
2. تحقق من سجلات Inkass Host Agent لأي رسائل متعلقة بعملية Python هذه.
سيتم استخدام العديد من عمليات Python عن بعد آليا. في الحالات التي لا يكون فيها ذلك ممكنا ، سيقوم Host Agent بتسجيل رسالة تشير الى وجود مشكلة.
3. تحقق من أنه يتم دعم بيئة التشغيل الخاصة بك ومن أنك تقوم بتشغيل نسخة مدعمة من Python
قبل أن أقضي الكثير من الوقت في تشخيص قضية ما ، تأكد أولا من أن العنصر والبيئة موضع السؤال يتم دعمهما. يمكن ايجاد كشف بكل المكونات المدعمة في صفحة المكونات والنسخ التي يتم دعمها بواسطة Python .
4. التحقق من خطوات التركيب
هل تم تجهيز هذه العملية بواسطة AutoTrace أو يدوي ؟
اذا كان يتم استخدام AutoTrace ، تأكد من أن whiteist تم توصيفه يطابق عملية المرشح التي تريد تجهيزها بالأدوات.
If manual, validate that the خطوات التركيب اليدوية were properly followed.
5. التحقق من أن مجموعة برامج Incasانة Python تم تركيبها واتاحتها للتطبيق
يمكن التحقق من ذلك من خلال مشاهدةinstanaفي تطبيق Pythonrequirements.txtملف.
بدلا من ذلك ، من بيئة تشغيل تطبيق Python، يمكنك التشغيلpip list. سيقوم هذا الاختيار بعرض كل مجموعات برامج Python المتاحة لتطبيق Python . تحقق من أن مجموعات برامج Intana Python في هذا الكشف.
6. التأكد من أن حزمة Insreasانه هي أحدث نسخة.
يمكن ايجاد أحدث نسخة تم اصدارها على Pypi.
فيrequirements.txt، يجب أن تشاهد أحدث نسخة من مجموعة برامج Inastana Python المشار اليها بجانب الاسم مثلinstana==x.x.x.pip listيقوم أيضا بمخرجات أرقام النسخة في الكشف الذي تم تكوينه.
7. التحقق من أنه تم ذكر Incasin في مخرجات سجل التطبيق.
يجب أن تحتوي سجلات التطبيق و / أو الحاوية دائما على رسالة تحميل مماثلة ل ـStan is on the scene. Starting Instana instrumentation version x.x.x
اذا لم يكن هذا موجودا ، فمن المحتمل جدا أنه لم يتم تركيب الحزمة أو أن خطوات التركيب اليدوية لم يتم اتباعها بطريقة صحيحة.
8. اتاحة مخرجات تصحيح الأخطاء واعادة فحص سجلات التطبيق أو الحاوية.
تحديد متغير بيئة التشغيلINSTANA_DEBUG=trueبالنسبة لعملية Python وقم باعادة التحقق من التطبيق أو سجلات الحاوية (مثل #6).
قم بإيلاء اهتمام خاص لمعرفة ما اذا كان هناك أي رسائل خطأ متعلقة بالمشكلة.
9. حاول تشغيل تطبيق Python في نمط verbose من شاشة التحكم الرئيسية
ومثال على كيفية القيام بذلك يعتمد إلى حد كبير على تطبيق Python في السؤال. كمثال ، اذا كان تطبيق Python متضمن فيapp.pyيمكنك تشغيل الأوامر التالية :
export INSTANA_DEBUG=true
python app.py
قم بإيلاء اهتمام خاص لمعرفة ما اذا كان هناك أي رسائل خطأ متعلقة بعدم الاستخدام في مخرجات تطبيق Python .
10. حفظ بطاقة طلب الخدمة.
اذا قمت بالتحقق من صحة كل ما سبق ولم يتم عرض عملية Python في واجهة التعامل البيانية ، برجاء الملف دعم بطاقة طلب الخدمة بحيث يمكننا الاستقصاء أكثر.
بطاقة طلب الخدمة يجب أن تتضمن :
- تفاصيل بيئة التشغيل ؛ بيئة التشغيل ، نسخة Python ، الأطر المستخدمة
- ملخص لكل عمليات التحقق السابقة.
تاسات مفقودة من تطبيق Python
1. تأكد من أنه يتم دعم الاطارات والمكتبات التي يتم استخدامها من خلال الرجوع الى صفحة النسخ المدعمة .
2. تأكد من أنه قد تم عرض عملية التطبيق في واجهة تعامل Incascin الخاصة بك تحت النظام الرئيسي.
اذا كان التطبيق الخاص بك لم يتم عرضه في واجهة التعامل البيانية ، برجاء الرجوع الى القسم السابق.
3. حددINSTANA_DEBUG=trueبيئة التشغيل لعملية تطبيق Python واعادة بدء العملية.
مع تحديد متغير بيئة التشغيل هذا ، يجب أن تشاهد مخرجات السجل من عملية تطبيق Python مماثلة لما يلي :
DEBUG instana: initializing agent
INFO instana: Stan is on the scene. Starting Instana instrumentation version: 1.22.1
DEBUG instana: initializing fsm
DEBUG instana: Instrumenting asyncio
DEBUG instana: Instrumenting aiohttp client
DEBUG instana: Instrumenting aiohttp server
DEBUG instana: Instrumenting asynqp
DEBUG instana: Instrumenting cassandra
DEBUG instana: Instrumenting couchbase
DEBUG instana: Instrumenting flask (without blinker support)
DEBUG instana: Instrumenting gevent: gevent not detected or loaded. Nothing done.
DEBUG instana: Instrumenting grpcio
DEBUG instana: Instrumenting tornado client
DEBUG instana: Instrumenting tornado server
DEBUG instana: Instrumenting logging
DEBUG instana: Instrumenting pymysql
DEBUG instana: Instrumenting psycopg2
DEBUG instana: Instrumenting redis
DEBUG instana: Instrumenting sqlalchemy
DEBUG instana: Instrumenting suds-jurko
DEBUG instana: Instrumenting urllib3
DEBUG instana: Instrumenting django
DEBUG instana: Instana host agent found on localhost:42699
DEBUG instana: Attempting to make an announcement to the agent on localhost:42699
DEBUG instana: Spawning metric & span reporting threads
DEBUG instana: -> Metric reporting thread is now alive
DEBUG instana: -> Span reporting thread is now alive
DEBUG instana: Announced pid: 34287 (true pid: 34287). Waiting for Agent Ready...
DEBUG instana: Instrumenting pymongo
DEBUG instana: uwsgi hooks: decorators not available: likely not running under uWSGI
INFO instana: Instana host agent available. We're in business. Announced pid: 34287 (true pid: 34287)
DEBUG instana: Sending process snapshot data
تأكد من أن المكونات المتوقعة في هذا الكشف للظهور الصحيح.
4. تحقق من عناوين سياق الطلب في عناوين الاستجابة
قم بعمل طلب للتطبيق الخاص بك مع أي منcurlأوwgetللتحقق من عناوين الرد التي تم اعادتها من التطبيق.
على سبيل المثال ، استخدام-iاختيار الىcurlعناوين استجابة المخرجات :
curl -i http://127.0.0.1:8000/
HTTP/1.1 200 OK
Date: Wed, 10 Jun 2020 08:55:25 GMT
Server: WSGIServer/0.2 CPython/3.6.9
Content-Type: text/html; charset=utf-8
X-Instana-T: 495b8301e86286c4
X-Instana-S: 495b8301e86286c4
X-Instana-L: 1
Server-Timing: intid;desc=495b8301e86286c4
Connection: close
في المخرجات ، يجب أن ترىX-Instana-T,X-Instana-SوX-Instana-L. نصوص الرأس
اذا كنت ترى هذه العناوين في المخرجات ، يمكنك عندئذ البحث عن هذا التتبع المحدد في Query Analyze باستخدام مرشح البياناتtrace.id equals 495b8301e86286c4بافتراض أن نافذة الوقت التي يتم استخدامها تغطي الفترة الزمنية التي تم فيها تنفيذ هذا الطلب.
5. ملف بطاقة الدعم
اذا لم تشاهد هذه العناوين والاطارات والمكونات التي يتم دعمها ، برجاء ملف بطاقة طلب خدمة الدعم لذلك يمكننا اجراء مزيد من البحث في الحالة.
برجاء ارفاق ما يلي الى بطاقة طلب الخدمة :
- التطبيق
requirements.txtأو كشف مجموعات برامج Python التي يتم استخدامها (مخرجات منpip list) - وصلة واجهة التعامل لكيان التطبيق من الخطوة #2
- المخرجات من الخطوة #3
- المخرجات من الخطوة #4
AutoTrace يقوم بتحطيم عملية Python
1. eliF troppuS a eliF
اذا لم تكن قد قمت بذلك بالفعل ، برجاء ملف بطاقة طلب خدمة الدعم بحيث يمكننا التحقق من الحالة.
2. تعديل النظام الرئيسي الى Intana Agentconfiguration.yamlلتعديل تصرف AutoTrace
يقوم صفحة الوثائق بشرح كيفية توصيف Python AutoTrace. باستخدام هذا ، يمكنك استبعاد عملية ايقاف التشغيل أو عدم اتاحة AutoTrace بالكامل. وهذا يمكن أن يكون بمثابة عمل مؤقت حتى يتم تحديد السبب الجذري للحادث وتحديده.
3. استخدام طريقة التركيب اليدوية
في غضون ذلك ، يمكنك استخدام طريقة التركيب اليدوية for Python visibility بدلا من ذلك.
AUTOWRAPT_BOOTSTRAP, gevent & RecursionError
geventيقوم القرد بتسجيل العديد من المكتبات القياسية في Python وواحدة منgeventمتطلباتك هي أن يتم تنفيذ ذلك في أقرب وقت ممكن في عملية بدء التشغيل.
اذا كنت تقوم باستخدام طريقة تشغيل بدون تغييرات الكود الخاصة بالتركيب (معAUTOWRAPT_BOOTSTRAPمتغير بيئة التشغيل) وgeventمجموعة البرامج ، قد تحصل على أخطاء مثل :
RecursionError: maximum recursion depth exceeded while calling a Python object
[Previous line repeated 212 more times]
super(SSLContext, SSLContext).options.__set__(self, value)
هذا بسببautowraptتحميلinstanaPython package قبل أي آخرين (حتىgevent).
في هذه الحالة ، يكون من الموصى به اما نقل الى Python AutoTrace أو التبديل الى طريقة التركيب اليدوية (بواسطة اضافةimport instanaالى الكود الخاص بك).
" فشل في تركيب مجموعة برامج Intana Python الى /tmp/.instana/python"
وهذا يمكن أن يحدث في بعض الأحيان لأسباب مختلفة. للتشخيص ، من فضلك :
- اتاحة
DEBUGالمستوى تسجيل agent للحصول على تفاصيل عن الفشل. - اذا كان يتم تشغيل Agent مباشرة على النظام الرئيسي (ليس في الحاوية) ، تأكد من أن النظام
pipتم تعديل الأمر باستخدامpip install -U pipومن المعروف أن بعض الإصدارات المبكرة للبيب تتسبب في قضايا في ظل ظروف معينة.
اذا استمرت المشكلة ، برجاء ملف بطاقة طلب الخدمة وقم بارفاق سجلات أخطاء مستوى تصحيح الأخطاء من الخطوة #1.
النقل الى Python AutoTrace
تتبع آلي الآن هي الطريقة المفترضة للأجهزة لتطبيقات Python التي يتم مراقبتها بواسطة Incasced. سيتم آليا تطبيق تطبيقات Python التي تقوم بامرار واستبعاد مرشح البيانات الذي تم توصيفه في البرنامج الوسيط للنظام الرئيسيconfiguration.yaml. للحصول على تفاصيل عن ذلك ، ارجع الى الجزء توصيف Python AutoTrace الخاص بالمطبوعات الفنية.
بالنسبة للعملاء الحاليين ، قد يكون لديك تطبيقات Python تم تجهيزها يدويا من قبل. لن يؤدي ذلك الى حدوث أي مشاكل في Incast أو Python AutoTrace. Python AutoTrace سيقوم لا بمحاولة اعادة وضع هذه التطبيقات.
اذا كنت تفضل الانتقال بالكامل الى Python AutoTrace لبيئة التشغيل الخاصة بك ، لمشاهدة عمليات Python كما هي تأتي وتذهب آليا ، سيقوم هذا القسم بتحديد الخطوات المطلوبة.
للانتقال بالكامل الى Python AutoTrace ، يجب أن تقوم بازالة ما يلي من التطبيقات الخاصة بك :
1. مجموعة برامج Intana Python
سيقوم Python AutoTrace بادارة مجموعة برامج IncasA Python بطريقة مستقلة للتطبيق الخاص بك. لا توجد حاجة لك أو للمؤسسة الخاصة بك لتقوم بتركيبها يدويا.
تأكد من ازالةinstanaمجموعة برامج Python منrequirements.txt,Pipfileأوvirtualenv.
_ملحوظة : اذا كنت تقوم باجراء اتصالات OpenTracing API ، يجب أن تقوم باستقبال صريحopentracingبدلا من ذلك وتأكد من أنه تم اجراء الاتصالات الخاصة بك ضد مجموعة البرامج هذه (على سبيل المثال ،opentracing.tracer.start_active_span). وسيظل للاستعلامات آثارا ناجمة عن ذلك. _
2. ازالة متغير بيئة التشغيل AUTORCAPT_BOOTSTRAP
يتم استخدام متغير بيئة التشغيل هذا لتحميل مجموعة برامج Inastanment Python بدون أي تغييرات في الكود مطلوبة. باستخدام Python AutoTrace ، لم يعد هذا مطلوبا.
3. ازالة أيimport instanaاستدعاءات
سيقوم Python AutoTrace بتطبيق مجموعة برامج Incaso Python آليا على تطبيقات Python الخاصة بك. عمليات الاستقبال اليدوية لمجموعة برامج Intana Python يمكن ازالتها.