C#で書かれたコンソールアプリケーションプロジェクトがあります。これには、以下のNuGetパッケージをApplication Insightsに追加しました。コンソールアプリケーションからMongoDBリクエストを追跡する方法
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
私は、configファイルで私のInstrumentationKeyを設定したと私は次のコードで使用して起動時にTelemetryClientを発射しています:
var telemetryClient = new TelemetryClient();
telemetryClient.Context.User.Id = Environment.UserName;
telemetryClient.Context.Session.Id = Guid.NewGuid().ToString();
telemetryClient.Context.Device.OperatingSystem = Environment.OSVersion.ToString();
すべてがキャプチャされていないAIを除いてうまく機能していますMongoに送信されたリクエストは、「アプリケーションマップ」でSQLサーバーに送信されても、他の外部リクエストの兆候は見えません。モンゴーのリクエストのテレメトリーを見ることができる方法はありますか?
EDIT - 私は魔法のように動作し、私は、成功と失敗を区別することができますほとんど以下になってしまったピーター・ボンズのおかげ:
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);
これを行うと...それにgithubリポジトリを作成して世界と共有する必要がありますか? :) –
偉大な答えピーター、これは実際にはGitHubで動作するものではありませんが、私はおそらく私がやっていることについてのブログ記事をまとめて、私は私の質問に結びつけたコードを追加しました。 –
ちょっと遅くなったけど、ブログ記事を書いてみた。https://sequence7.net/2017/02/09/monitoring-mongodb-with-application-insights/ –