Rozhraní API služby Application Insights pro vlastní události a metrikyApplication Insights API for custom events and metrics

Do své aplikace vložte pár řádků kódu, abyste zjistili, co uživatelé s ním pracují, nebo aby vám pomohla diagnostikovat problémy.Insert a few lines of code in your application to find out what users are doing with it, or to help diagnose issues. Telemetrii můžete odesílat ze zařízení a desktopových aplikací, webových klientů a webových serverů.You can send telemetry from device and desktop apps, web clients, and web servers. Použijte rozhraní API telemetrie Azure Application Insights Core k posílání vlastních událostí a metrik a vašich vlastních verzí standardní telemetrie.Use the Azure Application Insights core telemetry API to send custom events and metrics, and your own versions of standard telemetry. Toto rozhraní API je stejné rozhraní API, které používá standardní Application Insights sběrače dat.This API is the same API that the standard Application Insights data collectors use.

Souhrn rozhraní APIAPI summary

Základní rozhraní API je na všech platformách stejné, kromě několika variant, jako je GetMetric (jenom .NET).The core API is uniform across all platforms, apart from a few variations like GetMetric(.NET only).

MetodaMethod PoužitíUsed for
TrackPageView Stránky, obrazovky, listy nebo formuláře.Pages, screens, blades, or forms.
TrackEvent Akce uživatele a další události.User actions and other events. Používá se ke sledování chování uživatelů nebo ke sledování výkonu.Used to track user behavior or to monitor performance.
GetMetric Nulové a multidimenzionální metriky, centrálně konfigurovaná agregace, pouze C#.Zero and multi-dimensional metrics, centrally configured aggregation, C# only.
TrackMetric Měření výkonu, jako jsou například délky front, které nesouvisí s konkrétními událostmi.Performance measurements such as queue lengths not related to specific events.
TrackException Protokolování výjimek pro diagnostiku.Logging exceptions for diagnosis. Sledovat, kde se vyskytují ve vztahu k ostatním událostem a prozkoumávat trasování zásobníku.Trace where they occur in relation to other events and examine stack traces.
TrackRequest Protokolování četnosti a doby trvání požadavků serveru pro analýzu výkonu.Logging the frequency and duration of server requests for performance analysis.
TrackTrace Zprávy protokolu diagnostiky prostředků.Resource Diagnostic log messages. Můžete také zachytit protokoly třetích stran.You can also capture third-party logs.
TrackDependency Protokolování doby trvání a frekvence volání externích komponent, na kterých závisí vaše aplikace.Logging the duration and frequency of calls to external components that your app depends on.

K většině těchto volání telemetrie můžete připojit vlastnosti a metriky .You can attach properties and metrics to most of these telemetry calls.

Než začneteBefore you start

Pokud ještě nemáte odkaz na Application Insights SDK, postupujte takto:If you don't have a reference on Application Insights SDK yet:

Získat instanci TelemetryClientGet a TelemetryClient instance

Získat instanci TelemetryClient (kromě v jazyce JavaScript na webových stránkách):Get an instance of TelemetryClient (except in JavaScript in webpages):

Pro aplikace ASP.NET Core a non http/Worker pro .NET/.NET Core se doporučuje získat instanci TelemetryClient z kontejneru injektáže vkládání závislostí, jak je vysvětleno v příslušné dokumentaci.For ASP.NET Core apps and Non HTTP/Worker for .NET/.NET Core apps, it is recommended to get an instance of TelemetryClient from the dependency injection container as explained in their respective documentation.

Pokud používáte AzureFunctions v2 + nebo Azure WebJobs v3 +, postupujte podle tohoto dokumentu:https://docs.microsoft.com/azure/azure-functions/functions-monitoring#version-2x-and-higherIf you use AzureFunctions v2+ or Azure WebJobs v3+ - follow this document: https://docs.microsoft.com/azure/azure-functions/functions-monitoring#version-2x-and-higher

C#C#

private TelemetryClient telemetry = new TelemetryClient();

Pro každého, kdo vidí tuto metodu, jsou zastaralé zprávy, další podrobnosti najdete v Microsoft/ApplicationInsights-dotnet # 1152 .For anyone seeing this method is obsolete messages please visit microsoft/ApplicationInsights-dotnet#1152 for further details.

Visual BasicVisual Basic

Private Dim telemetry As New TelemetryClient

JavaJava

private TelemetryClient telemetry = new TelemetryClient();

Node.jsNode.js

var telemetry = applicationInsights.defaultClient;

TelemetryClient je bezpečný pro přístup z více vláken.TelemetryClient is thread-safe.

Pro projekty ASP.NET a Java jsou příchozí požadavky HTTP automaticky zachyceny.For ASP.NET and Java projects, incoming HTTP Requests are automatically captured. Možná budete chtít vytvořit další instance TelemetryClient pro jiný modul aplikace.You might want to create additional instances of TelemetryClient for other module of your app. Například můžete mít jednu instanci TelemetryClient ve vaší třídě middleware pro hlášení událostí obchodní logiky.For instance, you may have one TelemetryClient instance in your middleware class to report business logic events. Můžete nastavit vlastnosti, jako je například UserId a DeviceId, a identifikovat počítač.You can set properties such as UserId and DeviceId to identify the machine. Tyto informace jsou připojeny ke všem událostem, které instance odesílá.This information is attached to all events that the instance sends.

C#C#

TelemetryClient.Context.User.Id = "...";
TelemetryClient.Context.Device.Id = "...";

JavaJava

telemetry.getContext().getUser().setId("...");
telemetry.getContext().getDevice().setId("...");

V Node.js projekty můžete použít new applicationInsights.TelemetryClient(instrumentationKey?) k vytvoření nové instance, ale toto nastavení se doporučuje jenom pro scénáře, které vyžadují izolovanou konfiguraci z typu Singleton defaultClient .In Node.js projects, you can use new applicationInsights.TelemetryClient(instrumentationKey?) to create a new instance, but this is recommended only for scenarios that require isolated configuration from the singleton defaultClient.

TrackEventTrackEvent

V Application Insights vlastní událost je datový bod, který lze zobrazit v Průzkumník metrik jako agregovaný počet a v diagnostickém vyhledávání jako jednotlivé výskyty.In Application Insights, a custom event is a data point that you can display in Metrics Explorer as an aggregated count, and in Diagnostic Search as individual occurrences. (Nesouvisí s událostmi MVC nebo jinými rozhraními.)(It isn't related to MVC or other framework "events.")

Vložením TrackEvent volání do kódu můžete spočítat různé události.Insert TrackEvent calls in your code to count various events. Jak často uživatelé vyberou konkrétní funkci, jak často dosahují konkrétního cíle, nebo jak často provádějí konkrétní typy chyb.How often users choose a particular feature, how often they achieve particular goals, or maybe how often they make particular types of mistakes.

Například v herní aplikaci můžete odeslat událost pokaždé, když uživatel hry vyhrává:For example, in a game app, send an event whenever a user wins the game:

JavaScriptJavaScript

appInsights.trackEvent({name:"WinGame"});

C#C#

telemetry.TrackEvent("WinGame");

Visual BasicVisual Basic

telemetry.TrackEvent("WinGame")

JavaJava

telemetry.trackEvent("WinGame");

Node.jsNode.js

telemetry.trackEvent({name: "WinGame"});

Vlastní události v analýzáchCustom events in Analytics

Telemetrii je k dispozici v customEvents tabulce v Application Insights Analytics.The telemetry is available in the customEvents table in Application Insights Analytics. Každý řádek představuje volání trackEvent(..) ve vaší aplikaci.Each row represents a call to trackEvent(..) in your app.

Pokud je vzorkování v provozu, vlastnost vlastnost ItemCount zobrazí hodnotu větší než 1.If sampling is in operation, the itemCount property shows a value greater than 1. Například vlastnost ItemCount = = 10 znamená, že u 10 volání trackEvent () proces vzorkování přenáší pouze jeden z nich.For example itemCount==10 means that of 10 calls to trackEvent(), the sampling process only transmitted one of them. Chcete-li získat správný počet vlastních událostí, měli byste proto použít kód jako customEvents | summarize sum(itemCount) .To get a correct count of custom events, you should therefore use code such as customEvents | summarize sum(itemCount).

GetMetricGetMetric

Chcete-li se dozvědět, jak efektivně použít volání getmetric () k zachycení místně předem agregovaných metrik pro aplikace .NET a .NET Core, přejděte do dokumentace ke službě getmetric .To learn how to effectively use the GetMetric() call to capture locally pre-aggregated metrics for .NET and .NET Core applications visit the GetMetric documentation.

TrackMetricTrackMetric

Poznámka

Microsoft. ApplicationInsights. TelemetryClient. TrackMetric není upřednostňovanou metodou pro odesílání metrik.Microsoft.ApplicationInsights.TelemetryClient.TrackMetric is not the preferred method for sending metrics. Metriky by měly být vždy před odesláním shrnuty v časovém období.Metrics should always be pre-aggregated across a time period before being sent. K získání objektu metriky pro přístup k předagregačním funkcím sady SDK použijte jedno z přetížení getmetric (..).Use one of the GetMetric(..) overloads to get a metric object for accessing SDK pre-aggregation capabilities. Pokud implementujete vlastní logiku před agregací, můžete k odeslání výsledných agregací použít metodu TrackMetric ().If you are implementing your own pre-aggregation logic, you can use the TrackMetric() method to send the resulting aggregates. Pokud vaše aplikace vyžaduje odeslání samostatné položky telemetrie při každé příležitosti bez agregace v čase, budete pravděpodobně mít případ použití pro telemetrii událostí. viz TelemetryClient. TrackEvent (Microsoft. ApplicationInsights. DataContracts. EventTelemetry).If your application requires sending a separate telemetry item at every occasion without aggregation across time, you likely have a use case for event telemetry; see TelemetryClient.TrackEvent (Microsoft.ApplicationInsights.DataContracts.EventTelemetry).

Application Insights mohou metriky grafů, které nejsou připojeny k určitým událostem.Application Insights can chart metrics that are not attached to particular events. Můžete například monitorovat délku fronty v pravidelných intervalech.For example, you could monitor a queue length at regular intervals. Díky metrikám jsou jednotlivá měření méně zajímavá než kolísání a trendy, takže statistické grafy jsou užitečné.With metrics, the individual measurements are of less interest than the variations and trends, and so statistical charts are useful.

Aby bylo možné odesílat metriky do Application Insights, můžete použít TrackMetric(..) rozhraní API.In order to send metrics to Application Insights, you can use the TrackMetric(..) API. Existují dva způsoby, jak odeslat metriku:There are two ways to send a metric:

  • Jedna hodnota.Single value. Pokaždé, když ve své aplikaci provedete měření, odešlete odpovídající hodnotu Application Insights.Every time you perform a measurement in your application, you send the corresponding value to Application Insights. Předpokládejme například, že máte metriku popisující počet položek v kontejneru.For example, assume that you have a metric describing the number of items in a container. Během konkrétního časového období nejprve do kontejneru vložíte tři položky a pak odeberete dvě položky.During a particular time period, you first put three items into the container and then you remove two items. Proto byste volali TrackMetric dvakrát: nejprve předání hodnoty 3 a hodnoty -2 .Accordingly, you would call TrackMetric twice: first passing the value 3 and then the value -2. Application Insights ukládá vaše jménem obě hodnoty.Application Insights stores both values on your behalf.

  • Agregovat.Aggregation. Při práci s metrikami je každé jedno měření málo důležité.When working with metrics, every single measurement is rarely of interest. Místo toho je důležité mít přehled o tom, co se stalo během konkrétního časového období.Instead a summary of what happened during a particular time period is important. Tento souhrn se nazývá agregace.Such a summary is called aggregation. Ve výše uvedeném příkladu je agregovaná celková metrika pro toto časové období 1 a počet hodnot metrik 2 .In the above example, the aggregate metric sum for that time period is 1 and the count of the metric values is 2. Při použití agregačního přístupu, vyvolejte pouze TrackMetric jednou za časové období a odešlete agregované hodnoty.When using the aggregation approach, you only invoke TrackMetric once per time period and send the aggregate values. To je doporučený postup, protože může významně snížit náklady a režii na výkon tím, že posílá méně datových bodů do Application Insights a přitom stále shromažďuje všechny relevantní informace.This is the recommended approach since it can significantly reduce the cost and performance overhead by sending fewer data points to Application Insights, while still collecting all relevant information.

PříkladyExamples

Jednotlivé hodnotySingle values

Odeslání jedné hodnoty metriky:To send a single metric value:

JavaScriptJavaScript

appInsights.trackMetric("queueLength", 42.0);

C#C#

var sample = new MetricTelemetry();
sample.Name = "metric name";
sample.Value = 42.3;
telemetryClient.TrackMetric(sample);

JavaJava

telemetry.trackMetric("queueLength", 42.0);

Node.jsNode.js

telemetry.trackMetric({name: "queueLength", value: 42.0});

Vlastní metriky v analýzáchCustom metrics in Analytics

Telemetrii je k dispozici v customMetrics tabulce v Application Insights Analytics.The telemetry is available in the customMetrics table in Application Insights Analytics. Každý řádek představuje volání trackMetric(..) ve vaší aplikaci.Each row represents a call to trackMetric(..) in your app.

  • valueSum– Toto je součet měření.valueSum - This is the sum of the measurements. Chcete-li získat střední hodnotu, rozdělte valueCount .To get the mean value, divide by valueCount.
  • valueCount– Počet měření, které byly agregovány do tohoto trackMetric(..) volání.valueCount - The number of measurements that were aggregated into this trackMetric(..) call.

Zobrazení stránekPage views

V aplikaci pro zařízení nebo webovou stránku se telemetrie zobrazení stránky ve výchozím nastavení posílá při načtení každé obrazovky nebo stránky.In a device or webpage app, page view telemetry is sent by default when each screen or page is loaded. Ale můžete změnit, aby se zobrazení stránek sledovalo v dalších nebo různých časech.But you can change that to track page views at additional or different times. Například v aplikaci, která zobrazuje karty nebo okna, může být vhodné sledovat stránku vždy, když uživatel otevře nové okno.For example, in an app that displays tabs or blades, you might want to track a page whenever the user opens a new blade.

Data uživatelů a relací se odesílají jako vlastnosti spolu se zobrazeními stránek, takže grafy uživatelů a relací budou aktivní, když se zobrazí telemetrie zobrazení stránky.User and session data is sent as properties along with page views, so the user and session charts come alive when there is page view telemetry.

Vlastní zobrazení stránkyCustom page views

JavaScriptJavaScript

appInsights.trackPageView("tab1");

C#C#

telemetry.TrackPageView("GameReviewPage");

Visual BasicVisual Basic

telemetry.TrackPageView("GameReviewPage")

JavaJava

telemetry.trackPageView("GameReviewPage");

Pokud máte v různých stránkách HTML několik karet, můžete zadat i adresu URL:If you have several tabs within different HTML pages, you can specify the URL too:

appInsights.trackPageView("tab1", "http://fabrikam.com/page1.htm");

Zobrazení časování stránkyTiming page views

Ve výchozím nastavení jsou časy hlášené jako Doba načítání zobrazení stránky měřeny od okamžiku, kdy prohlížeč požadavek odešle, dokud není volána událost načtení stránky prohlížeče.By default, the times reported as Page view load time are measured from when the browser sends the request, until the browser's page load event is called.

Místo toho můžete použít tyto kroky:Instead, you can either:

  • Nastavte explicitní dobu trvání ve volání trackPageView : appInsights.trackPageView("tab1", null, null, null, durationInMilliseconds); .Set an explicit duration in the trackPageView call: appInsights.trackPageView("tab1", null, null, null, durationInMilliseconds);.
  • Použijte zobrazení na stránce s časováním volání startTrackPage a stopTrackPage .Use the page view timing calls startTrackPage and stopTrackPage.

JavaScriptJavaScript

// To start timing a page:
appInsights.startTrackPage("Page1");

...

// To stop timing and log the page:
appInsights.stopTrackPage("Page1", url, properties, measurements);

Název, který použijete jako první parametr, přidruží volání Start a stop.The name that you use as the first parameter associates the start and stop calls. Výchozí hodnota je název aktuální stránky.It defaults to the current page name.

Výsledná trvání načtení stránky zobrazená v Průzkumník metrik jsou odvozena z intervalu mezi voláními spuštění a zastavení.The resulting page load durations displayed in Metrics Explorer are derived from the interval between the start and stop calls. To je až na vás, jaký interval ve skutečnosti vydáte.It's up to you what interval you actually time.

Telemetrie stránky v analýzáchPage telemetry in Analytics

V analytických dvou tabulkách se zobrazují data z operací prohlížeče:In Analytics two tables show data from browser operations:

  • pageViewsTabulka obsahuje data o adrese URL a názvu stránky.The pageViews table contains data about the URL and page title
  • browserTimingsTabulka obsahuje data o výkonu klienta, například čas potřebný ke zpracování příchozích dat.The browserTimings table contains data about client performance, such as the time taken to process the incoming data

Pokud chcete zjistit, jak dlouho bude prohlížeč zpracovávat různé stránky, postupujte takto:To find how long the browser takes to process different pages:

browserTimings
| summarize avg(networkDuration), avg(processingDuration), avg(totalDuration) by name

Pro zjištění oblíbených různých prohlížečů:To discover the popularities of different browsers:

pageViews
| summarize count() by client_Browser

Chcete-li přidružit zobrazení stránky voláním AJAX, připojte se k závislostem:To associate page views to AJAX calls, join with dependencies:

pageViews
| join (dependencies) on operation_Id 

TrackRequestTrackRequest

Sada SDK serveru používá TrackRequest k protokolování požadavků HTTP.The server SDK uses TrackRequest to log HTTP requests.

Můžete ji také zavolat sami, pokud chcete simulovat žádosti v kontextu, ve kterém nemáte spuštěný modul webové služby.You can also call it yourself if you want to simulate requests in a context where you don't have the web service module running.

Doporučený způsob odeslání telemetrie požadavků je však, že požadavek funguje jako kontext operace.However, the recommended way to send request telemetry is where the request acts as an operation context.

Kontext operaceOperation context

Můžete sladit položky telemetrie dohromady jejich přidružením k kontextu operace.You can correlate telemetry items together by associating them with operation context. Standardní modul pro sledování požadavků provádí tyto výjimky a další události, které jsou odeslány během zpracování požadavku HTTP.The standard request-tracking module does this for exceptions and other events that are sent while an HTTP request is being processed. V části vyhledávání a Analýzamůžete snadno najít jakékoli události přidružené k žádosti pomocí jejího ID operace.In Search and Analytics, you can easily find any events associated with the request using its operation ID.

Další informace o korelaci najdete v tématu korelace telemetrie v Application Insights .See Telemetry correlation in Application Insights for more details on correlation.

Při ručním sledování telemetrie je nejjednodušší způsob, jak zajistit korelace telemetrie pomocí tohoto modelu:When tracking telemetry manually, the easiest way to ensure telemetry correlation by using this pattern:

C#C#

// Establish an operation context and associated telemetry item:
using (var operation = telemetryClient.StartOperation<RequestTelemetry>("operationName"))
{
    // Telemetry sent in here will use the same operation ID.
    ...
    telemetryClient.TrackTrace(...); // or other Track* calls
    ...

    // Set properties of containing telemetry item--for example:
    operation.Telemetry.ResponseCode = "200";

    // Optional: explicitly send telemetry item:
    telemetryClient.StopOperation(operation);

} // When operation is disposed, telemetry item is sent.

Spolu s nastavením kontextu operace StartOperation vytvoří položku telemetrie typu, který zadáte.Along with setting an operation context, StartOperation creates a telemetry item of the type that you specify. Odesílá položku telemetrie při uvolnění operace, nebo pokud explicitně voláte StopOperation .It sends the telemetry item when you dispose the operation, or if you explicitly call StopOperation. Pokud použijete RequestTelemetry jako typ telemetrie, jeho doba trvání je nastavená na časový interval mezi začátkem a zastavením.If you use RequestTelemetry as the telemetry type, its duration is set to the timed interval between start and stop.

Položky telemetrie hlášené v rámci oboru operace se stanou "podřízenými" takové operace.Telemetry items reported within a scope of operation become 'children' of such operation. Kontexty operace můžou být vnořené.Operation contexts could be nested.

V části Hledat se k vytvoření seznamu souvisejících položek používá kontext operace:In Search, the operation context is used to create the Related Items list:

Související položky

Další informace o sledování vlastních operací najdete v tématu sledování vlastních operací pomocí Application Insights .NET SDK .See Track custom operations with Application Insights .NET SDK for more information on custom operations tracking.

Požadavky v analýzáchRequests in Analytics

V Application Insights Analyticsse žádosti zobrazují v requests tabulce.In Application Insights Analytics, requests show up in the requests table.

Pokud je vzorkování v provozu, vlastnost vlastnost ItemCount zobrazí hodnotu větší než 1.If sampling is in operation, the itemCount property will show a value greater than 1. Například vlastnost ItemCount = = 10 znamená, že u 10 volání trackRequest () proces vzorkování přenáší pouze jeden z nich.For example itemCount==10 means that of 10 calls to trackRequest(), the sampling process only transmitted one of them. Chcete-li získat správný počet požadavků a průměrnou dobu, segmentované podle názvů požadavků, použijte následující kód:To get a correct count of requests and average duration segmented by request names, use code such as:

requests
| summarize count = sum(itemCount), avgduration = avg(duration) by name

TrackExceptionTrackException

Odeslat výjimky do Application Insights:Send exceptions to Application Insights:

Sestavy zahrnují trasování zásobníku.The reports include the stack traces.

C#C#

try
{
    ...
}
catch (Exception ex)
{
    telemetry.TrackException(ex);
}

JavaJava

try {
    ...
} catch (Exception ex) {
    telemetry.trackException(ex);
}

JavaScriptJavaScript

try
{
    ...
}
catch (ex)
{
    appInsights.trackException(ex);
}

Node.jsNode.js

try
{
    ...
}
catch (ex)
{
    telemetry.trackException({exception: ex});
}

Sady SDK zachycují mnoho výjimek automaticky, takže nemusíte vždy volat TrackException explicitně.The SDKs catch many exceptions automatically, so you don't always have to call TrackException explicitly.

({
    instrumentationKey: "your key",
    disableExceptionTracking: true
})

Výjimky v analýzáchExceptions in Analytics

V Application Insights Analyticsse výjimky zobrazují v exceptions tabulce.In Application Insights Analytics, exceptions show up in the exceptions table.

Pokud je vzorkování v provozu, itemCount vlastnost zobrazuje hodnotu větší než 1.If sampling is in operation, the itemCount property shows a value greater than 1. Například vlastnost ItemCount = = 10 znamená, že u 10 volání trackException () proces vzorkování přenáší pouze jeden z nich.For example itemCount==10 means that of 10 calls to trackException(), the sampling process only transmitted one of them. Chcete-li získat správný počet výjimek segmenticky podle typu výjimky, použijte kód jako:To get a correct count of exceptions segmented by type of exception, use code such as:

exceptions
| summarize sum(itemCount) by type

Většina důležitých informací o zásobníku se už extrahuje do samostatných proměnných, ale pokud chcete získat další informace, můžete si ji stáhnout ze své details struktury.Most of the important stack information is already extracted into separate variables, but you can pull apart the details structure to get more. Vzhledem k tomu, že je tato struktura dynamická, je vhodné přetypovat výsledek na očekávaný typ.Since this structure is dynamic, you should cast the result to the type you expect. Příklad:For example:

exceptions
| extend method2 = tostring(details[0].parsedStack[1].method)

K přidružení výjimek ke svým souvisejícím žádostem použijte spojení:To associate exceptions with their related requests, use a join:

exceptions
| join (requests) on operation_Id

TrackTraceTrackTrace

Pomocí TrackTrace můžete diagnostikovat problémy odesláním "popisu cesty" do Application Insights.Use TrackTrace to help diagnose problems by sending a "breadcrumb trail" to Application Insights. Můžete odeslat bloky diagnostických dat a zkontrolovat je v diagnostickém vyhledávání.You can send chunks of diagnostic data and inspect them in Diagnostic Search.

V adaptérech protokolů .NET použijte toto rozhraní API k posílání protokolů třetích stran na portál.In .NET Log adapters use this API to send third-party logs to the portal.

V jazyce Java pro standardní protokolovací nástroje, jako je Log4J, Logback k odesílání protokolů třetích stran na portál použít Application Insights Log4J nebo Logback.In Java for Standard loggers like Log4J, Logback use Application Insights Log4j or Logback Appenders to send third-party logs to the portal.

C#C#

telemetry.TrackTrace(message, SeverityLevel.Warning, properties);

JavaJava

telemetry.trackTrace(message, SeverityLevel.Warning, properties);

Node.jsNode.js

telemetry.trackTrace({
    message: message,
    severity: applicationInsights.Contracts.SeverityLevel.Warning,
    properties: properties
});

JavaScript na straně klienta nebo prohlížečeClient/Browser-side JavaScript

trackTrace(message: string, properties?: {[string]:string}, severityLevel?: SeverityLevel)

Protokoluje diagnostickou událost, jako je například zadání nebo ukončení metody.Log a diagnostic event such as entering or leaving a method.

ParametrParameter PopisDescription
message Diagnostická data.Diagnostic data. Může být mnohem delší než název.Can be much longer than a name.
properties Mapa řetězce na řetězec: další data sloužící k filtrování výjimek na portálu.Map of string to string: Additional data used to filter exceptions in the portal. Výchozí hodnota je prázdná.Defaults to empty.
severityLevel Podporované hodnoty: SeverityLevel. TSSupported values: SeverityLevel.ts

Můžete hledat obsah zprávy, ale (na rozdíl od hodnot vlastností) nemůžete na něm filtrovat.You can search on message content, but (unlike property values) you can't filter on it.

Omezení velikosti message je mnohem vyšší než omezení vlastností.The size limit on message is much higher than the limit on properties. Výhodou TrackTrace je, že do zprávy můžete ukládat poměrně dlouhá data.An advantage of TrackTrace is that you can put relatively long data in the message. Můžete například zakódovat data POST.For example, you can encode POST data there.

Kromě toho můžete do zprávy přidat úroveň závažnosti.In addition, you can add a severity level to your message. A podobně jako u jiné telemetrie můžete přidat hodnoty vlastností, které vám pomohou filtrovat nebo vyhledat různé sady trasování.And, like other telemetry, you can add property values to help you filter or search for different sets of traces. Příklad:For example:

C#C#

var telemetry = new Microsoft.ApplicationInsights.TelemetryClient();
telemetry.TrackTrace("Slow database response",
                SeverityLevel.Warning,
                new Dictionary<string,string> { {"database", db.ID} });

JavaJava

Map<String, Integer> properties = new HashMap<>();
properties.put("Database", db.ID);
telemetry.trackTrace("Slow Database response", SeverityLevel.Warning, properties);

V hledánímůžete snadno odfiltrovat všechny zprávy určité úrovně závažnosti, které se vztahují k určité databázi.In Search, you can then easily filter out all the messages of a particular severity level that relate to a particular database.

Trasování v analýzáchTraces in Analytics

V Application Insights Analyticsse v tabulce zobrazí volání TrackTrace traces .In Application Insights Analytics, calls to TrackTrace show up in the traces table.

Pokud je vzorkování v provozu, vlastnost vlastnost ItemCount zobrazí hodnotu větší než 1.If sampling is in operation, the itemCount property shows a value greater than 1. Například vlastnost ItemCount = = 10 znamená, že 10 volání do trackTrace() , proces vzorkování přenáší pouze jeden z nich.For example itemCount==10 means that of 10 calls to trackTrace(), the sampling process only transmitted one of them. Chcete-li získat správný počet volání trasování, měli byste použít kód, například traces | summarize sum(itemCount) .To get a correct count of trace calls, you should use therefore code such as traces | summarize sum(itemCount).

TrackDependencyTrackDependency

Použijte volání TrackDependency ke sledování doby odezvy a míry úspěšnosti volání do externí části kódu.Use the TrackDependency call to track the response times and success rates of calls to an external piece of code. Výsledky se zobrazí v grafech závislostí na portálu.The results appear in the dependency charts in the portal. Následující fragment kódu je nutné přidat všude, kde je provedeno volání závislosti.The code snippet below needs to be added wherever a dependency call is made.

C#C#

var success = false;
var startTime = DateTime.UtcNow;
var timer = System.Diagnostics.Stopwatch.StartNew();
try
{
    success = dependency.Call();
}
catch(Exception ex) 
{
    success = false;
    telemetry.TrackException(ex);
    throw new Exception("Operation went wrong", ex);
}
finally
{
    timer.Stop();
    telemetry.TrackDependency("DependencyType", "myDependency", "myCall", startTime, timer.Elapsed, success);
}

JavaJava

boolean success = false;
Instant startTime = Instant.now();
try {
    success = dependency.call();
}
finally {
    Instant endTime = Instant.now();
    Duration delta = Duration.between(startTime, endTime);
    RemoteDependencyTelemetry dependencyTelemetry = new RemoteDependencyTelemetry("My Dependency", "myCall", delta, success);
    RemoteDependencyTelemetry.setTimeStamp(startTime);
    RemoteDependencyTelemetry.trackDependency(dependencyTelemetry);
}

Node.jsNode.js

var success = false;
var startTime = new Date().getTime();
try
{
    success = dependency.Call();
}
finally
{
    var elapsed = new Date() - startTime;
    telemetry.trackDependency({
        dependencyTypeName: "myDependency",
        name: "myCall",
        duration: elapsed,
        success: success
    });
}

Pamatujte, že serverové sady SDK obsahují modul závislosti , který zjišťuje a sleduje určitá volání závislosti automaticky – například pro databáze a rozhraní REST API.Remember that the server SDKs include a dependency module that discovers and tracks certain dependency calls automatically--for example, to databases and REST APIs. Abyste mohli modul pracovat, musíte na svém serveru nainstalovat agenta.You have to install an agent on your server to make the module work.

V jazyce Java lze určitá volání závislostí automaticky sledovat pomocí agenta Java.In Java, certain dependency calls can be automatically tracked using Java Agent.

Toto volání použijete, pokud chcete sledovat volání, která automatizované sledování nezachytává, nebo pokud nechcete agenta nainstalovat.You use this call if you want to track calls that the automated tracking doesn't catch, or if you don't want to install the agent.

Chcete-li vypnout standardní modul Sledování závislosti v jazyce C#, upravte ApplicationInsights.config a odstraňte odkaz na DependencyCollector.DependencyTrackingTelemetryModule .To turn off the standard dependency-tracking module in C#, edit ApplicationInsights.config and delete the reference to DependencyCollector.DependencyTrackingTelemetryModule. V jazyce Java neinstalujte agenta Java, pokud nechcete automaticky shromažďovat standardní závislosti.In Java, please do not install java agent if you do not want to collect standard dependencies automatically.

Závislosti v analýzáchDependencies in Analytics

V Application Insights Analyticsse v tabulce zobrazí volání trackDependency dependencies .In Application Insights Analytics, trackDependency calls show up in the dependencies table.

Pokud je vzorkování v provozu, vlastnost vlastnost ItemCount zobrazí hodnotu větší než 1.If sampling is in operation, the itemCount property shows a value greater than 1. Například vlastnost ItemCount = = 10 znamená, že u 10 volání trackDependency () proces vzorkování přenáší pouze jeden z nich.For example itemCount==10 means that of 10 calls to trackDependency(), the sampling process only transmitted one of them. Chcete-li získat správný počet závislostí segmentované cílovou komponentou, použijte kód jako:To get a correct count of dependencies segmented by target component, use code such as:

dependencies
| summarize sum(itemCount) by target

K přidružení závislostí ke svým souvisejícím žádostem použijte spojení:To associate dependencies with their related requests, use a join:

dependencies
| join (requests) on operation_Id

Vyprazdňování datFlushing data

V normálním případě SDK odesílá data v pevných intervalech (obvykle 30 sekund) nebo vždy, když je vyrovnávací paměť plná (obvykle 500 položek).Normally, the SDK sends data at fixed intervals (typically 30 secs) or whenever buffer is full (typically 500 items). V některých případech ale možná budete chtít vyprázdnit vyrovnávací paměť – například pokud používáte sadu SDK v aplikaci, která se vypne.However, in some cases, you might want to flush the buffer--for example, if you are using the SDK in an application that shuts down.

C#C#

telemetry.Flush();
// Allow some time for flushing before shutdown.
System.Threading.Thread.Sleep(5000);

JavaJava

telemetry.flush();
//Allow some time for flushing before shutting down
Thread.sleep(5000);

Node.jsNode.js

telemetry.flush();

Funkce je asynchronní pro kanál telemetrie serveru.The function is asynchronous for the server telemetry channel.

V ideálním případě by měla být metoda flush () použita v aktivity vypnutí aplikace.Ideally, flush() method should be used in the shutdown activity of the Application.

Skupina Authenticated UsersAuthenticated users

Ve webové aplikaci jsou uživatelé (ve výchozím nastavení) identifikováni pomocí souborů cookie.In a web app, users are (by default) identified by cookies. Uživatel se může při přístupu k vaší aplikaci z jiného počítače nebo prohlížeče počítat více než jednou, nebo pokud odstraní soubory cookie.A user might be counted more than once if they access your app from a different machine or browser, or if they delete cookies.

Pokud se uživatelé přihlásí do vaší aplikace, můžete získat přesnější počet nastavením ID ověřeného uživatele v kódu prohlížeče:If users sign in to your app, you can get a more accurate count by setting the authenticated user ID in the browser code:

JavaScriptJavaScript

// Called when my app has identified the user.
function Authenticated(signInId) {
    var validatedId = signInId.replace(/[,;=| ]+/g, "_");
    appInsights.setAuthenticatedUserContext(validatedId);
    ...
}

V aplikaci ASP.NET Web MVC například:In an ASP.NET web MVC application, for example:

RazorRazor

@if (Request.IsAuthenticated)
{
    <script>
        appInsights.setAuthenticatedUserContext("@User.Identity.Name
            .Replace("\\", "\\\\")"
            .replace(/[,;=| ]+/g, "_"));
    </script>
}

Není nutné používat vlastní přihlašovací jméno uživatele.It isn't necessary to use the user's actual sign-in name. Musí se jednat o ID, které je pro daného uživatele jedinečné.It only has to be an ID that is unique to that user. Nesmí obsahovat mezery ani žádné znaky ,;=| .It must not include spaces or any of the characters ,;=|.

ID uživatele je také nastaveno v souboru cookie relace a odesláno na server.The user ID is also set in a session cookie and sent to the server. Pokud je nainstalovaná sada SDK serveru, ověřený identifikátor uživatele se odešle jako součást vlastností kontextu telemetrie klienta i serveru.If the server SDK is installed, the authenticated user ID is sent as part of the context properties of both client and server telemetry. Pak ho můžete filtrovat a prohledávat.You can then filter and search on it.

Pokud vaše aplikace seskupí uživatele na účty, můžete také předat identifikátor účtu (se stejnými omezeními znaků).If your app groups users into accounts, you can also pass an identifier for the account (with the same character restrictions).

appInsights.setAuthenticatedUserContext(validatedId, accountId);

V Průzkumník metrikmůžete vytvořit graf, který počítá uživatele, ověřenéa uživatelské účty.In Metrics Explorer, you can create a chart that counts Users, Authenticated, and User accounts.

Můžete také Vyhledat body dat klienta s konkrétními uživatelskými jmény a účty.You can also search for client data points with specific user names and accounts.

Filtrování, vyhledávání a segmentace dat pomocí vlastnostíFiltering, searching, and segmenting your data by using properties

Můžete připojit vlastnosti a měření k událostem (a také k metrikám, zobrazením stránky, výjimkám a dalším datům telemetrie).You can attach properties and measurements to your events (and also to metrics, page views, exceptions, and other telemetry data).

Vlastnosti jsou řetězcové hodnoty, které můžete použít k filtrování telemetrie v sestavách využití.Properties are string values that you can use to filter your telemetry in the usage reports. Pokud například vaše aplikace nabízí několik her, můžete k jednotlivým událostem připojit název hry, abyste viděli, které hry jsou populární.For example, if your app provides several games, you can attach the name of the game to each event so that you can see which games are more popular.

Velikost řetězce je 8192.There's a limit of 8192 on the string length. (Pokud chcete odesílat velké bloky dat, použijte parametr zprávy TrackTrace.)(If you want to send large chunks of data, use the message parameter of TrackTrace.)

Metriky jsou číselné hodnoty, které je možné znázornit graficky.Metrics are numeric values that can be presented graphically. Můžete například chtít zjistit, jestli se v hodnoceních, které hráčů dosahuje, postupný nárůst.For example, you might want to see if there's a gradual increase in the scores that your gamers achieve. Grafy je možné rozdělit pomocí vlastností, které se odesílají s událostí, takže můžete získat samostatné nebo skládané grafy pro různé hry.The graphs can be segmented by the properties that are sent with the event, so that you can get separate or stacked graphs for different games.

Aby se hodnoty metriky správně zobrazily, měly by být větší nebo rovny 0.For metric values to be correctly displayed, they should be greater than or equal to 0.

Existují určitá omezení počtu vlastností, hodnot vlastností a metrik , které můžete použít.There are some limits on the number of properties, property values, and metrics that you can use.

JavaScriptJavaScript

appInsights.trackEvent
    ("WinGame",
        // String properties:
        {Game: currentGame.name, Difficulty: currentGame.difficulty},
        // Numeric metrics:
        {Score: currentGame.score, Opponents: currentGame.opponentCount}
        );

appInsights.trackPageView
    ("page name", "http://fabrikam.com/pageurl.html",
        // String properties:
        {Game: currentGame.name, Difficulty: currentGame.difficulty},
        // Numeric metrics:
        {Score: currentGame.score, Opponents: currentGame.opponentCount}
        );

C#C#

// Set up some properties and metrics:
var properties = new Dictionary <string, string>
    {{"game", currentGame.Name}, {"difficulty", currentGame.Difficulty}};
var metrics = new Dictionary <string, double>
    {{"Score", currentGame.Score}, {"Opponents", currentGame.OpponentCount}};

// Send the event:
telemetry.TrackEvent("WinGame", properties, metrics);

Node.jsNode.js

// Set up some properties and metrics:
var properties = {"game": currentGame.Name, "difficulty": currentGame.Difficulty};
var metrics = {"Score": currentGame.Score, "Opponents": currentGame.OpponentCount};

// Send the event:
telemetry.trackEvent({name: "WinGame", properties: properties, measurements: metrics});

Visual BasicVisual Basic

' Set up some properties:
Dim properties = New Dictionary (Of String, String)
properties.Add("game", currentGame.Name)
properties.Add("difficulty", currentGame.Difficulty)

Dim metrics = New Dictionary (Of String, Double)
metrics.Add("Score", currentGame.Score)
metrics.Add("Opponents", currentGame.OpponentCount)

' Send the event:
telemetry.TrackEvent("WinGame", properties, metrics)

JavaJava

Map<String, String> properties = new HashMap<String, String>();
properties.put("game", currentGame.getName());
properties.put("difficulty", currentGame.getDifficulty());

Map<String, Double> metrics = new HashMap<String, Double>();
metrics.put("Score", currentGame.getScore());
metrics.put("Opponents", currentGame.getOpponentCount());

telemetry.trackEvent("WinGame", properties, metrics);

Poznámka

Je třeba dbát na to, abyste do vlastností nehlásili osobně identifikovatelné osobní údaje.Take care not to log personally identifiable information in properties.

Alternativní způsob, jak nastavit vlastnosti a metrikyAlternative way to set properties and metrics

Pokud je to pohodlnější, můžete shromáždit parametry události v samostatném objektu:If it's more convenient, you can collect the parameters of an event in a separate object:

var event = new EventTelemetry();

event.Name = "WinGame";
event.Metrics["processingTime"] = stopwatch.Elapsed.TotalMilliseconds;
event.Properties["game"] = currentGame.Name;
event.Properties["difficulty"] = currentGame.Difficulty;
event.Metrics["Score"] = currentGame.Score;
event.Metrics["Opponents"] = currentGame.Opponents.Length;

telemetry.TrackEvent(event);

Upozornění

Nepoužívejte znovu stejnou instanci položky telemetrie ( event v tomto příkladu), aby bylo volání metody Track * () několikrát voláno.Don't reuse the same telemetry item instance (event in this example) to call Track*() multiple times. To může způsobit odeslání telemetrie s nesprávnou konfigurací.This may cause telemetry to be sent with incorrect configuration.

Vlastní měření a vlastnosti v analýzáchCustom measurements and properties in Analytics

V rámci analýzyse vlastní metriky a vlastnosti zobrazují v customMeasurements customDimensions atributech a každého záznamu telemetrie.In Analytics, custom metrics and properties show in the customMeasurements and customDimensions attributes of each telemetry record.

Pokud jste například přidali vlastnost s názvem "Game" do telemetrie žádosti, tento dotaz počítá výskyty různých hodnot "Game" a zobrazí průměr vlastní metriky "skóre":For example, if you have added a property named "game" to your request telemetry, this query counts the occurrences of different values of "game", and show the average of the custom metric "score":

requests
| summarize sum(itemCount), avg(todouble(customMeasurements.score)) by tostring(customDimensions.game)

Všimněte si, že:Notice that:

  • Když extrahujete hodnotu z formátu JSON customDimensions nebo customMeasurements, má dynamický typ, takže je nutné ji přetypovat tostring nebo todouble .When you extract a value from the customDimensions or customMeasurements JSON, it has dynamic type, and so you must cast it tostring or todouble.
  • K zohlednění možnosti vzorkováníbyste měli použít sum(itemCount) , ne count() .To take account of the possibility of sampling, you should use sum(itemCount), not count().

Události časováníTiming events

V některých případech je třeba, aby bylo možné graf, jak dlouho trvá provedení akce.Sometimes you want to chart how long it takes to perform an action. Můžete například chtít zjistit, jak dlouho uživatelé berou v úvahu volby ve hře.For example, you might want to know how long users take to consider choices in a game. Pro tuto možnost lze použít parametr měření.You can use the measurement parameter for this.

C#C#

var stopwatch = System.Diagnostics.Stopwatch.StartNew();

// ... perform the timed action ...

stopwatch.Stop();

var metrics = new Dictionary <string, double>
    {{"processingTime", stopwatch.Elapsed.TotalMilliseconds}};

// Set up some properties:
var properties = new Dictionary <string, string>
    {{"signalSource", currentSignalSource.Name}};

// Send the event:
telemetry.TrackEvent("SignalProcessed", properties, metrics);

JavaJava

long startTime = System.currentTimeMillis();

// Perform timed action

long endTime = System.currentTimeMillis();
Map<String, Double> metrics = new HashMap<>();
metrics.put("ProcessingTime", (double)endTime-startTime);

// Setup some properties
Map<String, String> properties = new HashMap<>();
properties.put("signalSource", currentSignalSource.getName());

// Send the event
telemetry.trackEvent("SignalProcessed", properties, metrics);

Výchozí vlastnosti vlastní telemetrieDefault properties for custom telemetry

Pokud chcete nastavit výchozí hodnoty vlastností pro některé vlastní události, které zapíšete, můžete je nastavit v instanci TelemetryClient.If you want to set default property values for some of the custom events that you write, you can set them in a TelemetryClient instance. Jsou připojeny ke každé položce telemetrie, která je odeslána z tohoto klienta.They are attached to every telemetry item that's sent from that client.

C#C#

using Microsoft.ApplicationInsights.DataContracts;

var gameTelemetry = new TelemetryClient();
gameTelemetry.Context.GlobalProperties["Game"] = currentGame.Name;
// Now all telemetry will automatically be sent with the context property:
gameTelemetry.TrackEvent("WinGame");

Visual BasicVisual Basic

Dim gameTelemetry = New TelemetryClient()
gameTelemetry.Context.GlobalProperties("Game") = currentGame.Name
' Now all telemetry will automatically be sent with the context property:
gameTelemetry.TrackEvent("WinGame")

JavaJava

import com.microsoft.applicationinsights.TelemetryClient;
import com.microsoft.applicationinsights.TelemetryContext;
...


TelemetryClient gameTelemetry = new TelemetryClient();
TelemetryContext context = gameTelemetry.getContext();
context.getProperties().put("Game", currentGame.Name);

gameTelemetry.TrackEvent("WinGame");

Node.jsNode.js

var gameTelemetry = new applicationInsights.TelemetryClient();
gameTelemetry.commonProperties["Game"] = currentGame.Name;

gameTelemetry.TrackEvent({name: "WinGame"});

Jednotlivá volání telemetrie můžou v jejich slovníkech vlastností přepsat výchozí hodnoty.Individual telemetry calls can override the default values in their property dictionaries.

Pro webové klienty v jazyce JavaScriptpoužijte Inicializátory telemetrie JavaScript.For JavaScript web clients, use JavaScript telemetry initializers.

Chcete-li přidat vlastnosti do všechny telemetrie, včetně dat ze standardních modulů kolekcí , ITelemetryInitializer implementujte .To add properties to all telemetry, including the data from standard collection modules, implement ITelemetryInitializer.

Vzorkování, filtrování a zpracování telemetrieSampling, filtering, and processing telemetry

Můžete napsat kód pro zpracování telemetrie před jejich odesláním ze sady SDK.You can write code to process your telemetry before it's sent from the SDK. Zpracování zahrnuje data odesílaná ze standardních modulů telemetrie, jako je kolekce žádostí HTTP a kolekce závislostí.The processing includes data that's sent from the standard telemetry modules, such as HTTP request collection and dependency collection.

Přidání vlastností do telemetrie implementací ITelemetryInitializer .Add properties to telemetry by implementing ITelemetryInitializer. Můžete například přidat čísla verzí nebo hodnoty, které se počítají z jiných vlastností.For example, you can add version numbers or values that are calculated from other properties.

Filtrování může před odesláním ze sady SDK změnit nebo zahodit telemetrii implementací ITelemetryProcessor .Filtering can modify or discard telemetry before it's sent from the SDK by implementing ITelemetryProcessor. Můžete řídit, co se odesílá nebo zahodí, ale budete mít k dispozici vliv na vaše metriky.You control what is sent or discarded, but you have to account for the effect on your metrics. V závislosti na tom, jak položky zahodíte, může být ztracena možnost navigace mezi souvisejícími položkami.Depending on how you discard items, you might lose the ability to navigate between related items.

Vzorkování je zabalené řešení, které snižuje objem dat odesílaných z vaší aplikace na portál.Sampling is a packaged solution to reduce the volume of data that's sent from your app to the portal. V takovém případě nemá vliv na zobrazené metriky.It does so without affecting the displayed metrics. A to i bez ovlivnění vaší schopnosti diagnostikovat problémy pomocí navigace mezi souvisejícími položkami, jako jsou výjimky, požadavky a zobrazení stránek.And it does so without affecting your ability to diagnose problems by navigating between related items such as exceptions, requests, and page views.

Další informace.Learn more.

Zakázání telemetrieDisabling telemetry

Chcete-li dynamicky zastavit a spustit shromažďování a přenos telemetrie:To dynamically stop and start the collection and transmission of telemetry:

C#C#

using  Microsoft.ApplicationInsights.Extensibility;

TelemetryConfiguration.Active.DisableTelemetry = true;

JavaJava

telemetry.getConfiguration().setTrackingDisabled(true);

Chcete-li zakázat vybrané standardní kolekce, například čítače výkonu, požadavky HTTP nebo závislosti, odstraňte nebo Odkomentujte příslušné řádky v ApplicationInsights.config. To můžete udělat například v případě, že chcete odesílat vlastní TrackRequest data.To disable selected standard collectors--for example, performance counters, HTTP requests, or dependencies--delete or comment out the relevant lines in ApplicationInsights.config. You can do this, for example, if you want to send your own TrackRequest data.

Node.jsNode.js

telemetry.config.disableAppInsights = true;

Chcete-li zakázat vybrané standardní kolekce, například čítače výkonu, požadavky HTTP nebo závislosti – v čase inicializace, řetězení metod konfigurace do inicializačního kódu sady SDK:To disable selected standard collectors--for example, performance counters, HTTP requests, or dependencies--at initialization time, chain configuration methods to your SDK initialization code:

applicationInsights.setup()
    .setAutoCollectRequests(false)
    .setAutoCollectPerformance(false)
    .setAutoCollectExceptions(false)
    .setAutoCollectDependencies(false)
    .setAutoCollectConsole(false)
    .start();

Chcete-li zakázat tyto sběrače po inicializaci, použijte objekt konfigurace:applicationInsights.Configuration.setAutoCollectRequests(false)To disable these collectors after initialization, use the Configuration object: applicationInsights.Configuration.setAutoCollectRequests(false)

Vývojářský režimDeveloper mode

Během ladění je vhodné, aby vaše telemetrie byly prostřednictvím kanálu urychleny, takže výsledky uvidíte okamžitě.During debugging, it's useful to have your telemetry expedited through the pipeline so that you can see results immediately. Získáte také další zprávy, které vám pomohou trasovat případné problémy s telemetrie.You also get additional messages that help you trace any problems with the telemetry. Přepněte ho v produkčním prostředí, protože může zpomalit vaši aplikaci.Switch it off in production, because it may slow down your app.

C#C#

TelemetryConfiguration.Active.TelemetryChannel.DeveloperMode = true;

Visual BasicVisual Basic

TelemetryConfiguration.Active.TelemetryChannel.DeveloperMode = True

Node.jsNode.js

V případě Node.js můžete povolit režim pro vývojáře povolením interního protokolování prostřednictvím setInternalLogging a nastavením maxBatchSize na 0, což způsobí, že se vaše telemetrie pošle hned po shromáždění.For Node.js, you can enable developer mode by enabling internal logging via setInternalLogging and setting maxBatchSize to 0, which causes your telemetry to be sent as soon as it is collected.

applicationInsights.setup("ikey")
  .setInternalLogging(true, true)
  .start()
applicationInsights.defaultClient.config.maxBatchSize = 0;

Nastavení klíče instrumentace pro vybranou vlastní telemetriiSetting the instrumentation key for selected custom telemetry

C#C#

var telemetry = new TelemetryClient();
telemetry.InstrumentationKey = "---my key---";
// ...

Dynamický klíč instrumentaceDynamic instrumentation key

Abyste se vyhnuli smíchání telemetrie od vývojových, testovacích a produkčních prostředí, můžete vytvořit samostatné prostředky Application Insights a změnit jejich klíče v závislosti na prostředí.To avoid mixing up telemetry from development, test, and production environments, you can create separate Application Insights resources and change their keys, depending on the environment.

Místo získání klíče instrumentace z konfiguračního souboru ho můžete nastavit ve svém kódu.Instead of getting the instrumentation key from the configuration file, you can set it in your code. Nastavte klíč v inicializační metodě, jako je například global.aspx.cs ve službě ASP.NET:Set the key in an initialization method, such as global.aspx.cs in an ASP.NET service:

C#C#

protected void Application_Start()
{
    Microsoft.ApplicationInsights.Extensibility.
    TelemetryConfiguration.Active.InstrumentationKey =
        // - for example -
        WebConfigurationManager.Settings["ikey"];
    ...
}

JavaScriptJavaScript

appInsights.config.instrumentationKey = myKey;

Na webových stránkách můžete chtít nastavit ho ze stavu webového serveru, ale nemusíte ho zakódovat do skriptu.In webpages, you might want to set it from the web server's state, rather than coding it literally into the script. Například na webové stránce vygenerované v aplikaci ASP.NET:For example, in a webpage generated in an ASP.NET app:

JavaScript v RazorJavaScript in Razor

<script type="text/javascript">
// Standard Application Insights webpage script:
var appInsights = window.appInsights || function(config){ ...
// Modify this part:
}({instrumentationKey:  
    // Generate from server property:
    @Microsoft.ApplicationInsights.Extensibility.
        TelemetryConfiguration.Active.InstrumentationKey;
}) // ...
    String instrumentationKey = "00000000-0000-0000-0000-000000000000";

    if (instrumentationKey != null)
    {
        TelemetryConfiguration.getActive().setInstrumentationKey(instrumentationKey);
    }

TelemetryContextTelemetryContext

TelemetryClient má kontextovou vlastnost, která obsahuje hodnoty, které jsou odesílány společně se všemi daty telemetrie.TelemetryClient has a Context property, which contains values that are sent along with all telemetry data. Obvykle jsou nastavené standardními moduly telemetrie, ale můžete je také nastavit sami.They are normally set by the standard telemetry modules, but you can also set them yourself. Příklad:For example:

telemetry.Context.Operation.Name = "MyOperationName";

Pokud jste některou z těchto hodnot nastavili sami, zvažte odebrání relevantního řádku z ApplicationInsights.config, aby se vaše hodnoty a standardní hodnoty nemusely zaměňovat.If you set any of these values yourself, consider removing the relevant line from ApplicationInsights.config, so that your values and the standard values don't get confused.

  • Součást: aplikace a její verze.Component: The app and its version.
  • Zařízení: data o zařízení, ve kterém je aplikace spuštěná.Device: Data about the device where the app is running. (Ve webových aplikacích se jedná o server nebo klientské zařízení, ze kterého se telemetrie odesílá.)(In web apps, this is the server or client device that the telemetry is sent from.)
  • InstrumentationKey: prostředek Application Insights v Azure, kde se objeví telemetrie.InstrumentationKey: The Application Insights resource in Azure where the telemetry appears. Obvykle je převzata z ApplicationInsights.config.It's usually picked up from ApplicationInsights.config.
  • Umístění: geografické umístění zařízení.Location: The geographic location of the device.
  • Operace: ve službě Web Apps aktuální požadavek HTTP.Operation: In web apps, the current HTTP request. V ostatních typech aplikací můžete nastavit, aby se události seskupují společně.In other app types, you can set this to group events together.
    • ID: generovaná hodnota, která koreluje různé události, takže při kontrole libovolné události v diagnostickém vyhledávání můžete najít související položky.ID: A generated value that correlates different events, so that when you inspect any event in Diagnostic Search, you can find related items.
    • Název: identifikátor, obvykle adresa URL požadavku HTTP.Name: An identifier, usually the URL of the HTTP request.
    • SyntheticSource: Pokud není null nebo prázdné, řetězec, který označuje, že zdroj žádosti byl identifikován jako robot nebo webový test.SyntheticSource: If not null or empty, a string that indicates that the source of the request has been identified as a robot or web test. Ve výchozím nastavení je vyloučen z výpočtů v Průzkumník metrik.By default, it is excluded from calculations in Metrics Explorer.
  • Vlastnosti: vlastnosti, které jsou odesílány se všemi daty telemetrie.Properties: Properties that are sent with all telemetry data. Dá se přepsat v individuálním záznamu * volání.It can be overridden in individual Track* calls.
  • Relace: relace uživatele.Session: The user's session. ID je nastavené na generovanou hodnotu, která se změní, když uživatel nějaký čas ještě není aktivní.The ID is set to a generated value, which is changed when the user has not been active for a while.
  • Uživatel: informace o uživateli.User: User information.

OmezeníLimits

K dispozici jsou určitá omezení počtu metrik a událostí na aplikaci, tj. na klíč instrumentace.There are some limits on the number of metrics and events per application, that is, per instrumentation key. Omezení závisí na zvoleném cenovém plánu.Limits depend on the pricing plan that you choose.

ProstředekResource Výchozí omezeníDefault limit PoznámkaNote
Celkem dat za denTotal data per day 100 GB100 GB Objem dat jde snížit nastavením limitu.You can reduce data by setting a cap. Pokud potřebujete víc dat, můžete limit na portálu zvýšit, až 1 000 GB.If you need more data, you can increase the limit in the portal, up to 1,000 GB. Pro kapacitu větší než 1 000 GB odešlete e-mail na adresu AIDataCap@microsoft.com .For capacities greater than 1,000 GB, send email to AIDataCap@microsoft.com.
ThrottlingThrottling události 32 000 za sekundu32,000 events/second Omezení se měří se po minutách.The limit is measured over a minute.
Uchovávání datData retention 30-730 dní30 - 730 days Tento prostředek je pro funkce Vyhledávání, Analýza a Průzkumník metrik.This resource is for Search, Analytics, and Metrics Explorer.
Vícekrokový test dostupnosti – uchování podrobných výsledkůAvailability multi-step test detailed results retention 90 dnů90 days Tento prostředek poskytuje podrobné výsledky každého kroku.This resource provides detailed results of each step.
Maximální velikost položky telemetrieMaximum telemetry item size 64 kB64 kB
Maximální počet položek telemetrie na dávkuMaximum telemetry items per batch 64 K64 K
Délka názvu vlastnosti a metrikyProperty and metric name length 150150 Viz schémata typů.See type schemas.
Délka řetězce hodnoty vlastnostiProperty value string length 8 1928,192 Viz schémata typů.See type schemas.
Délka zprávy trasování a výjimkyTrace and exception message length 32 76832,768 Viz schémata typů.See type schemas.
Testy dostupnosti – počet na aplikaciAvailability tests count per app 100100
Uchovávání dat profileruProfiler data retention 5 dní5 days
Data profileru odesílaná za denProfiler data sent per day 10 GB10 GB

Další informace najdete v tématu Ceny a kvóty ve službě Application Insights.For more information, see About pricing and quotas in Application Insights.

Aby nedošlo k překročení limitu přenosové rychlosti, použijte vzorkování.To avoid hitting the data rate limit, use sampling.

Informace o tom, jak dlouho se data uchovávají, najdete v tématu uchovávání a ochrana osobních údajů.To determine how long data is kept, see Data retention and privacy.

Referenční dokumentyReference docs

Kód sady SDKSDK code

DotazyQuestions

  • Jaké výjimky mohou Track_ () volání throw?What exceptions might Track_() calls throw?

    ŽádnéNone. Nemusíte je zabalit do klauzulí try-catch.You don't need to wrap them in try-catch clauses. Pokud sada SDK zjistí problémy, protokoluje zprávy ve výstupu konzoly ladění a--pokud se zprávy objeví v diagnostickém vyhledávání.If the SDK encounters problems, it will log messages in the debug console output and--if the messages get through--in Diagnostic Search.

  • Existuje REST API získat data z portálu?Is there a REST API to get data from the portal?

    Ano, rozhraní API pro přístup k datům.Yes, the data access API. Mezi další způsoby, jak extrahovat data, patří Export z analýzy do Power BI a průběžný export.Other ways to extract data include export from Analytics to Power BI and continuous export.

Další krokyNext steps