私はMongoDBに精通していませんが、Application Insightsに関しては、MongoDBのデフォルトのサポートはありません。しかし、それはあなたがこれを行うことができないという意味ではありません、それはただもう少しコードを含むでしょう。
繰り返しになりますが、私はMongoDBに精通していませんが、 http ://www.mattburkedev.com/logging-queries-from-mongodb-c-number-driver/ 生成されたクエリをログに記録するための組み込みサポートがあります。これで、これをApplicationInsightsに接続するだけで済みます。
TelemetryClient
の使用方法をすでに知っているので そのクラスが提供するカスタム追跡メソッドを使用できます。 https://を参照してください。 docs.microsoft.com/nl-nl/azure/application-insights/app-insights-api-custom-events-metrics
利用可能なカスタム追跡方法について。
次のようなコードを挿入するだけです。
telemetryClient.TrackDependency(
"MongoDB", // The name of the dependency
query, // Text of the query
DateTime.Now, // Time that query is executed
TimeSpan.FromSeconds(0), // Time taken to execute query
true); // Indicates success
クラスtelemetryClient
スレッドセーフなので、再利用できます。
参照されているブログ投稿によると、次のようなことができるはずです:
var client = new MongoClient(new MongoClientSettings()
{
Server = new MongoServerAddress("localhost"),
ClusterConfigurator = cb =>
{
cb.Subscribe<CommandStartedEvent>(e =>
{
telemetryClient.TrackDependency(
"MongoDB", // The name of the dependency
e.Command.ToJson() // Text of the query
DateTime.Now, // Time that query is executed
TimeSpan.FromSeconds(0), // Time taken to execute query
true); // Indicates success
});
}
});
繰り返しになりますが、私はMongoDBに精通していませんが、MongoDBの知識を使用して、MongoDBをニーズに適応させる方法についての想像力の出発点になることを願っています。
編集:
CommandCompletedEvent
もある場合 またはCommandStartedEvent
とは対照的な同様のイベント イベントでは、おそらくそこで依存関係を追跡する必要があります。そうすれば、費やした時間を計算(または単純に読み取る)でき、成功インジケーターの実際の値を取得できるはずだからです。