Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku użyjesz telemetrii w aplikacji Node.js do śledzenia oceny flag funkcji i zdarzeń niestandardowych. Telemetria umożliwia podejmowanie świadomych decyzji dotyczących strategii zarządzania funkcjami. Używasz flagi funkcji z włączoną telemetrią, która została utworzona w przeglądzie na potrzeby włączania telemetrii dla flag funkcji. Przed kontynuowaniem upewnij się, że utworzono flagę funkcji o nazwie Greeting w magazynie konfiguracji z włączoną telemetrią. Ten samouczek jest oparty na samouczku dotyczącym używania flag funkcji wariantów w aplikacji Node.js.
Wymagania wstępne
- Flaga wariantu funkcji z włączoną telemetrią w Włącz telemetrię dla flag funkcji.
- Aplikacja z opcji Użyj flag funkcji wariantu w aplikacji Node.js.
Dodawanie telemetrii do aplikacji Node.js
Zainstaluj następujące pakiety.
npm install @microsoft/feature-management-applicationinsights-nodeOtwórz
server.jsi dodaj następujący kod na początku, aby nawiązać połączenie z usługą Application Insights w celu opublikowania danych telemetrycznych.const appInsightsConnectionString = process.env.APPLICATIONINSIGHTS_CONNECTION_STRING; const applicationInsights = require("applicationinsights"); applicationInsights.setup(appInsightsConnectionString).start(); const express = require("express"); const server = express(); // existing code ...Dodaj następujący import.
const { createTelemetryPublisher, trackEvent } = require("@microsoft/feature-management-applicationinsights-node");Podczas inicjowania elementu
FeatureManager, utwórz i zarejestruj wydawcę telemetrii.// existing code ... const featureFlagProvider = new ConfigurationMapFeatureFlagProvider(appConfig); const publishTelemetry = createTelemetryPublisher(applicationInsights.defaultClient); featureManager = new FeatureManager(featureFlagProvider, { onFeatureEvaluated: publishTelemetry }); // existing code ...Wywołanie zwrotne
publishTelemetrybędzie wysyłać dane telemetryczne za każdym razem, gdy flaga cechy jest ewaluowana.Śledzenie zdarzeń niestandardowych na potrzeby interakcji użytkownika. Zmodyfikuj punkt końcowy
/api/liketak, aby wysyłał dane telemetryczne do usługi Application Insights za każdym razem, gdy użytkownik polubi zawartość. Ułatwia to analizowanie, które warianty funkcji działają lepiej.server.post("/api/like", (req, res) => { const { UserId } = req.body; if (UserId === undefined) { return res.status(400).send({ error: "UserId is required" }); } trackEvent(applicationInsights.defaultClient, UserId, { name: "Liked" }); res.status(200).send(); });
Uruchamianie aplikacji
Usługa Application Insights wymaga parametrów połączenia w celu nawiązania połączenia z zasobem usługi Application Insights. Ustaw zmienną środowiskową
APPLICATIONINSIGHTS_CONNECTION_STRINGna ciąg połączenia dla zasobu usługi Application Insights.setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"Jeśli używasz programu PowerShell, uruchom następujące polecenie:
$Env:APPLICATIONINSIGHTS_CONNECTION_STRING = "applicationinsights-connection-string"Jeśli używasz systemu macOS lub Linux, uruchom następujące polecenie:
export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'Uruchom aplikację, zobacz krok 4 sekcji Use variant feature flags (Używanie flag funkcji wariantu).
Utwórz 10 różnych użytkowników i zaloguj się do aplikacji. Podczas logowania się do każdego użytkownika otrzymujesz inny wariant komunikatu dla niektórych z nich. ~50% czasu nie dostajesz komunikatu. 25% czasu otrzymujesz komunikat "Cześć!" i 25% czasu otrzymujesz "Mam nadzieję, że twój dzień jest lepszy!"
Niektórzy użytkownicy klikają przycisk Lubię to, aby wyzwolić zdarzenie telemetrii.
Otwórz zasób usługi Application Insights w witrynie Azure Portal i wybierz pozycję Dzienniki w obszarze Monitorowanie. W oknie zapytania uruchom następujące zapytanie, aby wyświetlić zdarzenia telemetrii:
// Step 1: Get distinct users and their Variant from FeatureEvaluation let evaluated_users = customEvents | where name == "FeatureEvaluation" | extend TargetingId = tostring(customDimensions.TargetingId), Variant = tostring(customDimensions.Variant) | summarize Variant = any(Variant) by TargetingId; // Step 2: Get distinct users who emitted a "Like" let liked_users = customEvents | where name == "Liked" | extend TargetingId = tostring(customDimensions.TargetingId) | summarize by TargetingId; // Step 3: Join them to get only the evaluated users who also liked let hearted_users = evaluated_users | join kind=inner (liked_users) on TargetingId | summarize HeartedUsers = dcount(TargetingId) by Variant; // Step 4: Total evaluated users per variant let total_users = evaluated_users | summarize TotalUsers = dcount(TargetingId) by Variant; // Step 5: Combine results let combined_data = total_users | join kind=leftouter (hearted_users) on Variant | extend HeartedUsers = coalesce(HeartedUsers, 0) | extend PercentageHearted = strcat(round(HeartedUsers * 100.0 / TotalUsers, 1), "%") | project Variant, TotalUsers, HeartedUsers, PercentageHearted; // Step 6: Add total row let total_sum = combined_data | summarize TotalUsers = sum(TotalUsers), HeartedUsers = sum(HeartedUsers) | extend Variant = "All", PercentageHearted = strcat(round(HeartedUsers * 100.0 / TotalUsers, 1), "%") | project Variant, TotalUsers, HeartedUsers, PercentageHearted; // Step 7: Output combined_data | union (total_sum)
Zobaczysz jedno zdarzenie "FeatureEvaluation" za każdym razem, gdy strona z ofertą została załadowana, i jedno zdarzenie "Polubiono" za każdym razem, gdy kliknięto przycisk polubienia. Zdarzenie "FeatureEvaluation" ma właściwość niestandardową z nazwą
FeatureName, odpowiadającą nazwie flagi funkcji, która została oceniona. Oba zdarzenia mają właściwość niestandardową o nazwieTargetingId, która zawiera nazwę użytkownika, który polubił cytat.Aby uzyskać więcej informacji na temat zdarzenia "FeatureEvaluation", przejdź do dokumentacji telemetrii flagi funkcji
Dodatkowe zasoby
Dalsze kroki
Aby zapoznać się z pełnym przeglądem funkcji biblioteki zarządzania funkcjami języka JavaScript, przeczytaj następujący dokument.