[ 
https://issues.apache.org/jira/browse/NIP-19?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18052479#comment-18052479
 ] 

Mark Bean commented on NIP-19:
------------------------------

My only concern is any increase in CPU overhead and/or storage requirements as 
mandatory for this feature. If it is minimal impact and/or it can be turned 
off, that is preferred.

> Add Support for Gauges to Processor Metrics
> -------------------------------------------
>
>                 Key: NIP-19
>                 URL: https://issues.apache.org/jira/browse/NIP-19
>             Project: NiFi Improvement Proposal
>          Issue Type: New Feature
>            Reporter: David Handermann
>            Assignee: David Handermann
>            Priority: Major
>
> h2. Motivation
> The framework has supported Counters as a general method for tracking 
> selected behaviors in Processors since project inception. Although Counters 
> can be used for a number of scenarios, they are limited to reporting values 
> that accumulate over time.
> Adding support for Gauges would enable Processors to report values at a given 
> point in time. Gauges support tracking for numbers such as the processing 
> rate of an operation, or the size of temporary buffers used for an operation, 
> among other metrics.
> h2. Scope
> The initial scope involves adding a new method to the {{ProcessSession}} 
> interface in the public Apache NiFi API. The initial implementation should 
> include updates to the standard implementations of {{ProcessSession}} in the 
> framework, along with changes to the {{StatusHistoryRepository}} and other 
> framework components to capture and process Gauges.
> Subsequent implementation could include updates to the user interface to 
> present captured Gauge metrics. User interface changes may involve additional 
> design consideration for optimal presentation in the NiFi application. For 
> these reasons, any changes to the user interface should be evaluated after 
> the initial NiFi API and framework level changes.
> h2. Compatibility
> As an addition to the {{ProcessSession}} interface, support for Gauges does 
> not present any potential break in backward compatibility, and thus does not 
> require a new major version of either the Apache NiFi API or the Apache NiFi 
> framework.
> h2. Description
> The implementation strategy consists of NiFi API additions, NiFi framework 
> updates, NiFi REST API updates, and NiFi UI changes.
> h3. NiFi API
> Adding support for Gauges to Processor metrics begins with targeted updates 
> to the NiFi API, adding a method to the {{ProcessSession}} interface. The 
> method should accept a name, a number, and flag indicating commit timing.
> {{void recordGauge(String name, double value, CommitTiming commitTiming);}}
> The {{CommitTiming}} argument is a new {{enum}} that should have the 
> following values:
>  * NOW
>  * SESSION_COMMITTED
> The {{CommitTiming}} enumeration follows the pattern of the Boolean 
> {{immediate}} flag in the existing {{adjustCounter}} method, but using an 
> {{enum}} provides clearer semantics when writing and reading code for 
> implementing Processors.
> h3. NiFi Framework
> Implementation in the NiFi framework involves implementing the new 
> {{ProcessSession}} method in both standard classes and the {{nifi-mock}} 
> library. The {{StandardProcessSession}} is the primary point of 
> implementation, requiring new instance variables for storing recored Gauge 
> values analogous to current Maps for counters.
> Additional framework changes include updates to the {{RepositoryContext}} 
> interface, the addition of an intermediate {{GaugeRepository}} analogous to 
> the {{{}CounterRepository{}}}, and potential changes to the 
> {{{}StatusHistoryRepository{}}}. As framework interfaces, these changes can 
> be coordinated within the scope of implementation for general framework 
> updates.
> Framework implementation may include the introduction of new application 
> properties for configuring settings specific to Gauges.
> h3. NiFi REST API
> Following basic implementation at the framework level, a new 
> {{GaugesResource}} should be created, analogous to the current 
> {{{}CountersResource{}}}, providing REST API methods for listing current 
> Gauges and values.
> h3. NiFi UI
> Potential NiFi user interface changes include integrating Gauges with Status 
> History information. With certain Node information such as CPU and memory 
> already rendered based on gauges, any new implementation should follow the 
> same general pattern.
> Unlike Counters that show an accumulated number, rendering a simple list of 
> Gauges could limit the presentation to the most recent value recorded.
> h2. Verification
> Changes to the {{ProcessSession}} interface in NiFi API are self-contained. 
> Updates to the NiFi framework and other components should follow standard 
> unit test patterns. As a framework feature, Gauges would also be a candidate 
> for system testing.
> h2. Alternatives
> Possible alternatives include custom implementation in each Processor that 
> requires the ability to record metrics using Gauges. This might work for a 
> small number of Processors, but would not be suitable as a pattern for 
> implementation across the Apache NiFi project.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to