Matthias and Andrew,

I've updated the KIP.  I decided to not list the Kafka Stream metrics
supported as it would create a large amount of redundant information.
The types of supported metrics and behavior for unsupported metrics is
clearly defined.

Thanks,
Bill

On Thu, Aug 22, 2024 at 12:10 PM Bill Bejeck <bbej...@gmail.com> wrote:

> Hi Mathias and Andrew,
>
> Thanks for taking the time to read and comment on the KIP.  I'll address
> each comment below:
>
> MS1 - I agree that logging a WARN here should be sufficient.  I'll update
> the interface in KIP to the original `void` return type.
> AS1 - I was considering throwing an exception, but you make a compelling
> argument about the expected behavior and external dynamic factors.
> So as stated above, the KIP will specify a `void` return type.
>
> MS2 - Good point. I'll update the KIP with a brief statement on supported
> types and a table of Kafka Streams metrics displaying what's supported and
> which ones aren't.
> AS2 - I think the above addresses your second comment.
>
> MS3 - We could explore adding new metrics, but I wouldn't want that to
> block the progress of this KIP.
> So I'd prefer to defer the discussion of new metrics to a follow-on KIP.
> Having said that, if you (or anyone else!) has an idea of
> a specific metric to add, we can consider it now.
>
> MS4 - Unsupported metrics are silently filtered out.  Although it's an
> implementation detail, I propose to log a WARN statement for each filtered
> metric passed to `registerMetricsForSubscription`.
> I also update the KIP with the behavior of unsupported metric types.
>
> MS5 - Setting `enable.metric.push = false` completely disables the
> telemetry pipeline and any provided Kafka Streams metrics are ignored (I
> have this in the KIP).
> Although this is implementation detail, this is a valid condition to throw
> a `ConfigException` on Kafka Streams startup should this inconsistency in
> telemetry configs exist (at least in the main and admin consumer).
> I'll update the KIP to be more clear on this point as well.
>
> Thanks,
> Bill
>
> On Thu, Aug 22, 2024 at 10:54 AM Andrew Schofield <
> andrew_schofi...@live.com> wrote:
>
>> Hi Bill (and Matthias),
>> Thanks for the KIP. This looks like a valuable extension to KIP-714.
>>
>> AS1: Personally, I think that registerMetricsForSubscription should return
>> void and not throw an exception if metrics push is not enabled. Otherwise,
>> you end up with an application whose behaviour is markedly different
>> depending
>> on external factors. For example, if you connect to a broker without a
>> plugin
>> that supports the ClientTelemetry interface, no metrics are going to be
>> pushed.
>> Similarly, if the enable.metrics.push is false, no metrics are going to
>> be pushed.
>> Neither of those seem to me to have implications on whether this method
>> executes successfully. Even if everything is enabled, the metrics will
>> only flow
>> if there’s a telemetry subscription which matches the metric names. Those
>> are
>> dynamic things which are intended to be modified by operators seeking to
>> diagnose problems. We certainly don’t want the
>> registerMetricsForSubscription
>> method to behave differently depending on the current state of its
>> telemetry
>> subscriptions.
>>
>> AS2: Good catch from Matthias for metrics whose type is incompatible
>> with OTLP. We need to define the behaviour here.
>>
>> Thanks,
>> Andrew
>>
>>
>> > On 22 Aug 2024, at 05:35, Matthias J. Sax <mj...@apache.org> wrote:
>> >
>> > Thanks for the KIP Bill.
>> >
>> > Just for brainstorming: the newly added methods have `boolean` return
>> type. Is this necessary or would logging a WARN be sufficient? Or maybe
>> throw an exception if reporting is disabled?
>> >
>> > As we intend to report KS metrics, I am wondering if we should talk
>> about this in some more detail? As discussed offline, KIP-714 is based on
>> open-telemetry and supports only certain metric types, and not all KS
>> metrics can be reported.
>> >
>> > Should we maybe even add new metrics to KS to close this gap (could
>> also be a follow up KIP).
>> >
>> > What happens if a registered metric is of an unsupported type?
>> >
>> > What happens if users set KS level `enable.metric.push = true` but a
>> client level config `enable.maetric.push = false`? Should we throw a
>> ConfigException or similar for this case (at least for admin and
>> main.consumer -- as we don't intent to use the producer, it would not
>> matter if producer metric push is enabled or not). To be fair, this might
>> be more of an impl detail? Just curious.
>> >
>> >
>> > -Matthias
>> >
>> >
>> > On 8/21/24 1:03 PM, Apoorv Mittal wrote:
>> >> Hi Bill,
>> >> Thanks for addressing, looks good to me. Looking forward to
>> implementation.
>> >> Regards,
>> >> Apoorv Mittal
>> >> On Wed, Aug 21, 2024 at 8:14 PM Bill Bejeck <bbej...@gmail.com> wrote:
>> >>> Hi Apoorv,
>> >>>
>> >>> Good call, I've updated the compatibility section with text about
>> using
>> >>> older brokers.
>> >>>
>> >>> -Bill
>> >>>
>> >>> On Wed, Aug 21, 2024 at 1:30 PM Apoorv Mittal <
>> apoorvmitta...@gmail.com>
>> >>> wrote:
>> >>>
>> >>>> Hi Bill,
>> >>>> Thanks for the details. Sounds good to me.
>> >>>>
>> >>>> One last question:
>> >>>>
>> >>>> AM5: Do we need to capture any details around compatibility with
>> older
>> >>>> brokers which don't support KIP-714 or when telemetry APIs are not
>> >>> enabled
>> >>>> on brokers (no configured receiver plugin)?
>> >>>>
>> >>>> Regards,
>> >>>> Apoorv Mittal
>> >>>>
>> >>>>
>> >>>> On Tue, Aug 20, 2024 at 10:22 PM Bill Bejeck <bbej...@apache.org>
>> wrote:
>> >>>>
>> >>>>> Hi Apoorv,
>> >>>>>
>> >>>>> Thank you for the discussion! Here are my responses to your
>> follow-up
>> >>>>> questions:
>> >>>>>
>> >>>>> AM2: My apologies for the previous response; I misunderstood the
>> >>>> question.
>> >>>>> When executing the `registerMetricsForSubscription,`  it is up to
>> the
>> >>>>> developer to provide all metrics that could possibly be in a
>> >>> subscription
>> >>>>> request. For example, Kafka Streams will provide all stream metrics,
>> >>> thus
>> >>>>> supporting any subscription changes at runtime. I'll clarify this in
>> >>> the
>> >>>>> KIP.
>> >>>>>
>> >>>>> AM3: I understand your point, but I'm not convinced this will be an
>> >>> issue
>> >>>>> right now.   But given it is an implementation detail, I'd like to
>> >>> defer
>> >>>>> addressing this issue in the PR phase, where we can thoroughly test
>> and
>> >>>>> adjust accordingly.  Is that acceptable for you?
>> >>>>>
>> >>>>> Thanks,
>> >>>>> Bill
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>>
>> >>>>> On Tue, Aug 20, 2024 at 3:34 PM Apoorv Mittal <
>> >>> apoorvmitta...@gmail.com>
>> >>>>> wrote:
>> >>>>>
>> >>>>>> Hi Bill,
>> >>>>>> Thanks for the answers, some follow ups.
>> >>>>>>
>> >>>>>> AM2: If we will only register subscribed metrics, as per the
>> >>>> subscription
>> >>>>>> received from the broker, then are we going to call the
>> >>>>>> `registerMetricsForSubscription` post to GetTelemetrySubscription
>> >>>>> response
>> >>>>>> from the broker? Also how do we manage the dynamic update of
>> >>> subscribed
>> >>>>>> metrics with this approach i.e. subscribed metrics can change at
>> >>>> runtime
>> >>>>>> then are we going to re-register additional metrics from external
>> >>>>>> applications?
>> >>>>>>
>> >>>>>> AM3: Sounds good. I understand that Streams JMXReporter will emit
>> >>>> Streams
>> >>>>>> metrics and individual client JMXReporter will emit respective
>> client
>> >>>>>> metrics. But currently in the clients, all the metrics in mbean are
>> >>>>>> evaluated by JMXReporter and KafkaMetricsCollector, though it's an
>> >>>>>> implementation detail but I am not sure if we register external
>> >>>>> application
>> >>>>>> metrics in client, by registerMetricsForSubscription, then how we
>> >>> will
>> >>>>>> differentiate with external application metrics while emitting
>> >>> through
>> >>>>>> JMXReporter of clients.
>> >>>>>>
>> >>>>>> Regards,
>> >>>>>> Apoorv Mittal
>> >>>>>>
>> >>>>>>
>> >>>>>> On Tue, Aug 20, 2024 at 8:09 PM Bill Bejeck <bbej...@apache.org>
>> >>>> wrote:
>> >>>>>>
>> >>>>>>> Hi Apoorv,
>> >>>>>>>
>> >>>>>>> Thanks for reading the KIP and commenting.  Here are my answers to
>> >>>> your
>> >>>>>>> comments/questions:
>> >>>>>>>
>> >>>>>>> AM1: Good point; I'll update the Javadoc in the KIP to be more
>> >>>>> specific.
>> >>>>>>>
>> >>>>>>> AM2: I'm not sure I follow, but IIUC, then yes, this method will
>> >>> only
>> >>>>>>> subscribe telemetry metrics.
>> >>>>>>>
>> >>>>>>> AM3: The `registerMetricsForSubscription` method only subscribes
>> >>>>> metrics
>> >>>>>>> for telemetry reporting; it does not give them to the JMX
>> reporter.
>> >>>>> The
>> >>>>>>> application implementer is responsible for providing metrics to
>> any
>> >>>>> other
>> >>>>>>> reporter.  For example, when starting an application, Kafka
>> Streams
>> >>>>>>> separately exposes all its metrics to a JMX reporter.
>> >>>>>>>
>> >>>>>>> AM4: Great question.  I'll assert we still need the
>> >>>>> `enable.metrics.push`
>> >>>>>>> configuration to toggle pushing Kafka Streams telemetry metrics.
>> >>> To
>> >>>>>> change
>> >>>>>>> the metrics of the embedded Kafka clients within Kafka Streams,
>> >>> users
>> >>>>>> will
>> >>>>>>> use the current mechanism to update client configuration settings.
>> >>>>> I'll
>> >>>>>>> update the KIP to clarify these details.
>> >>>>>>>
>> >>>>>>> Thanks,
>> >>>>>>> Bill
>> >>>>>>>
>> >>>>>>> On Tue, Aug 20, 2024 at 6:30 AM Apoorv Mittal <
>> >>>>> apoorvmitta...@gmail.com>
>> >>>>>>> wrote:
>> >>>>>>>
>> >>>>>>>> Hi Bill,
>> >>>>>>>> Thanks for the KIP and it's great to see a way applications can
>> >>>> also
>> >>>>>> send
>> >>>>>>>> telemetry metrics over the KIP-714 pipeline.
>> >>>>>>>>
>> >>>>>>>> A couple of questions:
>> >>>>>>>> AM1: The Javadoc for the method seems to be a bit vague, it talks
>> >>>>> about
>> >>>>>>>> "subscription" but do we need to be a bit more detailed regarding
>> >>>>> which
>> >>>>>>>> subscription we refer to?
>> >>>>>>>>
>> >>>>>>>> AM2: Are we going to only register KIP-714 subscribed metrics
>> >>> with
>> >>>>> this
>> >>>>>>>> method?
>> >>>>>>>>
>> >>>>>>>> AM3: Are the additional registered metrics available on JMX
>> >>>> reporter
>> >>>>> as
>> >>>>>>>> well or are we going to only register additional metrics for
>> >>>> KIP-714
>> >>>>>>>> telemetry pipeline?
>> >>>>>>>>
>> >>>>>>>> AM4: StreamsConfig also defines `enable.metrics.push`, do we need
>> >>>>> that
>> >>>>>>>> config or rely on client metric push config? Or all the clients
>> >>>> will
>> >>>>>>>> inherit the `enable.metrics.push` defined for Streams?
>> >>>>>>>>
>> >>>>>>>> Regards,
>> >>>>>>>> Apoorv Mittal
>> >>>>>>>>
>> >>>>>>>>
>> >>>>>>>> On Tue, Aug 20, 2024 at 10:21 AM Bruno Cadonna <
>> >>> cado...@apache.org
>> >>>>>
>> >>>>>>> wrote:
>> >>>>>>>>
>> >>>>>>>>> Hi Bill,
>> >>>>>>>>>
>> >>>>>>>>> Thanks for the KIP!
>> >>>>>>>>>
>> >>>>>>>>> BC1
>> >>>>>>>>> I find the name registerAdditionalMetrics() not specific
>> >>> enough.
>> >>>> It
>> >>>>>> is
>> >>>>>>>>> not clear that the passed-in metrics are made available for
>> >>>>>>>>> subscription. What about registerMetricsForSubscription()?
>> >>>>>>>>> The Additional part is confusing in my opinion: additional to
>> >>>> what?
>> >>>>>>>>>
>> >>>>>>>>> BC2
>> >>>>>>>>> Does the KIP need a transformation rule from MetricName to
>> >>>>>>>>> OpenTelemetry-compatible names that are exposed at the broker
>> >>> for
>> >>>>>>>>> subscription and retrieval?
>> >>>>>>>>>
>> >>>>>>>>> Best,
>> >>>>>>>>> Bruno
>> >>>>>>>>>
>> >>>>>>>>> On 8/20/24 12:43 AM, Bill Bejeck wrote:
>> >>>>>>>>>> Hi Lucas, thanks for the comments.
>> >>>>>>>>>>
>> >>>>>>>>>>> LB1
>> >>>>>>>>>> Yes, I'll update the KIP signature to `? extends Metric`
>> >>>>>>>>>>
>> >>>>>>>>>>> LB2
>> >>>>>>>>>> If `enable.metrics.push` is disabled, the metrics passed in
>> >>> are
>> >>>>>>>> ignored.
>> >>>>>>>>>> Thinking about this now, I'm considering updating the return
>> >>>> type
>> >>>>>> of
>> >>>>>>>>>> `registerAdditionalMetrics` to a `boolean` from `void`, true
>> >>> if
>> >>>>> the
>> >>>>>>>>> metrics
>> >>>>>>>>>> have been successfully applied and false otherwise.
>> >>>>>>>>>> WDYT?
>> >>>>>>>>>>
>> >>>>>>>>>> Cheers,
>> >>>>>>>>>> Bill
>> >>>>>>>>>>
>> >>>>>>>>>>
>> >>>>>>>>>> On Mon, Aug 12, 2024 at 11:33 AM Lucas Brutschy
>> >>>>>>>>>> <lbruts...@confluent.io.invalid> wrote:
>> >>>>>>>>>>
>> >>>>>>>>>>> Hi Bill!
>> >>>>>>>>>>>
>> >>>>>>>>>>> Thanks for the KIP! I like this solution, it's general
>> >>> enough
>> >>>>> for
>> >>>>>>> many
>> >>>>>>>>>>> kinds of application.
>> >>>>>>>>>>>
>> >>>>>>>>>>> LB1: Could we accept an instance of the Metric interface
>> >>>> instead
>> >>>>>> of
>> >>>>>>>>>>> KafkaMetric? No strong reason to do it, it would just make
>> >>> the
>> >>>>>>>>>>> interface slightly more generic.
>> >>>>>>>>>>>
>> >>>>>>>>>>> LB2: What is the behavior is `enable.metrics.push` is
>> >>>> disabled?
>> >>>>>>>>>>>
>> >>>>>>>>>>> Cheers,
>> >>>>>>>>>>> Lucas
>> >>>>>>>>>>>
>> >>>>>>>>>>> On Fri, Aug 2, 2024 at 9:30 PM Bill Bejeck <
>> >>>> bbej...@apache.org>
>> >>>>>>>> wrote:
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Hi all,
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> I would like to start a discussion thread on KIP-1076 to
>> >>>> enable
>> >>>>>>>> metrics
>> >>>>>>>>>>>> collection for applications that embed a Kafka client.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> The KIP can be found here:
>> >>>>>>>>>>>>
>> >>>>>>>>>>>
>> >>>>>>>>>
>> >>>>>>>>
>> >>>>>>>
>> >>>>>>
>> >>>>>
>> >>>>
>> >>>
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1076%3A++Metrics+for+client+applications+KIP-714+extension
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> I look forward to the discussion and your feedback.
>> >>>>>>>>>>>>
>> >>>>>>>>>>>> Thanks,
>> >>>>>>>>>>>> Bill
>>
>>
>>

Reply via email to