在本教學課程中,您會在 Node.js 應用程式中使用遙測來追蹤功能旗標評估和自定義事件。 遙測可讓您針對功能管理策略做出明智的決策。 您利用已啟用遙測的功能旗標,而功能旗標是在啟用功能旗標的遙測概觀中所建立。 在繼續之前,請確定您在已啟用遙測的組態存放區中建立名為 Greeting 的功能旗標。 本教學課程是基於先前的教學課程,進一步說明如何在 Node.js 應用程式中使用變體功能旗標。
先決條件
- 已啟用遙測的變體功能旗標,來源於啟用功能旗標的遙測。
- 在 Node.js 應用程式中使用變體功能旗標的應用程式。
將遙測新增至 Node.js 應用程式
安裝下列套件。
npm install @microsoft/feature-management-applicationinsights-node在開頭打開
server.js,並新增下列程式碼,來連接到 Application Insights 發佈遙測。const appInsightsConnectionString = process.env.APPLICATIONINSIGHTS_CONNECTION_STRING; const applicationInsights = require("applicationinsights"); applicationInsights.setup(appInsightsConnectionString).start(); const express = require("express"); const server = express(); // existing code ...新增下列匯入。
const { createTelemetryPublisher, trackEvent } = require("@microsoft/feature-management-applicationinsights-node");在初始化
FeatureManager時,建立並註冊遙測發行者。// existing code ... const featureFlagProvider = new ConfigurationMapFeatureFlagProvider(appConfig); const publishTelemetry = createTelemetryPublisher(applicationInsights.defaultClient); featureManager = new FeatureManager(featureFlagProvider, { onFeatureEvaluated: publishTelemetry }); // existing code ...每次評估功能旗標時,
publishTelemetry回調函式都會傳送遙測數據。追蹤自定義事件以進行用戶互動。
/api/like每當用戶喜歡內容時,修改端點以將遙測數據傳送至 Application Insights。 這可協助您分析哪些功能變體執行得更好。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(); });
執行應用程式
Application Insights 需要連接字串才能連線到 Application Insights 資源。 將
APPLICATIONINSIGHTS_CONNECTION_STRING環境變數設定為 Application Insights 資源的連接字串。setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"如果您使用 PowerShell,請執行下列命令:
$Env:APPLICATIONINSIGHTS_CONNECTION_STRING = "applicationinsights-connection-string"如果您使用 macOS 或 Linux,請執行下列命令:
export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'執行應用程式, 請參閱使用變體功能旗標的步驟 4。
建立10個不同的使用者並登入應用程式。 當您以不同使用者登入時,部分使用者會看到不同的訊息變體。 大約有 50% 的時間您不會收到任何訊息。 您有 25% 的機率會收到「您好!」這則訊息,另外有 25% 的機率會收到「希望這能讓您今天心情愉快!」
有些使用者按兩下 [Like] 按鈕以觸發遙測事件。

在 Azure 入口網站中開啟 Application Insights 資源,然後選取 [監視] 下的 [記錄]。 在查詢視窗中,執行下列查詢以查看遙測事件:
// 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)
每次載入報價頁面時,您會看到一個「FeatureEvaluation」事件,而每次按下喜歡按鈕時,就會看到一個「Liked」事件。 “FeatureEvaluation” 事件具有自定義屬性,其名稱為
FeatureName已評估的功能旗標。 這兩個事件都有一個名為TargetingId的自定義屬性,這個屬性是由喜歡這句話的用戶的名稱來命名的。如需有關“FeatureEvaluation” 事件的詳細資訊,請移至 功能旗標遙測參考
其他資源
後續步驟
如需 JavaScript 功能管理程式庫的完整功能概覽,請參閱下列文件。