From 00313a80b6a582fb018f0f67fb773ecbffb37350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Qu=C3=A8ze?= Date: Tue, 8 Jul 2025 13:35:09 +0000 Subject: [PATCH] Bug 1960567 - Migrate histograms to use Glean APIs in netwerk/protocol/http/, r=chutten,necko-reviewers,jesup. Differential Revision: https://phabricator.services.mozilla.com/D255547 --- netwerk/metrics.yaml | 57 +++++++++ netwerk/protocol/http/HttpTrafficAnalyzer.cpp | 15 ++- netwerk/protocol/http/metrics.yaml | 113 +++++++++++++++++- netwerk/protocol/http/nsHttpChannel.cpp | 59 +++++---- 4 files changed, 205 insertions(+), 39 deletions(-) diff --git a/netwerk/metrics.yaml b/netwerk/metrics.yaml index 774dda1be5b7..20344912a378 100644 --- a/netwerk/metrics.yaml +++ b/netwerk/metrics.yaml @@ -1790,6 +1790,36 @@ networking: description: > Upgrading display content Channel Disposition (key: disabled_wont) + http_channel_disposition_upgrade: + type: dual_labeled_counter + description: > + Upgrading display content Channel Disposition + + This metric was generated to correspond to the Legacy Telemetry + categorical histogram HTTP_CHANNEL_DISPOSITION_UPGRADE. + dual_labels: + key: + description: No static keys unfortunately. + category: + labels: + - cancel + - disk + - netOk + - netEarlyFail + - netLateFail + description: Labels of the keyed categorical legacy telemetry histogram + HTTP_CHANNEL_DISPOSITION_UPGRADE. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1440701 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1440701 + notification_emails: + - necko@mozilla.com + - seceng-telemetry@mozilla.com + - jkt@mozilla.com + expires: never + telemetry_mirror: HTTP_CHANNEL_DISPOSITION_UPGRADE + http_channel_onstart_status: type: labeled_counter description: > @@ -1807,6 +1837,33 @@ networking: - successful - fail + http3_channel_onstart_success: + type: dual_labeled_counter + description: > + Successfully started HTTP channels when HTTP3 is used + + This metric was generated to correspond to the Legacy Telemetry boolean + histogram HTTP3_CHANNEL_ONSTART_SUCCESS. + dual_labels: + key: + labels: + - "http3" + - "no_http3" + description: Whether http3 was used. + category: + labels: + - "false" + - "true" + description: Boolean + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1677987 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1677987 + notification_emails: + - necko@mozilla.com + expires: never + telemetry_mirror: HTTP3_CHANNEL_ONSTART_SUCCESS + http_channel_page_open_to_first_sent: type: timing_distribution time_unit: millisecond diff --git a/netwerk/protocol/http/HttpTrafficAnalyzer.cpp b/netwerk/protocol/http/HttpTrafficAnalyzer.cpp index 488f26d5f85c..753417ce2ba5 100644 --- a/netwerk/protocol/http/HttpTrafficAnalyzer.cpp +++ b/netwerk/protocol/http/HttpTrafficAnalyzer.cpp @@ -8,7 +8,6 @@ #include "mozilla/StaticPrefs_network.h" #include "mozilla/glean/NetwerkProtocolHttpMetrics.h" -#include "mozilla/Telemetry.h" #include "mozilla/Unused.h" #include "nsSocketTransportService2.h" @@ -24,9 +23,8 @@ static constexpr nsLiteralCString gKeyName[] = { }; #undef DEFINE_CATEGORY -#define DEFINE_CATEGORY(_name, _idx) \ - Telemetry::LABELS_HTTP_TRAFFIC_ANALYSIS_3::Y##_idx##_##_name, -static const Telemetry::LABELS_HTTP_TRAFFIC_ANALYSIS_3 gTelemetryLabel[] = { +#define DEFINE_CATEGORY(_name, _idx) "Y##_idx##_##_name"_ns, +static const nsLiteralCString gTelemetryLabel[] = { #include "HttpTrafficAnalyzer.inc" }; #undef DEFINE_CATEGORY @@ -187,8 +185,9 @@ void HttpTrafficAnalyzer::IncrementHttpTransaction( LOG(("HttpTrafficAnalyzer::IncrementHttpTransaction [%s] [this=%p]\n", gKeyName[aCategory].get(), this)); - Telemetry::AccumulateCategoricalKeyed("Transaction"_ns, - gTelemetryLabel[aCategory]); + glean::http::traffic_analysis + .Get("Transaction"_ns, gTelemetryLabel[aCategory]) + .Add(); } void HttpTrafficAnalyzer::IncrementHttpConnection( @@ -200,8 +199,8 @@ void HttpTrafficAnalyzer::IncrementHttpConnection( LOG(("HttpTrafficAnalyzer::IncrementHttpConnection [%s] [this=%p]\n", gKeyName[aCategory].get(), this)); - Telemetry::AccumulateCategoricalKeyed("Connection"_ns, - gTelemetryLabel[aCategory]); + glean::http::traffic_analysis.Get("Connection"_ns, gTelemetryLabel[aCategory]) + .Add(); } void HttpTrafficAnalyzer::IncrementHttpConnection( diff --git a/netwerk/protocol/http/metrics.yaml b/netwerk/protocol/http/metrics.yaml index 9dbd7df1eab9..3c7abd914542 100644 --- a/netwerk/protocol/http/metrics.yaml +++ b/netwerk/protocol/http/metrics.yaml @@ -1383,7 +1383,6 @@ networking: - https://bugzil.la/1706842 notification_emails: - arthur@mozilla.com - - tanvi@mozilla.com - tihuang@mozilla.com expires: never telemetry_mirror: NETWORKING_DATA_TRANSFERRED_V3_KB @@ -2894,6 +2893,118 @@ http: expires: never telemetry_mirror: h#ECHCONFIG_SUCCESS_RATE + cache_disposition: + type: dual_labeled_counter + description: > + HTTP Cache v2 hit/miss stats keyed by content type. + + This metric was generated to correspond to the Legacy Telemetry + categorical histogram HTTP_CACHE_DISPOSITION_3. + dual_labels: + key: + description: Keys of the keyed categorical legacy telemetry histogram + HTTP_CACHE_DISPOSITION_3. + labels: + - ALL + - UNKNOWN + - OTHER + - JAVASCRIPT + - IMAGE + - MEDIA + - STYLESHEET + - WASM + category: + labels: + - Unresolved + - Hit + - HitViaReval + - MissedViaReval + - Missed + - Unknown + description: Labels of the keyed categorical legacy telemetry histogram + HTTP_CACHE_DISPOSITION_3. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1611185 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1611185 + notification_emails: + - necko@mozilla.com + expires: never + telemetry_mirror: HTTP_CACHE_DISPOSITION_3 + + traffic_analysis: + type: dual_labeled_counter + description: > + Numbers of HTTP transactions and connections by type. There are some + categories separated by labels based on 5 parameters: 1. normal browsing + or private browsing 2. system principal or not 3. first party or third + party 4. class of service (Leader/Background/Others) 5. tracking + classification (Basic/Content/FingerprintingContent). + + This metric was generated to correspond to the Legacy Telemetry + categorical histogram HTTP_TRAFFIC_ANALYSIS_3. + dual_labels: + key: + description: Keys of the keyed categorical legacy telemetry histogram + HTTP_TRAFFIC_ANALYSIS_3. + labels: + - Connection + - Transaction + category: + labels: + - Y0_N1Sys + - Y1_N1 + - Y2_N3Oth + - Y3_N3BasicLead + - Y4_N3BasicBg + - Y5_N3BasicOth + - Y6_N3ContentLead + - Y7_N3ContentBg + - Y8_N3ContentOth + - Y9_N3FpLead + - Y10_N3FpBg + - Y11_N3FpOth + - Y12_P1Sys + - Y13_P1 + - Y14_P3Oth + - Y15_P3BasicLead + - Y16_P3BasicBg + - Y17_P3BasicOth + - Y18_P3ContentLead + - Y19_P3ContentBg + - Y20_P3ContentOth + - Y21_P3FpLead + - Y22_P3FpBg + - Y23_P3FpOth + description: Labels of the keyed categorical legacy telemetry histogram + HTTP_TRAFFIC_ANALYSIS_3. + bugs: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1533363 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1546796 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1546906 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1550756 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1572666 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1590124 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1621800 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1668604 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1706842 + data_reviews: + - https://bugzilla.mozilla.org/show_bug.cgi?id=1533363 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1546796 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1546906 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1550756 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1572666 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1590124 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1621800 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1668604 + - https://bugzilla.mozilla.org/show_bug.cgi?id=1706842 + notification_emails: + - arthur@mozilla.com + - tanvi@mozilla.com + - tihuang@mozilla.com + expires: never + telemetry_mirror: HTTP_TRAFFIC_ANALYSIS_3 + http3: ech_outcome: type: labeled_custom_distribution diff --git a/netwerk/protocol/http/nsHttpChannel.cpp b/netwerk/protocol/http/nsHttpChannel.cpp index 873239cd7506..1051d1e91c1e 100644 --- a/netwerk/protocol/http/nsHttpChannel.cpp +++ b/netwerk/protocol/http/nsHttpChannel.cpp @@ -185,6 +185,25 @@ enum ChannelDisposition { kHttpsNetLateFail = 12 }; +static nsLiteralCString CacheDispositionToTelemetryLabel( + CacheDisposition hitOrMiss) { + switch (hitOrMiss) { + case kCacheUnresolved: + return "Unresolved"_ns; + case kCacheHit: + return "Hit"_ns; + case kCacheHitViaReval: + return "HitViaReval"_ns; + case kCacheMissedViaReval: + return "MissedViaReval"_ns; + case kCacheMissed: + return "Missed"_ns; + case kCacheUnknown: + return "Unknown"_ns; + } + return "Unresolved"_ns; +} + void AccumulateCacheHitTelemetry(CacheDisposition hitOrMiss, nsIChannel* aChannel) { nsCString key("UNKNOWN"); @@ -214,31 +233,9 @@ void AccumulateCacheHitTelemetry(CacheDisposition hitOrMiss, } } - Telemetry::LABELS_HTTP_CACHE_DISPOSITION_3 label = - Telemetry::LABELS_HTTP_CACHE_DISPOSITION_3::Unresolved; - switch (hitOrMiss) { - case kCacheUnresolved: - label = Telemetry::LABELS_HTTP_CACHE_DISPOSITION_3::Unresolved; - break; - case kCacheHit: - label = Telemetry::LABELS_HTTP_CACHE_DISPOSITION_3::Hit; - break; - case kCacheHitViaReval: - label = Telemetry::LABELS_HTTP_CACHE_DISPOSITION_3::HitViaReval; - break; - case kCacheMissedViaReval: - label = Telemetry::LABELS_HTTP_CACHE_DISPOSITION_3::MissedViaReval; - break; - case kCacheMissed: - label = Telemetry::LABELS_HTTP_CACHE_DISPOSITION_3::Missed; - break; - case kCacheUnknown: - label = Telemetry::LABELS_HTTP_CACHE_DISPOSITION_3::Unknown; - break; - } - - Telemetry::AccumulateCategoricalKeyed(key, label); - Telemetry::AccumulateCategoricalKeyed("ALL"_ns, label); + nsLiteralCString label = CacheDispositionToTelemetryLabel(hitOrMiss); + glean::http::cache_disposition.Get(key, label).Add(); + glean::http::cache_disposition.Get("ALL"_ns, label).Add(); } // Computes and returns a SHA1 hash of the input buffer. The input buffer @@ -7862,10 +7859,10 @@ void nsHttpChannel::RecordOnStartTelemetry(nsresult aStatus, .Add(1); if (mTransaction) { - Telemetry::Accumulate( - Telemetry::HTTP3_CHANNEL_ONSTART_SUCCESS, - (mTransaction->IsHttp3Used()) ? "http3"_ns : "no_http3"_ns, - NS_SUCCEEDED(aStatus)); + glean::networking::http3_channel_onstart_success + .Get((mTransaction->IsHttp3Used()) ? "http3"_ns : "no_http3"_ns, + NS_SUCCEEDED(aStatus) ? "true"_ns : "false"_ns) + .Add(); } enum class HttpOnStartState : uint32_t { @@ -9084,7 +9081,9 @@ nsresult nsHttpChannel::ContinueOnStopRequest(nsresult aStatus, bool aIsFromNet, upgradeKey = "disabledWont"_ns; } - Telemetry::AccumulateCategoricalKeyed(upgradeKey, upgradeChanDisposition); + glean::networking::http_channel_disposition_upgrade + .Get(upgradeKey, upgradeChanDispositionLabel) + .Add(); LOG((" nsHttpChannel::OnStopRequest ChannelDisposition %d\n", chanDisposition));