Czar of Zonk created NIFI-8197:
----------------------------------

             Summary: Prometheus Processor Efficiency ReportingTask
                 Key: NIFI-8197
                 URL: https://issues.apache.org/jira/browse/NIFI-8197
             Project: Apache NiFi
          Issue Type: Improvement
          Components: Core Framework
    Affects Versions: 1.12.1
         Environment: Prometheus, ReportingTask, Java 11
            Reporter: Czar of Zonk


I have assembled a reference repository in github, replete with sample Java 
code, maven POM(s), and, equally important, extensive write-up. Links:
 * Github repository: 
[https://github.com/lcphill/NiFiPromProcessorEfficiencyMetricsReportingTask]
 * Extensive write-up (dot.odt): 
[https://github.com/lcphill/NiFiPromProcessorEfficiencyMetricsReportingTask/blob/main/fodder/NiFiPrometheusProcessorEfficiencyMetricsSynopsis.odt]
 * Source java code (ReportingTask): 
[https://github.com/lcphill/NiFiPromProcessorEfficiencyMetricsReportingTask/blob/main/impl/src/main/java/org/zonk/nifi/prometheus/reportingtask/processorefficiency/NiFiPromProcessorEfficiencyMetricsReportingTask.java]

Also reference Prometheus collector (golang), which is an improved prometheus' 
push-gateway component: [https://github.com/pschou/prom-collector]

This feature set is serving a customer. The sample reference code, linked 
above, is slightly trimmed down for such purpose as providing a reference 
implementation.

Key feature: Processor Efficiency metrics, implemented using Apache commons 
math3 SimpleRegression, providing slope and intercept computations (a la FIFO), 
for which to alarm (using Grafana) as relating to processor backlog and / or 
flow drop-off. Please peruse the linked write-up for details.

Additional features (consider as additional requirement set):
 * Privacy considerations - metrics are sensitive. Support for privacy is 
demonstrated. See linked write-up and Java code reference implementation for 
details. There are a handful of provided features that assist to address 
privacy considerations in the Java code reference implementation linked above.
 * Push (versus Listen) - very important that the paradigm be changed for 
security reasons, as well as network architecture reasons. See linked write-up 
for details.
 * JVM: available memory calculation (based on sandbox max size and current 
used memory)
 * Queue based metrics: The join between processor and input relation / output 
relations is best accomplished within the confines of the reporting task code 
(with, effectively, zero-latency) versus requiring the Grafana back-end to 
accomplish – at that juncture – the very arduous task of attempting to 
reassemble the join. Please see the Java code reference implementation and 
linked write-up for details.

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to