/// <summary> /// Track Event in application insights /// </summary> /// <param name="logger">logger</param> /// <param name="pageViewTelemetry">Pageview telemetry object</param> /// <param name="userid">user id</param> /// <param name="deviceId">device id</param> /// <param name="Ip">Ip of device from where request arrived</param> /// <returns></returns> public static void TrackPageView(PageViewTelemetry pageViewTelemetry, string userid = null, string deviceId = null, string Ip = null) { Telemetry.Context.User.Id = userid ?? string.Empty; Telemetry.Context.Device.Id = deviceId ?? string.Empty; Telemetry.Context.Location.Ip = Ip ?? string.Empty; Telemetry.TrackPageView(pageViewTelemetry); }
/// <summary> /// Logs the quality of srevice event. /// </summary> private void LogQosEvent() { if (qosEvent == null) { return; } qosEvent.FinishQosEvent(); PageViewTelemetry pageViewTelemetry = new PageViewTelemetry { Name = EVENT_NAME, Duration = qosEvent.Duration, Timestamp = qosEvent.StartTime }; pageViewTelemetry.Context.Device.OperatingSystem = Environment.OSVersion.ToString(); PopulatePropertiesFromQos(pageViewTelemetry.Properties); try { #if DEBUG telemetryClient.TrackPageView(pageViewTelemetry); #endif } catch { // Ignore any error with capturing the telemetry } if (qosEvent.Exception != null) { LogExceptionEvent(); } }
public static PageViewTelemetry ConvertPageViewToSdkApi(Telemetry inputTelemetry) { var result = new PageViewTelemetry(); PageView item = inputTelemetry.PageView; item.Event = item.Event ?? new Event(); result.Id = item.Id; if (Uri.TryCreate(item.Url, UriKind.RelativeOrAbsolute, out var uri)) { result.Url = uri; } result.Duration = item.Duration?.ToTimeSpan() ?? TimeSpan.Zero; result.Name = item.Event.Name; result.Properties.PopulateFromProtobuf(item.Event?.Properties); result.Metrics.PopulateFromProtobuf(item.Event?.Measurements); AiTelemetryConverter.CopyCommonFields(inputTelemetry, result); AiTelemetryConverter.CopySamplingFields(inputTelemetry, result); return(result); }
/// <inheritdoc /> public void View(string viewName, Dictionary <string, string> properties = null, Dictionary <string, double> metrics = null) { if (this.telemetryDisabled) { return; } try { PageViewTelemetry tele = new PageViewTelemetry(viewName); if (properties != null) { Utils.CopyDictionary(properties, tele.Properties); } if (metrics != null) { Utils.CopyDictionary(metrics, tele.Metrics); } if (!isSettingsInitialized) { this.telemetryToSendLater.Enqueue(tele); } else { this.TelemetryClient.TrackPageView(tele); } } catch { if (!this.telimenaProperties.SuppressAllErrors) { throw; } } }
public override bool Edit(IPolicyEditArgs policyEditArgs) { PageViewTelemetry pvt = new PageViewTelemetry("BranchPolicyEdit"); Stopwatch pvtrak = new Stopwatch(); pvtrak.Start(); bool result = false; try { IBranchPatternsRepository repo = new BranchPatternsRepository(branchPatterns); var wpfwindow = new BranchLockPolicyEditorWindow(policyEditArgs, repo); ElementHost.EnableModelessKeyboardInterop(wpfwindow); wpfwindow.ShowDialog(); branchPatterns = repo.FindAll().ToList(); TellMe.Instance.TrackMetric("BranchPolicyCount", branchPatterns.Count); result = true; } catch (Exception ex) { TellMe.Instance.TrackException(ex); MessageBox.Show(string.Format("There was an error loading the Edit Vew for BranchPatternPolicy:/n/n {0}", ex.Message)); result = false; } pvt.Duration = pvtrak.Elapsed; TellMe.Instance.TrackPageView(pvt); return(result); }
/// <summary> /// Initializes a new instance of the <see cref="TelemetryForm"/> class. /// </summary> public TelemetryForm() { _telemetryData = new PageViewTelemetry( !string.IsNullOrWhiteSpace(this.Name) ? this.Name : this.GetType().Name); _telemetryClientFetcher = new Lazy <TelemetryClient>(() => { System.Diagnostics.Debug.Assert(!string.IsNullOrWhiteSpace(this.TelemetryClientName), string.Format("No Telemetry client name set on Telemetry Button \"{0}\"", this.Name)); if (!string.IsNullOrWhiteSpace(this.TelemetryClientName)) { try { return(Telemetry.GetClient(this.TelemetryClientName)); } catch (Exception ex) { System.Diagnostics.Debug.Fail(string.Format("Couldn't find telemetry client with name {0}", this.TelemetryClientName), ex.ToString()); } } return(null); }); }
public void RichPayloadEventSourcePageViewSentTest() { var client = new TelemetryClient(); client.InstrumentationKey = Guid.NewGuid().ToString(); using (var listener = new Microsoft.ApplicationInsights.TestFramework.TestEventListener()) { listener.EnableEvents(RichPayloadEventSource.Log.EventSourceInternal, EventLevel.Verbose, RichPayloadEventSource.Keywords.PageViews); var item = new PageViewTelemetry("TestPage"); item.Context.Properties.Add("property1", "value1"); item.Context.User.Id = "testUserId"; item.Context.Operation.Id = Guid.NewGuid().ToString(); client.TrackPageView(item); var actualEvent = listener.Messages.FirstOrDefault(); Assert.IsNotNull(actualEvent); Assert.AreEqual(client.InstrumentationKey, actualEvent.Payload[0]); object[] tags = actualEvent.Payload[1] as object[]; Assert.AreEqual("ai.user.id", ((Dictionary <string, object>)(tags[0]))["Key"]); Assert.AreEqual("testUserId", ((Dictionary <string, object>)(tags[0]))["Value"]); Assert.AreEqual("ai.operation.id", ((Dictionary <string, object>)(tags[1]))["Key"]); Assert.AreEqual(item.Context.Operation.Id, ((Dictionary <string, object>)(tags[1]))["Value"]); Assert.IsNotNull(actualEvent.Payload[2]); } }
private static void SerializePageViewTelemetry(PageViewTelemetry pageViewTelemetry, JsonWriter writer) { writer.WriteStartObject(); pageViewTelemetry.WriteTelemetryName(writer, PageViewTelemetry.TelemetryName); pageViewTelemetry.WriteEnvelopeProperties(writer); writer.WritePropertyName("data"); { writer.WriteStartObject(); // TODO: MetricTelemetry should write type as this.data.baseType once Common Schema 2.0 compliant. writer.WriteProperty("baseType", pageViewTelemetry.BaseType); writer.WritePropertyName("baseData"); { writer.WriteStartObject(); writer.WriteProperty("ver", pageViewTelemetry.Data.ver); writer.WriteProperty("name", pageViewTelemetry.Data.name); writer.WriteProperty("url", pageViewTelemetry.Data.url); writer.WriteProperty("duration", pageViewTelemetry.Data.duration); writer.WriteProperty("measurements", pageViewTelemetry.Data.measurements); writer.WriteProperty("properties", pageViewTelemetry.Data.properties); writer.WriteEndObject(); } writer.WriteEndObject(); } writer.WriteEndObject(); }
internal void WriteTelemetry(ITelemetry telemetryItem) { if (telemetryItem == null) { CoreEventSource.Log.LogVerbose("telemetryItem param is null in EventSourceWriter.WriteTelemetry()"); } else if (eventSource.IsEnabled()) { if (telemetryItem is EventTelemetry) { EventTelemetry eventTelemetry = telemetryItem as EventTelemetry; WriteEvent("Event", eventTelemetry.Context, eventTelemetry.Data); } else if (telemetryItem is ExceptionTelemetry) { ExceptionTelemetry exceptionTelemetry = telemetryItem as ExceptionTelemetry; WriteEvent("Exception", exceptionTelemetry.Context, exceptionTelemetry.Data); } else if (telemetryItem is MetricTelemetry) { MetricTelemetry metricTelemetry = telemetryItem as MetricTelemetry; WriteEvent("Metric", metricTelemetry.Context, metricTelemetry.Data); } else if (telemetryItem is PageViewTelemetry) { PageViewTelemetry pageViewTelemetry = telemetryItem as PageViewTelemetry; WriteEvent("PageView", pageViewTelemetry.Context, pageViewTelemetry.Data); } else if (telemetryItem is RemoteDependencyTelemetry) { RemoteDependencyTelemetry remoteDependencyTelemetry = telemetryItem as RemoteDependencyTelemetry; WriteEvent("RemoteDependency", remoteDependencyTelemetry.Context, remoteDependencyTelemetry.Data); } else if (telemetryItem is RequestTelemetry) { RequestTelemetry requestTelemetry = telemetryItem as RequestTelemetry; WriteEvent("Request", requestTelemetry.Context, requestTelemetry.Data); } else if (telemetryItem is SessionStateTelemetry) { SessionStateTelemetry sessionStateTelemetry = telemetryItem as SessionStateTelemetry; sessionStateTelemetry.Data.state = (Coding4Fun.VisualStudio.ApplicationInsights.Extensibility.Implementation.External.SessionState)sessionStateTelemetry.State; WriteEvent("SessionState", sessionStateTelemetry.Context, sessionStateTelemetry.Data); } else if (telemetryItem is TraceTelemetry) { TraceTelemetry traceTelemetry = telemetryItem as TraceTelemetry; WriteEvent("Message", traceTelemetry.Context, traceTelemetry.Data); } else { string message = string.Format(CultureInfo.InvariantCulture, "Unknown telemtry type: {0}", new object[1] { telemetryItem.GetType() }); CoreEventSource.Log.LogVerbose(message); } } }
public void SendEventToValidateEndpoint() { EventTelemetry telemetry1 = new EventTelemetry(); MetricTelemetry telemetry2 = new MetricTelemetry(); DependencyTelemetry telemetry3 = new DependencyTelemetry(); ExceptionTelemetry telemetry4 = new ExceptionTelemetry(); MetricTelemetry telemetry5 = new MetricTelemetry(); PageViewTelemetry telemetry6 = new PageViewTelemetry(); PerformanceCounterTelemetry telemetry7 = new PerformanceCounterTelemetry(); RequestTelemetry telemetry8 = new RequestTelemetry(); SessionStateTelemetry telemetry9 = new SessionStateTelemetry(); TraceTelemetry telemetry10 = new TraceTelemetry(); var telemetryItems = new List <ITelemetry> { telemetry1, telemetry2, telemetry3, telemetry4, telemetry5, telemetry6, telemetry7, telemetry8, telemetry9, telemetry10 }; // ChuckNorrisTeamUnitTests resource in Prototypes5 var config = new TelemetryConfiguration { InstrumentationKey = "fafa4b10-03d3-4bb0-98f4-364f0bdf5df8" }; var telemetryClient = new TelemetryClient(config); telemetryClient.Initialize(telemetry1); telemetryClient.Initialize(telemetry2); telemetryClient.Initialize(telemetry3); telemetryClient.Initialize(telemetry4); telemetryClient.Initialize(telemetry5); telemetryClient.Initialize(telemetry6); telemetryClient.Initialize(telemetry7); telemetryClient.Initialize(telemetry8); telemetryClient.Initialize(telemetry9); telemetryClient.Initialize(telemetry10); string json = JsonSerializer.SerializeAsString(telemetryItems); HttpClient client = new HttpClient(); var result = client.PostAsync( "https://dc.services.visualstudio.com/v2/validate", new ByteArrayContent(Encoding.UTF8.GetBytes(json))).GetAwaiter().GetResult(); if (result.StatusCode != HttpStatusCode.OK) { var response = result.Content.ReadAsStringAsync().GetAwaiter().GetResult(); Trace.WriteLine(response); } Assert.Equal(HttpStatusCode.OK, result.StatusCode); }
/// <summary> /// Track information about the page viewed in the application. /// </summary> /// <param name="pageViewTelemetry">Page view to track.</param> public void TrackPageView(PageViewTelemetry pageViewTelemetry, [CallerFilePath] string sourceFile = "", [CallerLineNumber] int sourceLine = 0, [CallerMemberName] string member = "") { _telemetryClient.TrackPageView(pageViewTelemetry); if (AutoForcedFlushEnabled) { Flush(); } }
private void TrackPageViewWithPropertiesButton_Click() { PageViewTelemetry pvt = new PageViewTelemetry(); pvt.Name = "Scenario1_Crashes_PageViewTelemetry"; pvt.Properties.Add("Property1", "Value1"); HockeyClient.Current.TrackPageView(pvt); }
/// <summary> /// Send information about the page viewed in the application. /// </summary> public void TrackPageView(PageViewTelemetry telemetry) { if (telemetry == null) { telemetry = new PageViewTelemetry(); } Track(telemetry); }
private static void SerializeTelemetryItem(ITelemetry telemetryItem, JsonWriter jsonWriter) { if (telemetryItem is EventTelemetry) { EventTelemetry eventTelemetry = telemetryItem as EventTelemetry; SerializeEventTelemetry(eventTelemetry, jsonWriter); } else if (telemetryItem is ExceptionTelemetry) { ExceptionTelemetry exceptionTelemetry = telemetryItem as ExceptionTelemetry; SerializeExceptionTelemetry(exceptionTelemetry, jsonWriter); } else if (telemetryItem is MetricTelemetry) { MetricTelemetry metricTelemetry = telemetryItem as MetricTelemetry; SerializeMetricTelemetry(metricTelemetry, jsonWriter); } else if (telemetryItem is PageViewTelemetry) { PageViewTelemetry pageViewTelemetry = telemetryItem as PageViewTelemetry; SerializePageViewTelemetry(pageViewTelemetry, jsonWriter); } else if (telemetryItem is DependencyTelemetry) { DependencyTelemetry remoteDependencyTelemetry = telemetryItem as DependencyTelemetry; SerializeDependencyTelemetry(remoteDependencyTelemetry, jsonWriter); } else if (telemetryItem is RequestTelemetry) { RequestTelemetry requestTelemetry = telemetryItem as RequestTelemetry; SerializeRequestTelemetry(requestTelemetry, jsonWriter); } else if (telemetryItem is SessionStateTelemetry) { SessionStateTelemetry sessionStateTelemetry = telemetryItem as SessionStateTelemetry; SerializeSessionStateTelemetry(sessionStateTelemetry, jsonWriter); } else if (telemetryItem is TraceTelemetry) { TraceTelemetry traceTelemetry = telemetryItem as TraceTelemetry; SerializeTraceTelemetry(traceTelemetry, jsonWriter); } else if (telemetryItem is PerformanceCounterTelemetry) { PerformanceCounterTelemetry performanceCounterTelemetry = telemetryItem as PerformanceCounterTelemetry; SerializePerformanceCounter(performanceCounterTelemetry, jsonWriter); } else if (telemetryItem is CrashTelemetry) { CrashTelemetry crashTelemetry = telemetryItem as CrashTelemetry; SerializeCrash(crashTelemetry, jsonWriter); } else { string msg = string.Format(CultureInfo.InvariantCulture, "Unknown telemtry type: {0}", telemetryItem.GetType()); CoreEventSource.Log.LogVerbose(msg); } }
public void AiTelemetryConverterTests_ConvertsPageView() { // ARRANGE var timestamp = DateTimeOffset.UtcNow; Telemetry telemetry = new Telemetry() { Ver = 5, DataTypeName = "PageView", DateTime = timestamp.ToString("o"), SamplingRate = new Google.Protobuf.WellKnownTypes.DoubleValue() { Value = 25 }, SequenceNumber = "50", InstrumentationKey = "ikey", PageView = new PageView() { Url = "http://microsoft.com/", Duration = new Google.Protobuf.WellKnownTypes.Duration() { Seconds = 123 }, Id = "PageView1", ReferrerUri = "http://none.com", Event = new Event() { Ver = 6, Name = "Event1" } } }; telemetry.Tags.Add(new ContextTagKeys().SessionId, "sessionId"); telemetry.Tags.Add("ai.internal.sdkVersion", "java:2.1.2"); telemetry.PageView.Event.Properties.Add("prop1", "propValue1"); telemetry.PageView.Event.Measurements.Add("measurement1", 105); // ACT PageViewTelemetry result = AiTelemetryConverter.ConvertPageViewToSdkApi(telemetry); // ASSERT Assert.AreEqual("PageView1", result.Id); Assert.AreEqual("http://microsoft.com/", result.Url.OriginalString); Assert.AreEqual(TimeSpan.FromSeconds(123), result.Duration); Assert.AreEqual("Event1", result.Name); Assert.AreEqual("prop1", result.Properties.Single().Key); Assert.AreEqual("propValue1", result.Properties.Single().Value); Assert.AreEqual("measurement1", result.Metrics.Single().Key); Assert.AreEqual(105.0, result.Metrics.Single().Value); // common fields Assert.AreEqual("50", result.Sequence); Assert.AreEqual(timestamp, result.Timestamp); Assert.AreEqual("ikey", result.Context.InstrumentationKey); Assert.AreEqual("sessionId", result.Context.Session.Id); Assert.AreEqual("lf_java:2.1.2", result.Context.GetInternalContext().SdkVersion); // sampling fields Assert.IsNull((result as ISupportSampling).SamplingPercentage); }
public void TrackPageView(string pageName) { var tel = new PageViewTelemetry(pageName); tel.Properties.Add(new KeyValuePair <string, string>("Machine_name", _machine)); tel.Properties.Add(new KeyValuePair <string, string>("User_name", _user)); tel.Properties.Add(new KeyValuePair <string, string>("Domain_name", _domain)); _telemetryClient.TrackPageView(tel); }
public void Process_PageView_NullUris() { var telemetry = new PageViewTelemetry(); BuildProcessor().Process(telemetry); Assert.Null(telemetry.Url); Assert.Empty(telemetry.Properties); }
public void InitializeSetsLocationIpToUserHostAddressIfHeadersIsEmpty() { var module = new TestableClientIpHeaderTelemetryInitializer(new Dictionary <string, string>()); var telemetry = new PageViewTelemetry(); module.Initialize(telemetry); Assert.AreEqual("127.0.0.1", telemetry.Context.Location.Ip); }
public void TrackPageView(string name) { if (!IsTrackingEnabled) { return; } var telemetry = new PageViewTelemetry(name); Client.TrackPageView(telemetry); }
/// <summary> /// Raises the <see cref="E:NavigatedFrom" /> event. /// </summary> /// <param name="e">The <see cref="NavigationEventArgs"/> instance containing the event data.</param> protected override void OnNavigatedFrom(NavigationEventArgs e) { base.OnNavigatedFrom(e); TelemetryClient client = new TelemetryClient(); PageViewTelemetry telemetry = new PageViewTelemetry(this.GetType().FullName) { Duration = DateTimeOffset.Now - this.whenNavigatedTo, }; client.TrackPageView(telemetry); }
public void TestGetNameOrMessage_PageViewTelemetry() { // arrange string expected = "TestName"; PageViewTelemetry telemetry = new PageViewTelemetry(expected); // act string actual = telemetry.GetNameOrMessage(); // assert Assert.AreEqual(expected, actual); }
public void TestGetTelemetryTypePrefix_PageViewTelemetry() { // arrange string expected = "PageView"; PageViewTelemetry telemetry = new PageViewTelemetry(expected); // act string actual = telemetry.GetTelemetryTypePrefix(); // assert Assert.AreEqual(expected, actual); }
public void InitializeCutsPortFromIp() { var dictionary = new Dictionary <string, string> { { "X-Forwarded-For", "1.2.3.4:54321" } }; var module = new TestableClientIpHeaderTelemetryInitializer(dictionary); var telemetry = new PageViewTelemetry(); module.Initialize(telemetry); Assert.AreEqual("1.2.3.4", telemetry.Context.Location.Ip); }
public void TrackPageViewSendsGivenPageViewTelemetryToTelemetryChannel() { var sentTelemetry = new List <ITelemetry>(); TelemetryClient client = this.InitializeTelemetryClient(sentTelemetry); var pageViewTelemetry = new PageViewTelemetry("TestName"); client.TrackPageView(pageViewTelemetry); var channelPageView = (PageViewTelemetry)sentTelemetry.Single(); Assert.Same(pageViewTelemetry, channelPageView); }
public void TrackPageView(string name, string parameter) { if (!IsTrackingEnabled) { return; } var telemetry = new PageViewTelemetry(name); if (!string.IsNullOrEmpty(parameter)) { telemetry.Properties.Add("Parameter", parameter); } Client.TrackPageView(telemetry); }
private void LogUsageEvent(AzurePSQoSEvent qos) { foreach (TelemetryClient client in TelemetryClients) { var pageViewTelemetry = new PageViewTelemetry { Name = qos.CommandName ?? "empty", Duration = qos.Duration, Timestamp = qos.StartTime }; LoadTelemetryClientContext(qos, pageViewTelemetry.Context); PopulatePropertiesFromQos(qos, pageViewTelemetry.Properties); client.TrackPageView(pageViewTelemetry); } }
public static void TrackPage(string name) { if (context == null) { Initialize(); } if (!enable) { return; } PageViewTelemetry page = new PageViewTelemetry(name); page.Context.Operation.Name = name; context.TrackPageView(page); }
public void Process_PageView_SingleQueryParam_NotFiltered() { var telemetry = new PageViewTelemetry { Url = new Uri("https://test.com/?key=value"), Properties = { { "refUri", "https://test.com/ref?key=value" } } }; BuildProcessor().Process(telemetry); Assert.Equal("https://test.com/?key=value", telemetry.Url.AbsoluteUri); Assert.Equal("https://test.com/ref?key=value", telemetry.Properties["refUri"]); }
public void Process_PageView_SingleQueryParam() { var telemetry = new PageViewTelemetry { Url = new Uri("https://test.com/?code=my-code"), Properties = { { "refUri", "https://test.com/ref?code=my-code" } } }; BuildProcessor().Process(telemetry); Assert.Equal("https://test.com/?code=__redacted__", telemetry.Url.AbsoluteUri); Assert.Equal("https://test.com/ref?code=__redacted__", telemetry.Properties["refUri"]); }
public void Process_PageView_InvalidRefUri() { var telemetry = new PageViewTelemetry { Url = new Uri("https://test.com/"), Properties = { { "refUri", "Not a URI" } } }; BuildProcessor().Process(telemetry); Assert.Equal("https://test.com/", telemetry.Url.AbsoluteUri); Assert.Equal("Not a URI", telemetry.Properties["refUri"]); }
/// <summary> /// Send information about the page viewed in the application. /// </summary> public void TrackPageView(PageViewTelemetry telemetry) { if (telemetry == null) { telemetry = new PageViewTelemetry(); } this.Track(telemetry); }
private void TrackPageView(string pageName, TimeSpan duration) { var client = (HockeyClient)(HockeyClient.Current); var telemetry = new PageViewTelemetry(pageName) { Duration = duration, }; try { client.TrackPageView(telemetry); } catch (ObjectDisposedException) { Interlocked.CompareExchange(ref this.client, null, client); } }