public void OnWriteCommand(string name, object payload) { switch (name) { case "Microsoft.Data.SqlClient.WriteCommandBefore": { commandTimestampContext.Value = Stopwatch.GetTimestamp(); } break; case "Microsoft.Data.SqlClient.WriteCommandAfter": { long ticks = Stopwatch.GetTimestamp() - commandTimestampContext.Value; var timeElapsed = TimeSpan.FromMilliseconds(((double)ticks / Stopwatch.Frequency) * 1000); PrometheusCounters.SqlCommandsDuration.Observe(timeElapsed.TotalSeconds); } break; case "Microsoft.Data.SqlClient.WriteCommandError": { if (commandException.TryFetch(payload, out var sqlException)) { if (commandExceptionNumber.TryFetch(sqlException, out var errorCode)) { PrometheusCounters.SqlCommandsErrors.WithLabels(errorCode.ToString()).Inc(); } } } break; } }
public void OnWriteTransactionRollback(string name, object payload) { switch (name) { case "Microsoft.Data.SqlClient.WriteTransactionRollbackBefore": { } break; case "Microsoft.Data.SqlClient.WriteTransactionRollbackAfter": { PrometheusCounters.DbTransactionsRollbackCount.Inc(); } break; case "Microsoft.Data.SqlClient.WriteTransactionRollbackError": { if (rollbackException.TryFetch(payload, out var sqlException)) { if (rollbackExceptionNumber.TryFetch(sqlException, out var errorCode)) { PrometheusCounters.DbTransactionsErrors.WithLabels(errorCode.ToString()).Inc(); } } } break; } }
public void OnWriteConnectionOpen(string name, object payload) { switch (name) { case "Microsoft.Data.SqlClient.WriteConnectionOpenBefore": { } break; case "Microsoft.Data.SqlClient.WriteConnectionOpenAfter": { PrometheusCounters.DbConnectionsOpenTotal.Inc(); } break; case "Microsoft.Data.SqlClient.WriteConnectionOpenError": { if (connectionException.TryFetch(payload, out var sqlException)) { if (connectionExceptionNumber.TryFetch(sqlException, out var errorCode)) { PrometheusCounters.DbConnectionsErrors.WithLabels(errorCode.ToString()).Inc(); } } } break; } }
public void FetchValidProperty() { var activity = new Activity("test"); var fetch = new PropertyFetcher <string>("DisplayName"); Assert.True(fetch.TryFetch(activity, out string result)); Assert.Equal(activity.DisplayName, result); }
public void FetchInvalidProperty() { var activity = new Activity("test"); var fetch = new PropertyFetcher <string>("DisplayName2"); Assert.False(fetch.TryFetch(activity, out string result)); var fetchInt = new PropertyFetcher <int>("DisplayName2"); Assert.False(fetchInt.TryFetch(activity, out int resultInt)); Assert.Equal(default, result);
public override void OnCustom(string name, Activity activity, object payload) { switch (name) { case "EasyCaching.WriteSetCacheBefore": { if (setBeforeOperationFetcher.TryFetch(payload, out var timestampBefore)) { this.writeSetLocal.Value = timestampBefore; } } break; case "EasyCaching.WriteSetCacheAfter": { var timestampBefore = this.writeSetLocal.Value; if (setAfterOperationFetcher.TryFetch(payload, out var timestampAfter)) { var elapsed = TimeSpan.FromTicks(timestampAfter - timestampBefore).TotalSeconds; if (elapsed == 0) { return; } PrometheusCounters.EasyCachingOperationDuration.WithLabels("set").Observe(elapsed); } } break; case "EasyCaching.WriteGetCacheBefore": { if (getBeforeOperationFetcher.TryFetch(payload, out var timestampBefore)) { this.writeGetLocal.Value = timestampBefore; } } break; case "EasyCaching.WriteGetCacheAfter": { var timestampBefore = this.writeGetLocal.Value; if (getAfterOperationFetcher.TryFetch(payload, out var timeStampAfter)) { var elapsed = TimeSpan.FromTicks(timeStampAfter - timestampBefore).TotalSeconds; if (elapsed == 0) { return; } PrometheusCounters.EasyCachingOperationDuration.WithLabels("get").Observe(elapsed); } } break; case "EasyCaching.WriteRemoveCacheBefore": { if (removeBeforeOperationFetcher.TryFetch(payload, out var timestampBefore)) { this.writeRemoveLocal.Value = timestampBefore; } } break; case "EasyCaching.WriteRemoveCacheAfter": { var timestampBefore = this.writeRemoveLocal.Value; if (removeAfterOperationFetcher.TryFetch(payload, out var timeStampAfter)) { var elapsed = TimeSpan.FromTicks(timeStampAfter - timestampBefore).TotalSeconds; if (elapsed == 0) { return; } PrometheusCounters.EasyCachingOperationDuration.WithLabels("remove").Observe(elapsed); } } break; } }