Mam projekt aplikacji konsoli napisany w języku C#, do którego dodałem statystyki aplikacji z następującymi pakietami NuGet.Jak śledzić żądania MongoDB z aplikacji konsolowej?
Microsoft.ApplicationInsights
Microsoft.ApplicationInsights.Agent.Intercept
Microsoft.ApplicationInsights.DependencyCollector
Microsoft.ApplicationInsights.NLogTarget
Microsoft.ApplicationInsights.PerfCounterCollector
Microsoft.ApplicationInsights.Web
Microsoft.ApplicationInsights.WindowsServer
Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel
mam skonfigurowany mój InstrumentationKey w pliku konfiguracyjnym i mam rozpalanie TelemetryClient na starcie za pomocą za pomocą następującego kodu:
var telemetryClient = new TelemetryClient();
telemetryClient.Context.User.Id = Environment.UserName;
telemetryClient.Context.Session.Id = Guid.NewGuid().ToString();
telemetryClient.Context.Device.OperatingSystem = Environment.OSVersion.ToString();
wszystko działa dobrze, z wyjątkiem AI nie jest przechwytywanie wszelkie żądania wysyłane do Mongo, widzę żądania wychodzące do serwera SQL w "Mapie aplikacji", ale żadnych innych zewnętrznych żądań. Czy jest jakiś sposób, żeby zobaczyć telemetrię zapytań złożonych do Mongo?
EDIT - Dzięki Peter Bons skończyło się prawie następujących składników, które działa jak czar i pozwala mi rozróżniać między sukcesem a porażką:
var telemetryClient = new TelemetryClient();
var connectionString = connectionStringSettings.ConnectionString;
var mongoUrl = new MongoUrl(connectionString);
var mongoClientSettings = MongoClientSettings.FromUrl(mongoUrl);
mongoClientSettings.ClusterConfigurator = clusterConfigurator =>
{
clusterConfigurator.Subscribe<CommandSucceededEvent>(e =>
{
telemetryClient.TrackDependency("MongoDB", e.CommandName, DateTime.Now.Subtract(e.Duration), e.Duration, true);
});
clusterConfigurator.Subscribe<CommandFailedEvent>(e =>
{
telemetryClient.TrackDependency("MongoDB", $"{e.CommandName} - {e.ToString()}", DateTime.Now.Subtract(e.Duration), e.Duration, false);
});
};
var mongoClient = new MongoClient(mongoClientSettings);
, a następnie, jeśli to zrobisz ... to może powinieneś utworzyć repozytorium github i podzielić się nim ze światem? :) –
Świetna odpowiedź Peter, to nie jest naprawdę rzecz, która działa w GitHubie, ale prawdopodobnie utworzę wpis na blogu o tym, co robię i dodałem kod, który zakończyłem na moje pytanie . –
Trochę za późno, wiem, ale udało mi się napisać ten post na blogu: https://sequence7.net/2017/02/09/monitoring-mongodb-with-application-insights/ –