תרגיל - שימוש נתונים של OpenTelemetry ביישום מקורי בענן
בתרגיל זה, אתה מקבל ניראות טובה יותר של כל הנתונים שנוצרו על-ידי OpenTelemetry באפליקציה שלך. אתה מסיים להוסיף יכולת אבחון לשירות החנות. עם זאת, אתה מוסיף פרותאוס וגרפיאנה eShopLite שירותים חדשים ו מסתכל על כמה מהמדדים שנלכדים. השלב הבא הוא להוסיף את Zipkin ולהצג את המעקבים המבווזרים. לבסוף, עליך להוסיף תובנות אפליקציות לאפליקציה שלך ולהשתמש בה כדי להציג את הנתונים.
הוספת פרותאוס וגרפיאנה
Prometheus ו- Grafana מספקים תמונות של Docker שמקלות עליך להוסיף אותן לפרוייקטים שלך. עליך לכלול אותן docker-compose.yml הקובץ, בבסיס הפתרון.
בחלונית EXPLORER , בחר את docker-compose.yml הקובץ.
הוסף YAML זה לתחתית הקובץ:
prometheus: image: prom/prometheus container_name: prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' ports: - 9090:9090 restart: unless-stopped volumes: - ./prometheus:/etc/prometheus grafana: image: grafana/grafana container_name: grafana ports: - 3000:3000 restart: unless-stopped environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=grafana volumes: - ./grafana/datasource:/etc/grafana/provisioning/datasources
הדוקר yaml הקודם מוסיף שני שירותים חדשים, Prometheus וGrafana. המקטע Prometheus מגדיר גורם מכיל כך שהוא יגיב ביציאה 9090. הוא ממפה את של התיקיה מצפה לקובץ prometheus.yml חדש. המקטע Grafana מגדיר גורם מכיל כך שיגיב ביציאה 3000. היא ממופה שלוש תיקיות בתוך של גרפיקה.
קביעת תצורה של Prometheus
יש לקבוע את התצורה של פרותאוס כך שהוא יידע היכן לאסוף את המדדים. עליך להוסיף prometheus.yml קובץ לתיקיה פרום שלך.
בחלונית EXPLORER , לחץ באמצעות לחצן העכבר הימני על התיקיה dotnet-observability ולאחר מכן בחר תיקיה חדשה.
בשדה שם, הזן פרוםתאוס.
בחלונית הסייר , לחץ באמצעות לחצן העכבר הימני על תיקיית המבצע ולאחר מכן בחר קובץ חדש.
בשדה שם, הזן prometheus.yml.
בעורך הקבצים, הזן YAML זה:
global: scrape_interval: 1s scrape_configs: - job_name: 'products' static_configs: - targets: ['backend:8080'] - job_name: 'store' static_configs: - targets: ['frontend:8080']ה- YAML הקודם קובע את התצורה של Prometheus כדי לגרד מהקצההחזיתי השירותים. כאשר היישום פועל ב- Docker שמות המארחים הם שמות השירות.
בחר Ctrl+S כדי לשמור את הקובץ.
קביעת תצורה של Grafana
יש לקבוע את תצורת Grafana כך שהוא יודע היכן לאסוף את המדדים.
בחלונית EXPLORER , לחץ באמצעות לחצן העכבר הימני על התיקיה dotnet-observability ולאחר מכן בחר תיקיה חדשה.
בשדה שם, הזן grafana.
לחץ באמצעות לחצן העכבר הימני על התיקיה grafana ולאחר מכן בחר תיקיה חדשה.
בשדה שם, הזן מקור.
לחץ באמצעות לחצן העכבר הימני על התיקיה grafana ולאחר מכן בחר תיקיה חדשה.
בשדה שם, הזן לוח.
הרחב את התיקיה, לחץ באמצעות לחצן העכבר הימני על התיקיה מקור ולאחר מכן בחר קובץ חדש.
בשדה שם, הזן datasource.yml.
בכרטיסיה Editor, הזן YAML זה:
apiVersion: 1 datasources: - name: Prometheus type: prometheus url: http://prometheus:9090 isDefault: true access: proxy editable: trueה- YAML הקודם מגדיר את Grafana כך שישתמש ב- Prometheus כמקור הנתונים.
בחר Ctrl+S כדי לשמור את הקובץ.
עדכן את ASP.NET Core שלך כדי לחשוף מדדים עבור Prometheus
כעת, פרוייקט האבחון מוגדר רק לחשוף מדדים לקונסולה. עדכן את הפרוייקט כדי לחשוף מדדים ל- Prometheus במקום זאת.
בחלונית TERMINAL בחלק התחתון, עבור אל התיקיה אבחון .
הפעל פקודה זו:
cd .\eShopLite\Diagnostics\הסר את
OpenTelemetry.Exporter.Consoleהחבילה:dotnet remove package OpenTelemetry.Exporter.Consoleהוסף את
OpenTelemetry.Exporter.Prometheus.AspNetCoreהחבילה:dotnet add package OpenTelemetry.Exporter.Prometheus.AspNetCore --prereleaseבחלונית EXPLORER , הרחב את התיקיה אבחון ולאחר מכן בחר DiagnosticServiceCollectionExtensions.cs.
החלף את תבנית
.AddConsoleExporter();המסוף בקוד זה:.AddPrometheusExporter();בחלק התחתון של הקובץ, לפני העדכון האחרון
}, הוסף קוד זה:public static void MapObservability(this IEndpointRouteBuilder routes) { routes.MapPrometheusScrapingEndpoint(); }קוד זה מוסיף נקודת קצה של Prometheus המגרדת נקודות קצה לכל שירות הכולל זאת עם היישום שלו. הדבר מאפשר ל- Prometheus לגרד מדדים מ-
http://service/metrics.בחר Ctrl+S כדי לשמור את הקובץ.
חשיפת מדדים בשירות החנות
היישום מוגדר כעת רק לחשוף מדדים עבור Products שלך. אתה מעדכן את האפליקציה כך שתחשוף מדדים גם עבור Store שלך.
בחלונית הסייר , תחת סייר הפתרונות, לחץ באמצעות לחצן העכבר הימני על פרוייקט החנות ולאחר מכן בחר הוסף חומר עזר לפרוייקט.
בחר אבחון.
בחלונית הסייר , הרחב את התיקיה חנות ולאחר מכן בחר Program.cs.
תחת קוד ההערה
// Add observability code here, הוסף שיחה לשיטה אבחון:builder.Services.AddObservability("Store", builder.Configuration);לפני פעולת
app.Run(), הוסף קוד זה:app.MapObservability();שיטה זו מוסיפה את נקודת הקצה של Prometheus מגרדת את Store השירות.
בחר Ctrl+S כדי לשמור את הקובץ.
בחלונית EXPLORER, את התיקיה מוצר ולאחר מכן בחר Program.cs.
לפני פעולת
app.Run(), הוסף קוד זה:app.MapObservability();שיטה זו מוסיפה את נקודת הקצה של Prometheus מגרדת את נקודת הקצה Products service.
בחר Ctrl+S כדי לשמור את הקובץ.
בדיקת התכונות החדשות של יכולת התצפית
כעת אתה בודק את תכונות התצפית החדשות שהוספת לאפליקציה.
בחלונית TERMINAL בחלק התחתון, עבור אל התיקיה dotnet-observability/eShop Lite.
cd ..עדכן את הגורמים המכילים של האפליקציות.
dotnet publish /p:PublishProfile=DefaultContainerעבור אל dotnet-observability, והפעל את האפליקציה באמצעות Docker:
cd .. docker compose upבכרטיסיה יציאות, בחר פתח בדפדפןפרום (9090). אם אתה משתמש באופן מקומי ב- Visual Studio Code, פתח דפדפן ולאחר מכן, בכרטיסיה חדשה, עבור אל האפליקציה Prometheus
http://localhost:9090.בתפריט העליון, בחר מצב מכן בחר יעדים.
אתה אמור לראות את המוצרים ואת Store המפורטים כ- UP.
בכרטיסיה יציאות, בחר פתח בדפדפן עבור גרפיאנה (3000). אם אתה משתמש באופן מקומי ב- Visual Studio Code, פתח דפדפן ולאחר מכן, בכרטיסיה חדשה, עבור אל האפליקציה Grafana
http://localhost:3000.הזן את שם המשתמש מנהל.
הזן את הסיסמה grafana.
בחר יצירת לוח המחוונים הראשון.
בחר לוח המחוונים.
בכרטיסיה חדשה, עבור אל GitHub ופתח את ASP.NET לוח המחוונים Core.
העתקת הקובץ Raw הקובץ.
הדבק את ה- JSON בתיבת ייבוא באמצעות מודל JSON של לוח לוח מחוונים.
בחר טען.
ברשימה הנפתחת של מבצע, בחר פרום.
בחר ייבוא.
אתה אמור לראות לוח מחוונים המציג מדדים עבור המוצרים וStore שלך. בחר את המשימה כדי לשנות בין שני השירותים.
בחלונית TERMINAL, בחר Ctrl+C כדי להפסיק את האפליקציה.
הוסף מיקוד
כעת תוכל להרחיב את יכולות המעקב של האפליקציה על-ידי הוספת Zipkin. כפי שעשית קודם לכן, הוסף גורם מכיל של Zipkin לאפליקציה שלך והגדר אותו כך שיתחבר לאספן OpenTelemetry. לאחר מכן הוסף את הייצוא OpenTelemetry Zipkin לאפליקציה שלך.
בחלונית EXPLORER , בחר את הקובץ docker-compose.yml בתוך התיקיה dotnet-observability .
הוסף
prometheusו-zipkinבתיבהdepends_onעבורfrontend.depends_on: - backend - prometheus - zipkinהוסף
prometheusבתיבהdepends_onעבורbackend.depends_on: - prometheusהוסף משתנים סביבתיים עבור Zipkin הן
frontendוהןbackend:environment: - ZIPKIN_URL=http://zipkin:9411שני השירותים אמורים להיראות כך:
frontend: image: storeimage build: context: . dockerfile: ./eShopLite/Store/Dockerfile environment: - ProductEndpoint=http://backend:8080 - ZIPKIN_URL=http://zipkin:9411 ports: - "32000:8080" depends_on: - backend - prometheus - zipkin backend: image: productservice build: context: . dockerfile: ./eShopLite/Products/Dockerfile environment: - ZIPKIN_URL=http://zipkin:9411 ports: - "32001:8080" depends_on: - prometheusהוסף YAML זה לתחתית הקובץ:
zipkin: image: openzipkin/zipkin ports: - 9411:9411ה- YAML הקודם מוסיף מיכל Zipkin לאפליקציה. הוא מגדיר את הגורם המכיל של Zipkin להגיב ביציאה 9411.
בחר Ctrl+S כדי לשמור את הקובץ.
בחלונית נקודת, עבור אל התיקיה אבחון.
cd ./eShopLite/Diagnostics/הוסף את חבילות הייצוא של Zipkin.
dotnet add package OpenTelemetry.Exporter.Zipkin --prereleaseבחלונית EXPLORER , הרחב את התיקיה אבחון ולאחר מכן בחר DiagnosticServiceCollectionExtensions.cs.
בחלק התחתון של ספקי המעקב, הוסף Zipkin:
// add the tracing providers .WithTracing(tracing => { tracing.SetResourceBuilder(resource) .AddAspNetCoreInstrumentation() .AddHttpClientInstrumentation() .AddSqlClientInstrumentation() .AddZipkinExporter(zipkin => { var zipkinUrl = configuration["ZIPKIN_URL"] ?? "http://zipkin:9411"; zipkin.Endpoint = new Uri($"{zipkinUrl}/api/v2/spans"); }); });בחר Ctrl+S כדי לשמור את הקובץ.
בחלונית TERMINAL בחלק התחתון, עבור אל התיקיה dotnet-observability/eShop Lite.
cd ..עדכן את הגורמים המכילים של האפליקציות.
dotnet publish /p:PublishProfile=DefaultContainerעבור אל dotnet-observability, והפעל את האפליקציה באמצעות Docker:
cd .. docker compose upבכרטיסיה יציאות, בחר פתח בדפדפןפרום (9090). אם אתה משתמש באופן מקומי ב- Visual Studio Code, פתח כרטיסיית דפדפן חדשה ועבור אל האפליקציה Zipkin
http://localhost:9411.בתפריט, בחר יחסי תלות.
בחלונית TERMINAL, בחר Ctrl+C כדי להפסיק את האפליקציה.
הוספת תובנות יישום
השלב האחרון הוא להוסיף תובנות יישום לאפליקציה שלך.
יצירת המשאב 'תובנות יישום' ב- Azure
בחלונית TERMINAL , היכנס ל- Azure.
az login --use-device-codeהצג את המנוי שלך ל- Azure שנבחר.
az account show -o tableאם נבחר מנוי שגוי, בחר את המנוי הנכון באמצעות חשבון az az.
הוסף את ההרחבה עבור תובנות יישום.
az extension add -n application-insightsצור משאב 'תובנות יישום'.
az monitor app-insights component create --app eShopLiteInsights --location eastus --kind web -g eShopLiteאתה אמור לראות פלט זה:
{ "appId": "00001111-aaaa-2222-bbbb-3333cccc4444", "applicationId": "eShopLiteInsights", "applicationType": "web", "connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/", "creationDate": "2023-11-10T16:50:00.950726+00:00", "disableIpMasking": null, "etag": "\"3a02952a-0000-0100-0000-654e5f380000\"", "flowType": "Bluefield", "hockeyAppId": null, "hockeyAppToken": null, "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/eShopLite/providers/microsoft.insights/components/eShopLiteInsights", "immediatePurgeDataOn30Days": null, "ingestionMode": "ApplicationInsights", "instrumentationKey": "00000000-0000-0000-0000-000000000000", "kind": "web", "location": "eastus", "name": "eShopLiteInsights", "privateLinkScopedResources": null, "provisioningState": "Succeeded", "publicNetworkAccessForIngestion": "Enabled", "publicNetworkAccessForQuery": "Enabled", "requestSource": "rest", "resourceGroup": "eShopLite", "retentionInDays": 90, "samplingPercentage": null, "tags": {}, "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "type": "microsoft.insights/components" }מהקובץ הקודם שהוחזרו JSON, העתק את
connectionString, למעט ה- ". לדוגמה:InstrumentationKey=b851fa75-85a2-42f7-bb6f-413725d9d8ba;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/בחלונית EXPLORER , בחר את docker-compose.yml הקובץ.
עליך להוסיף משתנה סביבה שבו משתמש פרוייקט האבחון כדי להתחבר לתובנות יישום. הוסף YAML זה לשירות Store הבא:
environment: - APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=b851fa75-85a2-42f7-bb6f-413725d9d8ba;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/החלף את מחרוזת החיבור הקודמת במחרוזת שהעתקת מ- Azure CLI.
חזור על שלבים אלה עבור Products service. ה- YAML הסופי אמור להיראות כך:
frontend: image: storeimage build: context: . dockerfile: ./eShopLite/Store/Dockerfile environment: - ProductEndpoint=http://backend:8080 - ZIPKIN_URL=http://zipkin:9411 - APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=b851fa75-85a2-42f7-bb6f-413725d9d8ba;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/ ports: - "32000:8080" depends_on: - backend - prometheus - zipkin backend: image: productservice build: context: . dockerfile: ./eShopLite/Products/Dockerfile environment: - ZIPKIN_URL=http://zipkin:9411 - APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=b851fa75-85a2-42f7-bb6f-413725d9d8ba;IngestionEndpoint=https://eastus-2.in.applicationinsights.azure.com/;LiveEndpoint=https://eastus.livediagnostics.monitor.azure.com/בחר Ctrl+S כדי לשמור את הקובץ.
בחלונית נקודת, עבור אל התיקיה אבחון.
cd .\eShopLite\Diagnostics\הוסף את חבילת הייצוא Application Insights.
dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore --prereleaseבחלונית סייר, בחר את התיקיה אבחון ולאחר מכן בחר DiagnosticServiceCollectionExtensions.cs.
בחלק העליון של הקובץ, הוסף משפט
usingהבא:using Azure.Monitor.OpenTelemetry.AspNetCore;לאחר
var otelBuilder = services.AddOpenTelemetry();, הוסף קוד זה:if (!string.IsNullOrEmpty(configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"])) { otelBuilder.UseAzureMonitor(); }בחר Ctrl+S כדי לשמור את הקובץ.
בחלונית TERMINAL בחלק התחתון, עבור אל התיקיה dotnet-observability/eShop Lite.
cd ..עדכן את הגורמים המכילים של האפליקציות.
dotnet publish /p:PublishProfile=DefaultContainerעבור אל dotnet-observability, והפעל את האפליקציה באמצעות Docker:
cd .. docker compose upהיכנס לפורטל Azure עם אותם אישורים שבהם השתמשת כדי להיכנס ל- Azure CLI.
בפורטל Azure, בחר קבוצות משאבים.
בחר את eShopLite המשאבים.
בחר את eShopLiteInsights Application Insights.
בחר את לוח המחוונים.
כדי לראות שינויים במדדים, עבור אל האפליקציה eShopLite ושנה את המניות. לאחר מכן רענן את לוח המחוונים של 'תובנות יישום'.
בחלונית TERMINAL, הקש Ctrl+C כדי לעצור את האפליקציה.