<PackageReference Include="Relativity.Server.Import.SDK" Version="2.9.2" />

SumMetricFormatter

using Relativity.Telemetry.DataContracts.Shared; using System; using System.Collections.Generic; namespace Monitoring.Sinks { public class SumMetricFormatter : ISumMetricFormatter { public List<MetricRef> GenerateSumMetrics(MetricBase metric) { Type type = metric.GetType(); if (!(type == typeof(MetricJobStarted))) { if (!(type == typeof(MetricJobEndReport))) { if (!(type == typeof(MetricAuthenticationType))) return new List<MetricRef>(); return GenerateSumMetricAuthenticationType((MetricAuthenticationType)metric); } return GenerateSumMetricJobEndReport((MetricJobEndReport)metric); } return GenerateSumMetricJobStarted((MetricJobStarted)metric); } List<MetricRef> ISumMetricFormatter.GenerateSumMetrics(MetricBase metric) { return this.GenerateSumMetrics(metric); } private List<MetricRef> GenerateSumMetricJobStarted(MetricJobStarted metric) { List<MetricRef> list = new List<MetricRef>(); list.Add(new MetricRef(FormatSumBucketName("RDC.Performance.JobStartedCount", metric.TransferDirection, metric.TransferMode), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 0, (object)1)); return list; } private List<MetricRef> GenerateSumMetricJobEndReport(MetricJobEndReport metric) { List<MetricRef> list = new List<MetricRef>(); list.Add(new MetricRef(FormatSumBucketName("RDC.Usage.TotalRecords", metric.TransferDirection, metric.TransferMode), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 3, (object)metric.TotalRecords)); list.Add(new MetricRef(FormatSumBucketName("RDC.Usage.CompletedRecords", metric.TransferDirection, metric.TransferMode), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 3, (object)metric.CompletedRecords)); list.Add(new MetricRef(FormatSumBucketName("RDC.Usage.JobSize", metric.TransferDirection, metric.TransferMode), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 3, (object)metric.TotalSizeBytes)); list.Add(new MetricRef(FormatSumBucketName("RDC.Performance.Throughput", metric.TransferDirection, metric.TransferMode), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 5, (object)metric.ThroughputRecordsPerSecond)); list.Add(new MetricRef(FormatSumBucketName("RDC.Performance.ThroughputBytes", metric.TransferDirection, metric.TransferMode), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 5, (object)metric.ThroughputBytesPerSecond)); list.Add(new MetricRef(FormatSumBucketName(GetBucketPrefixFromJobStatus(metric.JobStatus), metric.TransferDirection, metric.TransferMode), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 0, (object)1)); List<MetricRef> list2 = list; if (metric.TransferDirection == TelemetryConstants.TransferDirection.Import) list2.Add(new MetricRef(string.Format("{0}.{1}", "RDC.Performance.SqlBulkImportThroughput", metric.ImportObjectType), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 5, (object)metric.SqlBulkLoadThroughputRecordsPerSecond)); if (metric.TransferDirection == TelemetryConstants.TransferDirection.Export) { list2.Add(new MetricRef(FormatSumBucketName("RDC.Usage.CompletedFiles", metric.TransferMode, "Native"), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 3, (object)metric.ExportedNativeCount)); list2.Add(new MetricRef(FormatSumBucketName("RDC.Usage.CompletedFiles", metric.TransferMode, "Pdf"), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 3, (object)metric.ExportedPdfCount)); list2.Add(new MetricRef(FormatSumBucketName("RDC.Usage.CompletedFiles", metric.TransferMode, "Image"), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 3, (object)metric.ExportedImageCount)); list2.Add(new MetricRef(FormatSumBucketName("RDC.Usage.CompletedFiles", metric.TransferMode, "LongText"), (Guid?)IntegerToGuid(metric.WorkspaceID), metric.CorrelationID, 3, (object)metric.ExportedLongTextCount)); } return list2; } private List<MetricRef> GenerateSumMetricAuthenticationType(MetricAuthenticationType metric) { return new List<MetricRef> { new MetricRef(string.Format("{0}.{1}.{2}", "RDC.IAPI.Authentication", metric.SystemType, metric.AuthenticationMethod), (Guid?)Guid.Empty, metric.CorrelationID, 0, (object)1) }; } private static string FormatSumBucketName(params object[] parts) { return string.Join(".", parts); } private Guid IntegerToGuid(int value) { return new Guid(checked((uint)value).ToString().PadRight(32, 'f').Substring(0, 32)); } private string GetBucketPrefixFromJobStatus(TelemetryConstants.JobStatus jobStatus) { switch (jobStatus) { case TelemetryConstants.JobStatus.Completed: return "RDC.Performance.JobCompletedCount"; case TelemetryConstants.JobStatus.Failed: return "RDC.Performance.JobFailedCount"; case TelemetryConstants.JobStatus.Cancelled: return "RDC.Performance.JobCancelledCount"; default: return jobStatus.ToString(); } } } }