Uploaded image for project: 'Apache NiFi'
  1. Apache NiFi
  2. NIFI-8271

Expansion of metrics in the REST API Prometheus endpoint and PrometheusReportingTask

    XMLWordPrintableJSON

Details

    Description

      Expansion of metrics available for programmatic access through the REST API Prometheus endpoint and the PrometheusReportingTask.
      These metrics are currently available through other REST API endpoints but not through the Prometheus endpoint.
      The PrometheusReportingTask has been extended for consistency.

      I have copied the outputs below to show how they will appear, including the figures from my test flow. I have removed identifiers for clarity.

      New gauges to be added:

       

      # TYPE nifi_jvm_deadlocked_thread_count gauge
      # HELP nifi_jvm_deadlocked_thread_count NiFi JVM deadlocked thread count
      nifi_jvm_deadlocked_thread_count{instance="",} 0.0
      # TYPE nifi_jvm_heap_committed gauge
      # HELP nifi_jvm_heap_committed The amount of heap memory in bytes that is committed and guaranteed for the JVM to use.
      nifi_jvm_heap_committed{instance="",} 5.111808E8
      # TYPE nifi_jvm_heap_init gauge
      # HELP nifi_jvm_heap_init The amount of heap memory in bytes that the JVM initially requested from the operating system for memory management, returning -1 if undefined.
      nifi_jvm_heap_init{instance="",} 5.36870912E8
      # TYPE nifi_jvm_heap_max gauge
      # HELP nifi_jvm_heap_max The maximum amount of heap memory in bytes that can be used for memory management, returning -1 if undefined.
      nifi_jvm_heap_max{instance="",} 5.111808E8
      # TYPE nifi_jvm_heap_non_committed gauge
      # HELP nifi_jvm_heap_non_committed The amount of non-heap memory in bytes that is committed and guaranteed for the JVM to use.
      nifi_jvm_heap_non_committed{instance="",} 2.031616E8
      # TYPE nifi_jvm_heap_non_init gauge
      # HELP nifi_jvm_heap_non_init The amount of non-heap memory in bytes that the JVM initially requested from the operating system for memory management, returning -1 if undefined.
      nifi_jvm_heap_non_init{instance="",} 2555904.0
      # TYPE nifi_jvm_heap_non_max gauge
      # HELP nifi_jvm_heap_non_max The maximum amount of non-heap memory in bytes that can be used for memory management, returning -1 if undefined.
      nifi_jvm_heap_non_max{instance="",} -1.0
      # TYPE nifi_jvm_heap_non_used gauge
      # HELP nifi_jvm_heap_non_used The amount of used non-heap memory in bytes.
      nifi_jvm_heap_non_used{instance="",} 1.9151288E8
      
      # TYPE nifi_component_state gauge
      # HELP nifi_component_state State of the component, captured in the state label. Values are 0 or 1
      <Processors display the following states>
      nifi_component_state{instance="",component_type="Processor",component_name="GenerateFlowFile",component_id="",parent_id="",state="Disabled",} 0.0
      nifi_component_state{instance="",component_type="Processor",component_name="GenerateFlowFile",component_id="",parent_id="",state="Invalid",} 0.0
      nifi_component_state{instance="",component_type="Processor",component_name="GenerateFlowFile",component_id="",parent_id="",state="Running",} 1.0
      nifi_component_state{instance="",component_type="Processor",component_name="GenerateFlowFile",component_id="",parent_id="",state="Stopped",} 0.0
      nifi_component_state{instance="",component_type="Processor",component_name="GenerateFlowFile",component_id="",parent_id="",state="Validating",} 0.0
      <Remote Process Groups display the following states>
      nifi_component_state{instance="",component_type="RemoteProcessGroup",component_name="",component_id="",parent_id="",state="Transmitting",} 1.0
      <Input Ports and Output Ports display the following states>
      nifi_component_state{instance="",component_type="OutputPort",component_name="",component_id="",parent_id="",state="Disabled",} 0.0
      nifi_component_state{instance="",component_type="OutputPort",component_name="",component_id="",parent_id="",state="Invalid",} 0.0
      nifi_component_state{instance="",component_type="OutputPort",component_name="",component_id="",parent_id="",state="Running",} 1.0
      nifi_component_state{instance="",component_type="OutputPort",component_name="",component_id="",parent_id="",state="Stopped",} 0.0
      nifi_component_state{instance="",component_type="OutputPort",component_name="",component_id="",parent_id="",state="Transmitting",} 0.0
      nifi_component_state{instance="",component_type="OutputPort",component_name="",component_id="",parent_id="",state="Validating",} 0.0
      

       

       

      The idea is that component_state metrics above will replace the existing nifi_transmitting metrics. The nifi_transmitting metrics are unchanged to not affect any existing flows however the #HELP line has been changed to the following.

       

      # HELP nifi_transmitting Whether this component is transmitting data. Values are 0 or 1 - Deprecated, replaced by nifi_component_state.

       

       

      The following new gauges are currently only added to the REST API Prometheus endpoint pending completion of NIFI-8239 (https://issues.apache.org/jira/browse/NIFI-8239).

       

      # TYPE nifi_max_event_driven_threads gauge
      # HELP nifi_max_event_driven_threads The maximum number of threads for event driven processors available to the system.
      nifi_max_event_driven_threads{instance="",} 1.0
      # TYPE nifi_max_timer_driven_threads gauge
      # HELP nifi_max_timer_driven_threads The maximum number of threads for timer driven processors available to the system.
      nifi_max_timer_driven_threads{instance="",} 10.0
      
      # TYPE nifi_repository_max_bytes gauge
      # HELP nifi_repository_max_bytes The maximum number of bytes available to the specified repository.
      nifi_repository_max_bytes{instance="",identifier="default",repository_type="content",} 5.2709261312E10
      nifi_repository_max_bytes{instance="",identifier="default",repository_type="provenance",} 5.2709261312E10
      nifi_repository_max_bytes{instance="",identifier="FlowFile Repository",repository_type="flowfile",} 5.2709261312E10
      # TYPE nifi_repository_used_bytes gauge
      # HELP nifi_repository_used_bytes The number of bytes currently used by the specified repository.
      nifi_repository_used_bytes{instance="",identifier="default",repository_type="content",} 3.74875136E10
      nifi_repository_used_bytes{instance="",identifier="default",repository_type="provenance",} 3.74875136E10
      nifi_repository_used_bytes{instance="",identifier="FlowFile Repository",repository_type="flowfile",} 3.74875136E10
      

       

       

       

       

       

      Attachments

        Issue Links

          Activity

            People

              noblenumbat360 Noble Numbat
              noblenumbat360 Noble Numbat
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 0.5h
                  0.5h