Thanks for commenting, Matthias. Why did you switch from passing in a `Collection` to a single metric?
With the changes in the implementation it became obvious that was the necessary approach. Since it seems the discussion has concluded, I'll start a vote now. Thanks to all for the comments and discussion. -Bill On Fri, Aug 30, 2024 at 10:31 PM Matthias J. Sax <mj...@apache.org> wrote: > Thanks Bill. The KIP reads great. Overall LGTM. > > Just one question out of curiosity. Why did you switch from passing in a > `Collection` to a single metric? > > > -Matthias > > > On 8/26/24 3:22 PM, Bill Bejeck wrote: > > 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 > >>>> > >>>> > >>>> > > >