مراقبة التطبيق ل Azure App Service وPython (معاينة)
هام
للحصول على الشروط القانونية التي تنطبق على ميزات Azure الموجودة في الإصدار التجريبي، أو المعاينة، أو التي لم يتم إصدارها بعد في التوفر العام، راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.
مراقبة تطبيقات ويب Python على Azure App Services دون تعديل التعليمات البرمجية. يوضح لك هذا الدليل كيفية تمكين Azure Monitor Application Insights ويقدم تلميحات لأتمتة عمليات النشر واسعة النطاق.
أدوات التكامل مكتبات Python الشائعة في التعليمات البرمجية الخاصة بك، ما يتيح لك جمع التبعيات والسجلات والمقاييس وربطها تلقائيا. بعد وضع تقرير عن حالة النظام، يمكنك جمع المكالمات والمقاييس من مكتبات Python هذه:
إشعار
إذا كنت تستخدم Django، فشاهد قسم Django Instrumentation الإضافي في هذه المقالة.
يتم جمع بيانات تتبع الاستخدام للتسجيل على مستوى مسجل الجذر. لمعرفة المزيد حول التسلسل الهرمي للتسجيل الأصلي في Python، قم بزيارة وثائق تسجيل Python.
المتطلبات الأساسية
- إصدار Python 3.11 أو إصدار سابق.
- يجب نشر App Service كتعليق برمجي. الحاويات المخصصة غير مدعومة.
تمكين "Application Insights"
أسهل طريقة لمراقبة تطبيقات Python على Azure App Services هي من خلال مدخل Microsoft Azure.
تنشيط المراقبة في مدخل Microsoft Azure تلقائيا أدوات التطبيق الخاص بك مع Application Insights ولا يتطلب أي تغييرات في التعليمات البرمجية.
إشعار
يجب عليك استخدام البنية التلقائية على App Service فقط إذا كنت لا تستخدم الأجهزة اليدوية ل OpenTelemetry في التعليمات البرمجية الخاصة بك، مثل Azure Monitor OpenTelemetry Distro أو Azure Monitor OpenTelemetry Exporter. هذا لمنع إرسال البيانات المكررة. لمعرفة المزيد حول هذا الموضوع، راجع قسم استكشاف الأخطاء وإصلاحها في هذه المقالة.
البنية التلقائية من خلال مدخل Microsoft Azure
للحصول على قائمة كاملة بسيناريوهات البنية التلقائية المدعومة، راجع البيئات واللغات وموفري الموارد المعتمدين.
قم بالتبديل بين مراقبة تطبيقات Python في Azure App Service دون الحاجة إلى تغييرات في التعليمات البرمجية.
يتكامل Application Insights ل Python مع خدمة تطبيقات Linux Azure المستندة إلى التعليمات البرمجية.
التكامل في المعاينة العامة. يضيف Python SDK، وهو في GA.
اختر Application Insights في لوحة تحكم Azure لخدمة التطبيق، ثم حدد Enable.
اختر إنشاء مورد جديد أو حدد موردا Insights للتطبيق لهذا التطبيق.
إشعار
عند تحديدموافقلإنشاء مورد جديد ستتم مطالبتكبتطبيق إعدادات المراقبة. سيؤدي تحديدمتابعةإلى ربط مورد Application Insights الجديد بخدمة التطبيق الخاص بك، وسيؤدي ذلك أيضاً إلىإعادة تشغيل خدمة التطبيق.
يمكنك تحديد المورد، وهو جاهز للاستخدام.
التكوين
يمكنك التكوين باستخدام متغيرات بيئة OpenTelemetry مثل:
متغير البيئة | الوصف |
---|---|
OTEL_SERVICE_NAME , OTEL_RESOURCE_ATTRIBUTES |
يحدد سمات مورد OpenTelemetry المقترنة بتطبيقك. يمكنك تعيين أي سمات مورد مع OTEL_RESOURCE_ATTRIBUTES أو استخدام OTEL_SERVICE_NAME لتعيين service.name فقط . |
OTEL_LOGS_EXPORTER |
إذا تم تعيينه إلى None ، يعطل جمع وتصدير بيانات تتبع الاستخدام للتسجيل. |
OTEL_METRICS_EXPORTER |
إذا تم تعيينه إلى None ، يعطل جمع وتصدير القياس عن بعد القياسي. |
OTEL_TRACES_EXPORTER |
إذا تم تعيينه إلى None ، يعطل جمع وتصدير بيانات تتبع الاستخدام الموزعة. |
OTEL_BLRP_SCHEDULE_DELAY |
تحديد الفاصل الزمني لتصدير التسجيل بالمللي ثانية. الافتراضيات إلى 5000. |
OTEL_BSP_SCHEDULE_DELAY |
تحديد الفاصل الزمني لتصدير التتبع الموزع بالمللي ثانية. الافتراضيات إلى 5000. |
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS |
تحديد الأجهزة OpenTelemetry التي يجب تعطيلها. عند التعطيل، لا يتم تنفيذ الأجهزة كجزء من البنية التلقائية. يقبل قائمة مفصولة بفواصل بأسماء المكتبات الصغيرة. على سبيل المثال، قم بتعيينه إلى "psycopg2,fastapi" لتعطيل أجهزة Psycopg2 وFastAPI. يتم تعيينه افتراضيا إلى قائمة فارغة، مما يتيح جميع الأجهزة المدعومة. |
إضافة مكتبة أجهزة المجتمع
يمكنك جمع المزيد من البيانات تلقائيا عند تضمين مكتبات الأجهزة من مجتمع OpenTelemetry.
تنبيه
نحن لا ندعم أو نضمن جودة مكتبات الأجهزة المجتمعية. اقتراح واحد لنشرنا أو نشره أو التصويت عليه في مجتمع الملاحظات لدينا. كن على علم، يعتمد بعضها على مواصفات OpenTelemetry التجريبية وقد يقدم تغييرات كسرية مستقبلية.
لإضافة مجتمع OpenTelemetry Instrumentation Library، قم بتثبيته عبر ملف التطبيق requirements.txt
الخاص بك. يلتقط التثبيت التلقائي ل OpenTelemetry تلقائيا ويجهز جميع المكتبات المثبتة. ابحث عن قائمة مكتبات المجتمع هنا.
أتمتة المراقبة
لتمكين جمع القياس عن بعد باستخدام Application Insights، تحتاج فقط تعيين إعدادات التطبيق التالية:
تعريفات إعدادات التطبيق
اسم إعداد التطبيق | التعريف | القيمة |
---|---|---|
APPLICATIONINSIGHTS_CONNECTION_STRING | سلسلة الاتصال لمورد Application Insights | مثال: abcd1234-ab12-cd34-abcd1234abcd |
ApplicationInsightsAgent_EXTENSION_VERSION | التمديد الرئيسي، الذي يتحكم في مراقبة وقت التشغيل. | ~3 |
إشعار
محلل ملفات التعريف ومصحح اللقطات غير متوفر لتطبيقات Python
إعدادات تطبيق App Service باستخدام Azure Resource Manager
يمكن إدارة إعدادات التطبيق ل Azure App Service وتكوينها باستخدام قوالب Azure Resource Manager. يمكنك استخدام هذا الأسلوب عند نشر موارد App Service جديدة مع أتمتة Resource Manager أو تعديل إعدادات الموارد الموجودة.
البنية الأساسية لإعدادات التطبيق JSON لمورد App Service:
"resources": [
{
"name": "appsettings",
"type": "config",
"apiVersion": "2015-08-01",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
],
"tags": {
"displayName": "Application Insights Settings"
},
"properties": {
"key1": "value1",
"key2": "value2"
}
}
]
للحصول على مثال لقالب Resource Manager مع إعدادات التطبيق المكونة ل Application Insights، يمكن أن يكون هذا القالب مفيدا. على وجه التحديد، راجع القسم الذي يبدأ في السطر 238.
أتمتة إنشاء مورد Application Insights والارتباط بمورد App Service الذي تم إنشاؤه حديثا
لإنشاء قالب Resource Manager مع إعدادات Application Insights الافتراضية، ابدأ العملية كما لو كنت ستنشئ تطبيق ويب جديدا مع تمكين Application Insights.
إنشاء مورد خدمات التطبيق الجديد بمعلومات تطبيق الويب المطلوبة. تمكين Application Insights في علامة التبويب Monitoring .
حدد "Review + create". ثم حدد تنزيل قالب للأتمتة.
ينشئ هذا الخيار أحدث قالب Resource Manager مع تكوين جميع الإعدادات المطلوبة.
في النموذج التالي، استبدل كافة مثيلات AppMonitoredSite
باسم موقعك:
إشعار
إذا كنت تستخدم Windows، فقم بتعيين ApplicationInsightsAgent_EXTENSION_VERSION
إلى ~2
. إذا كنت تستخدم Linux، فقم بتعيين ApplicationInsightsAgent_EXTENSION_VERSION
إلى ~3
.
{
"resources": [
{
"name": "[parameters('name')]",
"type": "Microsoft.Web/sites",
"properties": {
"siteConfig": {
"appSettings": [
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
},
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
},
{
"name": "ApplicationInsightsAgent_EXTENSION_VERSION",
"value": "~2"
}
]
},
"name": "[parameters('name')]",
"serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"dependsOn": [
"[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"microsoft.insights/components/AppMonitoredSite"
],
"apiVersion": "2016-03-01",
"location": "[parameters('location')]"
},
{
"apiVersion": "2016-09-01",
"name": "[parameters('hostingPlanName')]",
"type": "Microsoft.Web/serverfarms",
"location": "[parameters('location')]",
"properties": {
"name": "[parameters('hostingPlanName')]",
"workerSizeId": "[parameters('workerSize')]",
"numberOfWorkers": "1",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"sku": {
"Tier": "[parameters('sku')]",
"Name": "[parameters('skuCode')]"
}
},
{
"apiVersion": "2015-05-01",
"name": "AppMonitoredSite",
"type": "microsoft.insights/components",
"location": "West US 2",
"properties": {
"ApplicationId": "[parameters('name')]",
"Request_Source": "IbizaWebAppExtensionCreate"
}
}
],
"parameters": {
"name": {
"type": "string"
},
"hostingPlanName": {
"type": "string"
},
"hostingEnvironment": {
"type": "string"
},
"location": {
"type": "string"
},
"sku": {
"type": "string"
},
"skuCode": {
"type": "string"
},
"workerSize": {
"type": "string"
},
"serverFarmResourceGroup": {
"type": "string"
},
"subscriptionId": {
"type": "string"
}
},
"$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0"
}
تمكين من خلال PowerShell
لتمكين مراقبة التطبيق من خلال PowerShell، يجب تغيير إعدادات التطبيق الأساسية فقط. تمكن العينة التالية مراقبة التطبيق لموقع ويب يسمى AppMonitoredSite
في مجموعة AppMonitoredRG
الموارد . يقوم بتكوين البيانات لإرسالها إلى 012345678-abcd-ef01-2345-6789abcd
مفتاح تقرير عن حالة النظام.
إشعار
نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. راجع تثبيت Azure PowerShell للبدء. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.
إشعار
إذا كنت تستخدم Windows، فقم بتعيين ApplicationInsightsAgent_EXTENSION_VERSION إلى ~2
. إذا كنت تستخدم Linux، فقم بتعيين ApplicationInsightsAgent_EXTENSION_VERSION إلى ~3
.
$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop
Django Instrumentation
لاستخدام OpenTelemetry Django Instrumentation، تحتاج إلى تعيين DJANGO_SETTINGS_MODULE
متغير البيئة في إعدادات App Service للإشارة من مجلد التطبيق إلى وحدة الإعدادات. لمزيد من المعلومات، راجع وثائق Django.
الأسئلة الشائعة
ما الفرق بين المقاييس القياسية من Application Insights مقابل مقاييس Azure App Service؟
تجمع Application Insights بيانات تتبع الاستخدام للطلبات التي قدمتها إلى التطبيق. إذا حدث الفشل في WebApps/WebServer، ولم يصل الطلب إلى تطبيق المستخدم، فلن يكون لدى Application Insights أي بيانات تتبع الاستخدام عنه.
لا تتطابق مدة serverresponsetime
الحساب بواسطة Application Insights بالضرورة مع وقت استجابة الخادم الذي لاحظته تطبيقات الويب. هذا السلوك لأن Application Insights تحسب المدة فقط عندما يصل الطلب فعليا إلى تطبيق المستخدم. إذا كان الطلب عالقا أو في قائمة الانتظار في WebServer، يتم تضمين وقت الانتظار في مقاييس Web Apps ولكن ليس في مقاييس Application Insights.
استكشاف الأخطاء وإصلاحها
نقدم هنا دليل استكشاف الأخطاء وإصلاحها لمراقبة تطبيقات Python على Azure App Services باستخدام الإتلاف التلقائي.
بيانات تتبع الاستخدام المكررة
يجب عليك استخدام البنية التلقائية على App Service فقط إذا كنت لا تستخدم الأجهزة اليدوية ل OpenTelemetry في التعليمات البرمجية الخاصة بك، مثل Azure Monitor OpenTelemetry Distro أو Azure Monitor OpenTelemetry Exporter. قد يؤدي استخدام البنى التلقائية أعلى الأجهزة اليدوية إلى تكرار القياس عن بعد وزيادة التكلفة. لاستخدام البنية التلقائية ل App Service OpenTelemetry، قم أولا بإزالة الأجهزة اليدوية ل OpenTelemetry من التعليمات البرمجية الخاصة بك.
بيانات تتبع الاستخدام المفقودة
إذا كنت تفتقد بيانات تتبع الاستخدام، فاتبع هذه الخطوات للتأكد من تمكين البنى التلقائية بشكل صحيح.
الخطوة 1: تحقق من شفرة Application Insights على مورد App Service
تأكد من تمكين التثبيت التلقائي في شفرة Application Insights على مورد App Service:
الخطوة 2: تأكد من صحة الإعدادات التطبيق
تأكد من ApplicationInsightsAgent_EXTENSION_VERSION
تعيين إعداد التطبيق إلى قيمة ~3
وأن يشير APPLICATIONINSIGHTS_CONNECTION_STRING
إلى مورد Application Insights المناسب.
الخطوة 3: التحقق من تشخيصات البنية التلقائية وسجلات الحالة
انتقل إلى /var/log/applicationinsights/ وافتح status_*.json.
تأكد من AgentInitializedSuccessfully
تعيين إلى true وأن IKey
يكون لديك iKey صالح.
فيما يلي مثال لملف JSON:
"AgentInitializedSuccessfully":true,
"AppType":"python",
"MachineName":"c89d3a6d0357",
"PID":"47",
"IKey":"00000000-0000-0000-0000-000000000000",
"SdkVersion":"1.0.0"
applicationinsights-extension.log
قد يعرض الملف الموجود في المجلد نفسه تشخيصات مفيدة أخرى.
تطبيقات Django
إذا كان تطبيقك يستخدم Django وكان إما يفشل في بدء تشغيل إعدادات غير صحيحة أو استخدامها، فتأكد من تعيين DJANGO_SETTINGS_MODULE
متغير البيئة. راجع قسم Django Instrumentation للحصول على التفاصيل.
اختبار الاتصال بين مضيف التطبيق وخدمة الاستيعاب
ترسل Application Insights SDKs والوكلاء بيانات تتبع الاستخدام للحصول على استيعابها كمكالمات REST إلى نقاط نهاية الاستيعاب الخاصة بنا. يمكنك اختبار الاتصال من خادم الويب أو الجهاز المضيف للتطبيق إلى نقاط نهاية خدمة الاستيعاب باستخدام عملاء REST الخام من أوامر PowerShell أو curl. راجع استكشاف أخطاء بيانات تتبع استخدام التطبيق المفقودة وإصلاحها في Azure Monitor Application Insights.
للحصول على آخر التحديثات وإصلاحات الأخطاء، راجع ملاحظات الإصدار. -->
الخطوات التالية
- تمكين تشخيصات Azure لإرسالها إلى Application Insights
- مراقبة مقاييس صحة الخدمة للتأكد من توفر الخدمة والاستجابة لها
- تلقي إعلامات التنبيه كلما حدثت أحداث تشغيلية أو تجاوزت المقاييس حدا
- نظرة عامة على التوفر