Bagikan melalui


Mengaktifkan telemetri untuk bendera fitur dalam aplikasi Node.js

Dalam tutorial ini, Anda menggunakan telemetri di aplikasi Node.js Anda untuk melacak evaluasi bendera fitur dan peristiwa kustom. Telemetri memungkinkan Anda membuat keputusan berdasarkan informasi tentang strategi manajemen fitur Anda. Anda menggunakan bendera fitur dengan telemetri diaktifkan yang dibuat dalam gambaran umum untuk mengaktifkan telemetri untuk bendera fitur. Sebelum melanjutkan, pastikan Anda membuat bendera fitur bernama Greeting di penyimpanan Konfigurasi Anda dengan telemetri diaktifkan. Tutorial ini dibangun di atas tutorial untuk menggunakan bendera fitur varian dalam aplikasi Node.js.

Prasyarat

Menambahkan telemetri ke aplikasi Node.js Anda

  1. Pasang paket berikut.

    npm install @microsoft/feature-management-applicationinsights-node
    
  2. Buka server.js dan tambahkan kode berikut di awal untuk menyambungkan ke Application Insights untuk menerbitkan telemetri.

    const appInsightsConnectionString = process.env.APPLICATIONINSIGHTS_CONNECTION_STRING;
    const applicationInsights = require("applicationinsights");
    applicationInsights.setup(appInsightsConnectionString).start();
    
    const express = require("express");
    const server = express();
    // existing code ...
    
  3. Tambahkan impor berikut.

    const { createTelemetryPublisher, trackEvent } = require("@microsoft/feature-management-applicationinsights-node");
    
  4. Buat dan daftarkan penerbit telemetri saat menginisialisasi FeatureManager.

    // existing code ...
    const featureFlagProvider = new ConfigurationMapFeatureFlagProvider(appConfig);
    const publishTelemetry = createTelemetryPublisher(applicationInsights.defaultClient);
    featureManager = new FeatureManager(featureFlagProvider, {
        onFeatureEvaluated: publishTelemetry
    });
    // existing code ...
    

    Panggilan publishTelemetry balik akan mengirim data telemetri setiap kali bendera fitur dievaluasi.

  5. Lacak peristiwa kustom untuk interaksi pengguna. /api/like Ubah titik akhir untuk mengirim data telemetri ke Application Insights setiap kali pengguna menyukai konten. Ini membantu Anda menganalisis varian fitur mana yang berkinerja lebih baik.

    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();
    });
    

Jalankan aplikasi

  1. Application insights memerlukan string koneksi untuk terhubung ke sumber daya Application Insights Anda. Atur APPLICATIONINSIGHTS_CONNECTION_STRING variabel lingkungan ke string koneksi untuk sumber daya Application Insights Anda.

    setx APPLICATIONINSIGHTS_CONNECTION_STRING "applicationinsights-connection-string"
    

    Jika Anda menggunakan PowerShell, jalankan perintah berikut:

    $Env:APPLICATIONINSIGHTS_CONNECTION_STRING = "applicationinsights-connection-string"
    

    Jika Anda menggunakan macOS atau Linux, jalankan perintah berikut:

    export APPLICATIONINSIGHTS_CONNECTION_STRING='applicationinsights-connection-string'
    
  2. Jalankan aplikasi, lihat langkah 4 dari Gunakan bendera fitur varian.

  3. Buat 10 pengguna yang berbeda dan masuk ke aplikasi. Saat Anda masuk dengan setiap pengguna, Anda mendapatkan varian pesan yang berbeda untuk beberapa di antaranya. ~50% dari waktu Anda tidak mendapatkan pesan. 25% saat Anda mendapatkan pesan "Halo!" dan 25% saat Anda mendapatkan "Saya harap ini membuat hari Anda!"

  4. Dengan beberapa pengguna klik tombol Suka untuk memicu peristiwa telemetri.

    Cuplikan layar aplikasi dengan tombol like diklik.

  5. Buka sumber daya Application Insights Anda di portal Microsoft Azure dan pilih Log di bawah Pemantauan. Di jendela kueri, jalankan kueri berikut untuk melihat peristiwa telemetri:

    // 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)
    

    Cuplikan layar Application Insights memperlihatkan tabel hasil dengan empat baris; Semua, Sederhana, Panjang, dan Tidak Ada dengan jumlah dan persentase pengguna masing-masing.

    Anda melihat satu kejadian "FeatureEvaluation" setiap kali halaman kutipan dimuat dan satu kejadian "Liked" setiap kali tombol suka diklik. Peristiwa "FeatureEvaluation" memiliki properti kustom yang disebut FeatureName dengan nama bendera fitur yang dievaluasi. Kedua kejadian memiliki properti kustom dengan nama TargetingId yang merupakan nama pengguna yang menyukai kutipan.

    Untuk informasi selengkapnya tentang peristiwa "FeatureEvaluation", buka referensi telemetri bendera fitur

Sumber daya tambahan

Langkah selanjutnya

Untuk ringkasan fitur lengkap dari pustaka manajemen fitur JavaScript, silakan merujuk pada dokumen berikut.