2017-01-23 3 views
0

Gibt es eine Möglichkeit, Application Insights zu erfassen nur einen Prozentsatz der Daten im Zusammenhang mit SQL-Abhängigkeiten zu erfassen? etwas wie 10%? Wenn nicht, gibt es eine Möglichkeit, alles zusammen zu deaktivieren?MS Application Insights - Wie gedrosselt Sql Abhängigkeiten

+2

meine Antwort Siehe hier: http://stackoverflow.com/questions/38320886/app-insights-disable-sql-dependency-telemetry/38321304#38321304 –

+0

Bitte versuchen Sie es James Davis zu folgen - MSFT Antwort und finde heraus, ob es dir helfen könnte. –

+0

@ JamesDavis-MSFT du bist die Lösung funktioniert perfekt gut, bitte post-it als Antwort, damit ich es akzeptieren kann! – Leonardo

Antwort

1

Sie können auf verschiedene Arten "drosseln" (oder probieren, wie Microsoft es nennt). Eine Möglichkeit besteht darin, alles zu drosseln, indem Sie die integrierten Konfigurationsoptionen verwenden. Wenn Sie jedoch nur bestimmte Abhängigkeiten drosseln möchten, müssen Sie Ihren eigenen ITelemetryChannel implementieren.
Ein Leitfaden, wie dies geschehen ist hier zu finden sind: http://apmtips.com/blog/2015/05/06/diy-data-sampling/

Dann wird in dem Send (ITelemetry Artikel) Methode können Sie prüfen, ob das eingehende Element eine Abhängigkeit und im Zusammenhang mit SQL ist, wird es so aussehen dies wie:

if (item is DependencyTelemetry) 
{ 
    var dependency = item as DependencyTelemetry; 
    if (dependency.DependencyTypeName == "SQL") 
    { 
     //implement throttling from the guide 
    } 
} 

wie der Link zeigt, müssen Sie eine Instanz von ServerTelemetryChannel und rufen Sie die Methode Send() auf diese erstellen - Sie dies für alle Telemetrie Artikel tun müssen, die Sie wollen, um tatsächlich schicken Anwendungseinblicke.
Dies bedeutet, dass Sie auch diese Implementierung ausfiltern zu können völlig beliebige SQL-Abhängigkeit Telemetrie wie folgt aus:

public void Send(ITelemetry item) 
{ 
    if (item is DependencyTelemetry) 
    { 
     var dependency = item as DependencyTelemetry; 
     if (dependency.DependencyTypeName == "SQL") 
     { 
      return; 
     } 
    }   
    this.channel.Send(item); 
} 
+0

Ich las es und implementierte es, indem ich den Standardknoten in der applicationinsights.config-Datei ersetzte, aber selbst wenn ich die Implementierung für 'Send (..)' leer lasse, sehe ich immer noch alle Arten von Telemetrie ... Breakpoints sind auch funktioniert nicht ... – Leonardo

+0

Ihr Telemetriekanal implementiert sowohl ITelemetryChannel als auch ITelemetryModule? Und können Sie die Zeile aus Ihrer applicationinsights.config-Datei anzeigen? – lmms90

+0

@ Imms90 Ich initialisiere jetzt meinen benutzerdefinierten Kanal über Code. Mein Breakpoint wird getroffen, aber ich bekomme immer noch Logs mit einer leeren 'send' Methode ... ist das, weil ich vielleicht ein Dev env benutze? – Leonardo

Verwandte Themen