public static Sensor ProcessSensor(string threadId, TaskId taskId, StreamMetricsRegistry metricsRegistry)
        {
            Sensor sensor = metricsRegistry.TaskLevelSensor(threadId, taskId, PROCESS, PROCESS_DESCRIPTION, MetricsRecordingLevel.DEBUG);

            SensorHelper.AddInvocationRateAndCountToSensor(
                sensor,
                StreamMetricsRegistry.TASK_LEVEL_GROUP,
                metricsRegistry.TaskLevelTags(threadId, taskId.ToString()),
                PROCESS,
                PROCESS_RATE_DESCRIPTION,
                PROCESS_TOTAL_DESCRIPTION
                );
            return(sensor);
        }
        public static Sensor ActiveRestorationSensor(string threadId,
                                                     TaskId taskId,
                                                     StreamMetricsRegistry metricsRegistry)
        {
            Sensor sensor = metricsRegistry.TaskLevelSensor(threadId, taskId, ACTIVE_RESTORATION, ACTIVE_RESTORATION_DESCRIPTION, MetricsRecordingLevel.DEBUG);

            SensorHelper.AddValueMetricToSensor(
                sensor,
                StreamMetricsRegistry.TASK_LEVEL_GROUP,
                metricsRegistry.TaskLevelTags(threadId, taskId.ToString()),
                ACTIVE_RESTORATION,
                ACTIVE_RESTORATION_DESCRIPTION
                );

            return(sensor);
        }
        public static Sensor ActiveBufferedRecordsSensor(
            string threadId,
            TaskId taskId,
            StreamMetricsRegistry metricsRegistry)
        {
            string name   = ACTIVE_TASK_PREFIX + BUFFER_COUNT;
            Sensor sensor = metricsRegistry.TaskLevelSensor(threadId, taskId, name, name, MetricsRecordingLevel.DEBUG);

            SensorHelper.AddValueMetricToSensor(
                sensor,
                StreamMetricsRegistry.TASK_LEVEL_GROUP,
                metricsRegistry.TaskLevelTags(threadId, taskId.ToString()),
                name,
                NUM_BUFFERED_RECORDS_DESCRIPTION
                );

            return(sensor);
        }
        private static Sensor InvocationRateAndCountSensor(string threadId,
                                                           TaskId taskId,
                                                           string metricName,
                                                           string metricDescription,
                                                           string descriptionOfRate,
                                                           string descriptionOfCount,
                                                           MetricsRecordingLevel recordingLevel,
                                                           StreamMetricsRegistry streamsMetrics)
        {
            Sensor sensor =
                streamsMetrics.TaskLevelSensor(threadId, taskId, metricName, metricDescription, recordingLevel);

            SensorHelper.AddInvocationRateAndCountToSensor(
                sensor,
                StreamMetricsRegistry.TASK_LEVEL_GROUP,
                streamsMetrics.TaskLevelTags(threadId, taskId.ToString()),
                metricName,
                descriptionOfRate,
                descriptionOfCount
                );

            return(sensor);
        }
        private static Sensor AvgAndMaxSensor(string threadId,
                                              TaskId taskId,
                                              string metricName,
                                              string metricDescription,
                                              string descriptionOfAvg,
                                              string descriptionOfMax,
                                              MetricsRecordingLevel recordingLevel,
                                              StreamMetricsRegistry streamsMetrics)
        {
            Sensor sensor =
                streamsMetrics.TaskLevelSensor(threadId, taskId, metricName, metricDescription, recordingLevel);
            var tags = streamsMetrics.TaskLevelTags(threadId, taskId.ToString());

            SensorHelper.AddAvgAndMaxToSensor(
                sensor,
                StreamMetricsRegistry.TASK_LEVEL_GROUP,
                tags,
                metricName,
                descriptionOfAvg,
                descriptionOfMax
                );

            return(sensor);
        }