All,

I had originally planned to call for a vote, but during some early
implementation work, I've discovered some changes are necessary.
First, we need a reciprocal method to remove a metric from subscriptions,
and I've updated the register method to take a single metric.

Thanks in advance for taking another look at the updated KIP, and hopefully
we'll get to a vote this week.

-Bill

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

> 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