Hi Qichao,

Thanks for answering my questions and updating the KIP accordingly.

It looks good to me.

--Vahid


On Tue, Nov 28, 2023, 7:22 PM Qichao Chu <qic...@uber.com.invalid> wrote:

> Hi Vahid,
>
> Thank you for taking the time to review the KIP and asking great questions.
>
> The execution path mentioned is exactly how this KIP is going to function.
> We believe this config, compared with many other configurations like quota,
> will not pose significant alteration to the broker's functionality. Thus
> overwriting the permanent config dynamically is acceptable. After thinking
> about this topic again, I think your question makes a lot of sense and we
> shouldn't override the permanent config. Permanent config usually
> represents the normal operation condition, so the temporal config should be
> removed after the cluster is restarted/re-provisioned to be 'clean'. This
> also helps to prevent undesirable behavior and to reduce the risk involved
> in operation. I have updated the KIP to mention this behavior.
>
> `Medium` level is not mentioned as we don't have any medium-level metrics
> for now. This is for future extension. I have also updated the KIP to
> reflect this information.
>
> Best,
> Qichao
>
>
>
> On Tue, Nov 28, 2023 at 9:22 AM Vahid Hashemian <va...@apache.org> wrote:
>
> > Hi Qichao,
> >
> > Thanks for proposing this KIP. It'd be super valuable to have the ability
> > to have those partition level metrics for Kafka topics.
> >
> > Sorry I'm late to the discussion. I just wanted to bring up a point
> > for clarification and one question:
> >
> > Let's assume that a production cluster cannot afford to enable high
> > verbosity on a permanent basis (at least not for all topics) due to
> > performance concerns.
> >
> > Since this new config can be set dynamically, in case of an issue or
> > investigation that warrants obtaining partition level metrics, one can
> > simply enable high verbosity for select topic(s), temporarily collect
> > metrics at partition level, and then change the config back to the
> previous
> > setting. Since the config values are not set incrementally, the operator
> > would need to run a `describe` to get the existing config first, and then
> > amend it to enable high verbosity for the topic(s) of interest. Finally,
> > when the investigation concludes, the config has to be reverted to its
> > permanent setting.
> >
> > If the above execution path makes sense, in case the operator forgets to
> > take an inventory of the existing (permanent) config and simply
> overwrites
> > it, then that permanent config will be gone and not retrievable. Is this
> > correct?
> >
> > We usually don't need to temporarily change broker configs and I see this
> > config as one that can be temporarily changed. So keeping track of what
> the
> > value was before the change is rather important.
> >
> > Aside from this point, my question is: What's the impact of `medium`
> > setting for `level`? I couldn't find it described in the KIP.
> >
> > Thanks!
> > --Vahid
> >
> >
> >
> > On Mon, Nov 13, 2023 at 5:34 AM Divij Vaidya <divijvaidy...@gmail.com>
> > wrote:
> >
> > > Thank you for updating the KIP Qichao.
> > >
> > > I don't have any more questions or suggestions. Looks good to move
> > forward
> > > from my perspective.
> > >
> > >
> > >
> > > --
> > > Divij Vaidya
> > >
> > >
> > >
> > > On Fri, Nov 10, 2023 at 2:25 PM Qichao Chu <qic...@uber.com.invalid>
> > > wrote:
> > >
> > > > Thank you again for the nice suggestions, Jorge!
> > > > I will wait for Divij's response and move it to the vote stage once
> the
> > > > generic filter part reached concensus.
> > > >
> > > > Qichao Chu
> > > > Software Engineer | Data - Kafka
> > > > [image: Uber] <https://uber.com/>
> > > >
> > > >
> > > > On Fri, Nov 10, 2023 at 6:49 AM Jorge Esteban Quilcate Otoya <
> > > > quilcate.jo...@gmail.com> wrote:
> > > >
> > > > > Hi Qichao,
> > > > >
> > > > > Thanks for updating the KIP, all updates look good to me.
> > > > >
> > > > > Looking forward to see this KIP moving forward!
> > > > >
> > > > > Cheers,
> > > > > Jorge.
> > > > >
> > > > >
> > > > >
> > > > > On Wed, 8 Nov 2023 at 08:55, Qichao Chu <qic...@uber.com.invalid>
> > > wrote:
> > > > >
> > > > > > Hi Divij,
> > > > > >
> > > > > > Thank you for the feedback. I updated the KIP to make it a little
> > bit
> > > > > more
> > > > > > generic: filters will stay in an array instead of different
> > top-level
> > > > > > objects. In this way, if we need language filters in the future.
> > The
> > > > > logic
> > > > > > relationship of filters is also added.
> > > > > >
> > > > > > Hi Jorge,
> > > > > >
> > > > > > Thank you for the review and great comments. Here is the reply
> for
> > > each
> > > > > of
> > > > > > the suggestions:
> > > > > >
> > > > > > 1) The words describing the property are now updated to include
> > more
> > > > > > details of the keys in the JSON. It also explicitly mentions the
> > JSON
> > > > > > nature of the config now.
> > > > > > 2) The JSON entries should be non-conflict so the order is not
> > > > relevant.
> > > > > If
> > > > > > there's conflict, the conflict resolution rules are stated in the
> > > KIP.
> > > > To
> > > > > > make it more clear, ordering and duplication rules are updated in
> > the
> > > > > > Restrictions section of the *level* property.
> > > > > > 3) Yeah we did take a look at the RecordingLevel config and it
> does
> > > not
> > > > > > work for this case. The RecodingLevel config does not offer the
> > > > > capability
> > > > > > of filtering and it has a drawback of needing to be added to all
> > the
> > > > > future
> > > > > > sensors. To reduce the duplication, I propose we merge the
> > > > RecordingLevel
> > > > > > to this more generic config in the future. Please take a look
> into
> > > the
> > > > > > *Using
> > > > > > the Existing RecordingLevel Config* section under *Rejected
> > > > Alternatives*
> > > > > > for more details.
> > > > > > 4) This suggestion makes a lot of sense. My idea is to create a
> > > > > > table/form/doc in the documentation for the verbosity levels of
> all
> > > > > metric
> > > > > > series. If it's too verbose to be in the docs, I will update the
> > KIP
> > > to
> > > > > > include this info. I will create a JIRA for this effort once the
> > KIP
> > > is
> > > > > > approved.
> > > > > > 5) Sure we can expand to all other series, added to the KIP.
> > > > > > 6) Added a new section(*Working with the Configuration via CLI)*
> > with
> > > > the
> > > > > > user experience details
> > > > > > 7) Links are updated.
> > > > > >
> > > > > > Please take another look and let me know if you have any more
> > > concerns.
> > > > > >
> > > > > > Best,
> > > > > > Qichao Chu
> > > > > > Software Engineer | Data - Kafka
> > > > > > [image: Uber] <https://uber.com/>
> > > > > >
> > > > > >
> > > > > > On Wed, Nov 8, 2023 at 6:29 AM Jorge Esteban Quilcate Otoya <
> > > > > > quilcate.jo...@gmail.com> wrote:
> > > > > >
> > > > > > > Hi Qichao,
> > > > > > >
> > > > > > > Thanks for the KIP! This will be a valuable contribution and
> > > improve
> > > > > the
> > > > > > > tooling for troubleshooting.
> > > > > > >
> > > > > > > I have a couple of comments:
> > > > > > >
> > > > > > > 1. It's unclear from the `metrics.verbosity` description what
> the
> > > > > > supported
> > > > > > > values are. In the description mentions "If the value is high
> ...
> > > In
> > > > > the
> > > > > > > low settings" but I think it's referring to the `level`
> property
> > > > > > > specifically instead of the whole value that is now JSON. Could
> > you
> > > > > > clarify
> > > > > > > this?
> > > > > > >
> > > > > > > 2. Could we state in which order the JSON entries are going to
> be
> > > > > > > evaluated? I guess the last entry wins if it overlaps previous
> > > > values,
> > > > > > but
> > > > > > > better to make this explicit.
> > > > > > >
> > > > > > > 3. Kafka metrics library has a `RecordingLevel` configuration
> --
> > > have
> > > > > we
> > > > > > > considered aligning these concepts and maybe reuse it instead
> of
> > > > > > > `verbosityLevel`? Then we can reuse the levels: INFO, DEBUG,
> > TRACE.
> > > > > > >
> > > > > > > 4. Not sure if within the scope of the KIP, but would be
> helpful
> > to
> > > > > > > document the metrics with the verbosity level attached to the
> > > > metrics.
> > > > > > > Maybe creating a JIRA ticket to track this would be enough if
> we
> > > > can't
> > > > > > > cover it as part of the KIP.
> > > > > > >
> > > > > > > 5. Could we consider the following client-related metrics as
> > well:
> > > > > > >   - BytesRejectedPerSec
> > > > > > >   - TotalProduceRequestsPerSec
> > > > > > >   - TotalFetchRequestsPerSec
> > > > > > >   - FailedProduceRequestsPerSec
> > > > > > >   - FailedFetchRequestsPerSec
> > > > > > >   - FetchMessageConversionsPerSec
> > > > > > >   - ProduceMessageConversionsPerSec
> > > > > > > Would be great to have these from day 1 instead of requiring a
> > > > > following
> > > > > > > KIP to extend this. Could be implemented in separate PRs if
> > needed.
> > > > > > >
> > > > > > > 6. To make it clearer how the user experience would be, could
> we
> > > > > provide
> > > > > > an
> > > > > > > example of:
> > > > > > > - how the broker configuration will be provided by default, and
> > > > > > > - how the CLI tooling would be used to change the
> configuration?
> > > > > > > - Maybe a couple of scenarios: adding a new metric config, a
> > second
> > > > one
> > > > > > > with overlapping values, and
> > > > > > > - describing the expected metrics to be mapped
> > > > > > >
> > > > > > > A couple of nits:
> > > > > > > - The first link "MessagesInPerSec metrics" is pointing to
> > > > > > > https://kafka.apache.org/documentation/#uses_metrics -- is
> this
> > > the
> > > > > > > correct
> > > > > > > reference? It doesn't seem too relevant.
> > > > > > > - Also, the link to ReplicaManager points to a line that has
> > change
> > > > > > > already; better to have a permalink to a specific commit: e.g.
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://github.com/apache/kafka/blob/edc7e10a745c350ad1efa9e4866370dc8ea0e034/core/src/main/scala/kafka/server/ReplicaManager.scala#L1218
> > > > > > >
> > > > > > > Cheers,
> > > > > > > Jorge.
> > > > > > >
> > > > > > > On Tue, 7 Nov 2023 at 17:06, Qichao Chu
> <qic...@uber.com.invalid
> > >
> > > > > wrote:
> > > > > > >
> > > > > > > > Hi Divij,
> > > > > > > >
> > > > > > > > It would be very nice if you could take a look at the recent
> > > > changes,
> > > > > > > thank
> > > > > > > > you!
> > > > > > > > If there's no more required changes, shall we move to vote
> > stage?
> > > > > > > >
> > > > > > > > Best,
> > > > > > > > Qichao Chu
> > > > > > > > Software Engineer | Data - Kafka
> > > > > > > > [image: Uber] <https://uber.com/>
> > > > > > > >
> > > > > > > >
> > > > > > > > On Thu, Nov 2, 2023 at 12:06 AM Qichao Chu <qic...@uber.com>
> > > > wrote:
> > > > > > > >
> > > > > > > > > Hi Divij,
> > > > > > > > >
> > > > > > > > > Thank you for the very quick response and the nice
> > > suggestions. I
> > > > > > have
> > > > > > > > > updated the KIP with the following thoughts.
> > > > > > > > >
> > > > > > > > > 1. I checked the Java documentation and it seems the regex
> > > engine
> > > > > in
> > > > > > > > utils
> > > > > > > > > <
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html
> > > > > > > >
> > > > > > > > is
> > > > > > > > > not 100% compatible with PCRE, though it is very close. I
> > > stated
> > > > > > > > > the Java implementation as the requirement since we are
> most
> > > > likely
> > > > > > to
> > > > > > > > > target a JVM language.
> > > > > > > > > 2. Agreed with the filter limitation. For now, let's keep
> it
> > > > topic
> > > > > > > only.
> > > > > > > > > With that in mind, I feel we do have cases where a user
> wants
> > > to
> > > > > list
> > > > > > > > many
> > > > > > > > > topics. Although regex is also possible, an array will make
> > > > things
> > > > > > > > faster.
> > > > > > > > > This makes me add two options for the topic filter.
> > > > > > > > > 3. It seems not many configs are using JSON, this was the
> > > > intention
> > > > > > for
> > > > > > > > me
> > > > > > > > > to use a compound string. However since JSON is used widely
> > in
> > > > the
> > > > > > > > project,
> > > > > > > > > and given the benefits you mentioned earlier, I tried to
> make
> > > the
> > > > > > > config
> > > > > > > > a
> > > > > > > > > JSON array. The change is to make it compatible with
> > > multi-level
> > > > > > > > settings.
> > > > > > > > >
> > > > > > > > > Let me know what you think. Many thanks!
> > > > > > > > >
> > > > > > > > > Best,
> > > > > > > > > Qichao Chu
> > > > > > > > > Software Engineer | Data - Kafka
> > > > > > > > > [image: Uber] <https://uber.com/>
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On Wed, Nov 1, 2023 at 9:43 PM Divij Vaidya <
> > > > > divijvaidy...@gmail.com
> > > > > > >
> > > > > > > > > wrote:
> > > > > > > > >
> > > > > > > > >> Thank you for making the changes Qichao.
> > > > > > > > >>
> > > > > > > > >> We are now entering in the territory of defining a
> > declarative
> > > > > > schema
> > > > > > > > for
> > > > > > > > >> filters. In the new input format, the type is string but
> we
> > > are
> > > > > > > > imposing a
> > > > > > > > >> schema for the string and we should clearly call out the
> > > schema.
> > > > > You
> > > > > > > can
> > > > > > > > >> perhaps choose to adopt a schema such as below:
> > > > > > > > >>
> > > > > > > > >> metricLevel = High | Low (default: Low)
> > > > > > > > >> metricNameRegEx = regEx (default: .*)
> > > > > > > > >> nameOfDimension = string
> > > > > > > > >> dimensionRegEx = regEx
> > > > > > > > >> dimensionFilter = [<nameOfDimension>=<dimensionRegEx>]
> > > (default:
> > > > > [])
> > > > > > > > >>
> > > > > > > > >> Final Value schema = "level"=$metricLevel,
> > > > > "name"=$metricNameRegEx,
> > > > > > > > >> $dimensionFilter
> > > > > > > > >>
> > > > > > > > >> Further we need to answer questions such as :
> > > > > > > > >> 1. which regEx format do we support (it should probably be
> > > > > > > > Perl-compatible
> > > > > > > > >> regular expressions (PCRE) because Java's regEx is
> > compatible
> > > > with
> > > > > > it)
> > > > > > > > >> 2. should we restrict the dimensionFilter to at max
> length 1
> > > and
> > > > > > value
> > > > > > > > >> "topic" only for now. Later when we want to expand, we can
> > > > expand
> > > > > > > > filters
> > > > > > > > >> for other dimensions as well such as partitions.
> > > > > > > > >> 3. if we are coming up with our stringified-schema, why
> not
> > > use
> > > > > > json?
> > > > > > > It
> > > > > > > > >> would save us from building a parsing utility for the
> > schema.
> > > (I
> > > > > > like
> > > > > > > it
> > > > > > > > >> in
> > > > > > > > >> its current format but there is a case to be made for json
> > as
> > > > > well)
> > > > > > > > >> 4. what happens when there are contradictory regEx rules,
> > > e.g. a
> > > > > > topic
> > > > > > > > >> defined in high as well as low. It is generally solved by
> > > > defining
> > > > > > > > >> precedence. In our case, we can choose that high has more
> > > > > precedence
> > > > > > > > than
> > > > > > > > >> low.
> > > > > > > > >>
> > > > > > > > >> What do you think?
> > > > > > > > >>
> > > > > > > > >> --
> > > > > > > > >> Divij Vaidya
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >>
> > > > > > > > >> On Wed, Nov 1, 2023 at 2:07 PM Qichao Chu
> > > > <qic...@uber.com.invalid
> > > > > >
> > > > > > > > >> wrote:
> > > > > > > > >>
> > > > > > > > >> > Hi Divij,
> > > > > > > > >> >
> > > > > > > > >> > Thank you for the review and the great suggestions,
> > again. I
> > > > > have
> > > > > > > > >> updated
> > > > > > > > >> > the corresponding content, can you take another look?
> > > > > > > > >> > Regarding the KIP-544 style regex, I have added it to
> the
> > > new
> > > > > > > property
> > > > > > > > >> too.
> > > > > > > > >> > It's expanded to include multiple sections for better
> > future
> > > > > > > > extension.
> > > > > > > > >> >
> > > > > > > > >> > Best,
> > > > > > > > >> > Qichao Chu
> > > > > > > > >> > Software Engineer | Data - Kafka
> > > > > > > > >> > [image: Uber] <https://uber.com/>
> > > > > > > > >> >
> > > > > > > > >> >
> > > > > > > > >> > On Mon, Oct 30, 2023 at 6:26 PM Divij Vaidya <
> > > > > > > divijvaidy...@gmail.com
> > > > > > > > >
> > > > > > > > >> > wrote:
> > > > > > > > >> >
> > > > > > > > >> > > Hey *Qichao*
> > > > > > > > >> > >
> > > > > > > > >> > > Thank you for the update on the KIP. I like the idea
> of
> > > > > > > incremental
> > > > > > > > >> > > delivery and adding which metrics support this
> verbosity
> > > as
> > > > a
> > > > > > > later
> > > > > > > > >> KIP.
> > > > > > > > >> > > But I also want to ensure that we wouldn't have to
> > change
> > > > the
> > > > > > > > current
> > > > > > > > >> > > config when adding that in future. Hence, we need some
> > > > > > discussion
> > > > > > > on
> > > > > > > > >> it
> > > > > > > > >> > in
> > > > > > > > >> > > the scope of the KIP.
> > > > > > > > >> > >
> > > > > > > > >> > > About the dynamic configuration:
> > > > > > > > >> > > Do we need to add the "default" mode? I am asking
> > because
> > > it
> > > > > may
> > > > > > > > >> inhibit
> > > > > > > > >> > us
> > > > > > > > >> > > from adding the allowList option in future. Instead if
> > we
> > > > > could
> > > > > > > > >> rephrase
> > > > > > > > >> > > the config as: "metric.verbosity.high" which takes
> > values
> > > > as a
> > > > > > > regEx
> > > > > > > > >> > > (default will be empty), then we wouldn't have to
> worry
> > > > about
> > > > > > > > >> > > future-proofness of this KIP. Notably this is an
> > existing
> > > > > > pattern
> > > > > > > > >> used by
> > > > > > > > >> > > KIP-544.
> > > > > > > > >> > > Alternatively, if you choose to stick to the current
> > > > > > configuration
> > > > > > > > >> > pattern,
> > > > > > > > >> > > please provide information on how this config will
> look
> > > like
> > > > > > when
> > > > > > > we
> > > > > > > > >> add
> > > > > > > > >> > > allow listing in future.
> > > > > > > > >> > >
> > > > > > > > >> > > About the perf test:
> > > > > > > > >> > > Motivation - The motivation of perf test is to provide
> > > users
> > > > > > with
> > > > > > > a
> > > > > > > > >> hint
> > > > > > > > >> > on
> > > > > > > > >> > > what perf penalty they can expect and whether default
> > has
> > > > > > degraded
> > > > > > > > >> perf
> > > > > > > > >> > > (due to additional "empty" labels).
> > > > > > > > >> > > Dimensions of the test could be - scrape interval,
> > > > utilization
> > > > > > of
> > > > > > > > >> broker
> > > > > > > > >> > > (no traffic vs. heavy traffic), number of partitions
> > > > > (small/200
> > > > > > to
> > > > > > > > >> > > large/2k).
> > > > > > > > >> > > Things to collect during perf test - number of mbeans
> > > > > registered
> > > > > > > > with
> > > > > > > > >> > JMX,
> > > > > > > > >> > > CPU, heap utilization
> > > > > > > > >> > > Expected results - As long as we can prove that there
> is
> > > no
> > > > > > > > additional
> > > > > > > > >> > > usage (significant) of CPU or heap after this change
> for
> > > the
> > > > > > > > "default
> > > > > > > > >> > > mode", we should be good. For the "high" mode, we
> should
> > > > > > document
> > > > > > > > the
> > > > > > > > >> > > expected increase for users but it is not a blocker to
> > > > > implement
> > > > > > > > this
> > > > > > > > >> > KIP.
> > > > > > > > >> > >
> > > > > > > > >> > >
> > > > > > > > >> > > *Kirk*, I have tried to clarify the expectation on
> > > > > performance,
> > > > > > > does
> > > > > > > > >> that
> > > > > > > > >> > > address your question earlier? Also, I am happy with
> > > having
> > > > a
> > > > > > > Kafka
> > > > > > > > >> level
> > > > > > > > >> > > dynamic config that we can use to filter our
> > > > > > metric/dimensionality
> > > > > > > > >> since
> > > > > > > > >> > we
> > > > > > > > >> > > have a precedence at KIP-544. Hence, my suggestion to
> > push
> > > > > this
> > > > > > > > >> filtering
> > > > > > > > >> > > to metric library can be ignored.
> > > > > > > > >> > >
> > > > > > > > >> > > --
> > > > > > > > >> > > Divij Vaidya
> > > > > > > > >> > >
> > > > > > > > >> > >
> > > > > > > > >> > >
> > > > > > > > >> > > On Sat, Oct 28, 2023 at 11:37 AM Qichao Chu
> > > > > > > <qic...@uber.com.invalid
> > > > > > > > >
> > > > > > > > >> > > wrote:
> > > > > > > > >> > >
> > > > > > > > >> > > > Hello Everyone,
> > > > > > > > >> > > >
> > > > > > > > >> > > > Can I ask for some feedback regarding KIP-977
> > > > > > > > >> > > > <
> > > > > > > > >> > > >
> > > > > > > > >> > >
> > > > > > > > >> >
> > > > > > > > >>
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-977%3A+Partition-Level+Throughput+Metrics
> > > > > > > > >> > > > >
> > > > > > > > >> > > > ?
> > > > > > > > >> > > >
> > > > > > > > >> > > > Best,
> > > > > > > > >> > > > Qichao Chu
> > > > > > > > >> > > > Software Engineer | Data - Kafka
> > > > > > > > >> > > > [image: Uber] <https://uber.com/>
> > > > > > > > >> > > >
> > > > > > > > >> > > >
> > > > > > > > >> > > > On Mon, Oct 16, 2023 at 7:34 PM Qichao Chu <
> > > > qic...@uber.com
> > > > > >
> > > > > > > > wrote:
> > > > > > > > >> > > >
> > > > > > > > >> > > > > Hi Divij and Kirk,
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > Thank you both for providing the valuable feedback
> > and
> > > > > sorry
> > > > > > > for
> > > > > > > > >> the
> > > > > > > > >> > > > > delay. I have just updated the KIP to address the
> > > > > comments.
> > > > > > > > >> > > > >
> > > > > > > > >> > > > >    1. Instead of using a topic-level control,
> global
> > > > > > verbosity
> > > > > > > > >> > control
> > > > > > > > >> > > > >    makes more sense if we want to extend it in the
> > > > future.
> > > > > > It
> > > > > > > > >> would
> > > > > > > > >> > be
> > > > > > > > >> > > > very
> > > > > > > > >> > > > >    difficult if we want to apply the topic
> allowlist
> > > > > > > everywhere
> > > > > > > > >> > > > >    2. Also, the topic allowlist was not dynamic
> > which
> > > > > makes
> > > > > > > > >> > everything
> > > > > > > > >> > > > >    quite complex, especially for the topic
> lifecycle
> > > > > > > management.
> > > > > > > > >> By
> > > > > > > > >> > > > using the
> > > > > > > > >> > > > >    dynamic global config, debugging could be
> easier,
> > > and
> > > > > > > > >> management
> > > > > > > > >> > of
> > > > > > > > >> > > > the
> > > > > > > > >> > > > >    config is also made easier.
> > > > > > > > >> > > > >    3. More details are included in the test
> section.
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > One thing that still misses is the performance
> > > numbers.
> > > > I
> > > > > > will
> > > > > > > > >> get it
> > > > > > > > >> > > > > ready with our internal clusters and share out
> soon.
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > Many thanks for the review!
> > > > > > > > >> > > > > Qichao
> > > > > > > > >> > > > >
> > > > > > > > >> > > > > On Tue, Sep 12, 2023 at 8:31 AM Kirk True <
> > > > > > k...@kirktrue.pro>
> > > > > > > > >> wrote:
> > > > > > > > >> > > > >
> > > > > > > > >> > > > >> Oh, and does
> > metrics.partition.level.reporting.topics
> > > > > allow
> > > > > > > for
> > > > > > > > >> > regex?
> > > > > > > > >> > > > >>
> > > > > > > > >> > > > >> > On Sep 12, 2023, at 8:26 AM, Kirk True <
> > > > > > k...@kirktrue.pro>
> > > > > > > > >> wrote:
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> > Hi Qichao,
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> > Thanks for the KIP!
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> > Divij—questions/comments inline...
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> >> On Sep 11, 2023, at 4:32 AM, Divij Vaidya <
> > > > > > > > >> > divijvaidy...@gmail.com
> > > > > > > > >> > > >
> > > > > > > > >> > > > >> wrote:
> > > > > > > > >> > > > >> >>
> > > > > > > > >> > > > >> >> Thank you for the proposal Qichao.
> > > > > > > > >> > > > >> >>
> > > > > > > > >> > > > >> >> I agree with the motivation here and
> understand
> > > the
> > > > > > > tradeoff
> > > > > > > > >> here
> > > > > > > > >> > > > >> >> between observability vs. increased metric
> > > > dimensions
> > > > > > > > (metric
> > > > > > > > >> > > fan-out
> > > > > > > > >> > > > >> >> as you say in the KIP).
> > > > > > > > >> > > > >> >>
> > > > > > > > >> > > > >> >> High level comments:
> > > > > > > > >> > > > >> >>
> > > > > > > > >> > > > >> >> 1. I would urge you to consider the
> > extensibility
> > > of
> > > > > the
> > > > > > > > >> proposal
> > > > > > > > >> > > for
> > > > > > > > >> > > > >> >> other types of metrics. Tomorrow, if we want
> to
> > > > > > > selectively
> > > > > > > > >> add
> > > > > > > > >> > > > >> >> "partition" dimension to another metric, would
> > we
> > > > have
> > > > > > to
> > > > > > > > >> modify
> > > > > > > > >> > > the
> > > > > > > > >> > > > >> >> code where each metric is emitted?
> > Alternatively,
> > > > > could
> > > > > > we
> > > > > > > > >> > abstract
> > > > > > > > >> > > > >> >> out this config in a "Kafka Metrics" library.
> > The
> > > > code
> > > > > > > > >> provides
> > > > > > > > >> > all
> > > > > > > > >> > > > >> >> information about this library and this
> library
> > > can
> > > > > > choose
> > > > > > > > >> which
> > > > > > > > >> > > > >> >> dimensions it wants to add to the final
> metrics
> > > that
> > > > > are
> > > > > > > > >> emitted
> > > > > > > > >> > > > based
> > > > > > > > >> > > > >> >> on declarative configuration.
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> > I’d agree with this if it doesn’t place a
> burden
> > on
> > > > the
> > > > > > > > >> callers.
> > > > > > > > >> > Are
> > > > > > > > >> > > > >> there any potential call sites that don’t have
> the
> > > > > > partition
> > > > > > > > >> > > information
> > > > > > > > >> > > > >> readily available?
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> >> 2. Can we offload the handling of this
> dimension
> > > > > > filtering
> > > > > > > > to
> > > > > > > > >> the
> > > > > > > > >> > > > >> >> metric framework? Have you explored whether
> > > > prometheus
> > > > > > or
> > > > > > > > >> other
> > > > > > > > >> > > > >> >> libraries provide the ability to dynamically
> > > change
> > > > > > > > dimensions
> > > > > > > > >> > > > >> >> associated with metrics?
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> > I’m not familiar with the downstream metrics
> > > > providers’
> > > > > > > > >> > > capabilities.
> > > > > > > > >> > > > >> This is a greatest common denominator scenario,
> > > right?
> > > > > We’d
> > > > > > > > have
> > > > > > > > >> to
> > > > > > > > >> > be
> > > > > > > > >> > > > >> reasonable sure that the heavily used providers
> > *all*
> > > > > > support
> > > > > > > > >> such
> > > > > > > > >> > > > dynamic
> > > > > > > > >> > > > >> filtering.
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> > Also—and correct me as needed as I’m not
> familiar
> > > > with
> > > > > > the
> > > > > > > > >> area—if
> > > > > > > > >> > > we
> > > > > > > > >> > > > >> relegate partition filtering to a lower layer,
> we’d
> > > > still
> > > > > > > need
> > > > > > > > to
> > > > > > > > >> > > store
> > > > > > > > >> > > > the
> > > > > > > > >> > > > >> metric data in memory until it’s flushed, yes? If
> > so,
> > > > is
> > > > > > that
> > > > > > > > >> > overhead
> > > > > > > > >> > > > of
> > > > > > > > >> > > > >> any concern?
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> >> Implementation level comments:
> > > > > > > > >> > > > >> >>
> > > > > > > > >> > > > >> >> 1. In the test plan section, please mention
> what
> > > > kind
> > > > > of
> > > > > > > > integ
> > > > > > > > >> > > and/or
> > > > > > > > >> > > > >> >> unit tests will be added and what they will
> > > assert.
> > > > As
> > > > > > an
> > > > > > > > >> > example,
> > > > > > > > >> > > > you
> > > > > > > > >> > > > >> >> can add a section, "functionality tests",
> which
> > > > would
> > > > > > > assert
> > > > > > > > >> that
> > > > > > > > >> > > new
> > > > > > > > >> > > > >> >> metric config is being respected and another
> > > > section,
> > > > > > > > >> > "performance
> > > > > > > > >> > > > >> >> tests", which could be a system test and
> assert
> > > that
> > > > > no
> > > > > > > > >> > regression
> > > > > > > > >> > > > >> >> caused wrt resources occupied by metrics from
> > one
> > > > > > version
> > > > > > > to
> > > > > > > > >> > > another.
> > > > > > > > >> > > > >> >> 2. Please mention why or why not are we
> > > considering
> > > > > > > > >> dynamically
> > > > > > > > >> > > > >> >> setting the configuration (i.e. without a
> broker
> > > > > > > restart)? I
> > > > > > > > >> > would
> > > > > > > > >> > > > >> >> imagine that the ability to dynamically
> > configure
> > > > for
> > > > > a
> > > > > > > > >> specific
> > > > > > > > >> > > > topic
> > > > > > > > >> > > > >> >> will be very useful especially to debug
> > production
> > > > > > > > situations
> > > > > > > > >> > that
> > > > > > > > >> > > > you
> > > > > > > > >> > > > >> >> mention in the motivation.
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> > +1
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> >> 3. You mention that we want to start with
> > metrics
> > > > > > closely
> > > > > > > > >> related
> > > > > > > > >> > > to
> > > > > > > > >> > > > >> >> producer & consumers first, which is fair.
> Could
> > > you
> > > > > > > please
> > > > > > > > >> add a
> > > > > > > > >> > > > >> >> statement on the work required to extend this
> to
> > > > other
> > > > > > > > >> metrics in
> > > > > > > > >> > > > >> >> future?
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> > +1
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> >> 4. In the compatibility section, you mention
> > that
> > > > this
> > > > > > > > change
> > > > > > > > >> is
> > > > > > > > >> > > > >> >> backward compatible. I don't fully understand
> > > that.
> > > > > > > During a
> > > > > > > > >> > > version
> > > > > > > > >> > > > >> >> upgrade, we will start with an empty list of
> > > topics
> > > > to
> > > > > > > > >> maintain
> > > > > > > > >> > > > >> >> backward compatibility. I assume after the
> > > upgrade,
> > > > we
> > > > > > > will
> > > > > > > > >> > update
> > > > > > > > >> > > > the
> > > > > > > > >> > > > >> >> new config with topic names that we desire to
> > > > monitor.
> > > > > > But
> > > > > > > > >> > updating
> > > > > > > > >> > > > >> >> the config will require a broker restart (a
> > > rolling
> > > > > > > restart
> > > > > > > > >> since
> > > > > > > > >> > > > >> >> config is read-only). We will be in a
> situation
> > > > where
> > > > > > some
> > > > > > > > >> > brokers
> > > > > > > > >> > > > are
> > > > > > > > >> > > > >> >> sending metrics with a new "partition"
> dimension
> > > and
> > > > > > some
> > > > > > > > >> brokers
> > > > > > > > >> > > are
> > > > > > > > >> > > > >> >> sending metrics with no partition dimension.
> Is
> > > that
> > > > > > > > >> acceptable
> > > > > > > > >> > to
> > > > > > > > >> > > > JMX
> > > > > > > > >> > > > >> >> / prometheus collectors? Would it break them?
> > > Please
> > > > > > > clarify
> > > > > > > > >> how
> > > > > > > > >> > > > >> >> upgrades will work in the compatibility
> section.
> > > > > > > > >> > > > >> >> 5. Could you please quantify (with an
> > experiment)
> > > > the
> > > > > > > > expected
> > > > > > > > >> > perf
> > > > > > > > >> > > > >> >> impact of adding the partition dimension? This
> > > could
> > > > > be
> > > > > > > done
> > > > > > > > >> as
> > > > > > > > >> > > part
> > > > > > > > >> > > > >> >> of "test plan" section and would serve as a
> data
> > > > point
> > > > > > for
> > > > > > > > >> users
> > > > > > > > >> > to
> > > > > > > > >> > > > >> >> understand the potential impact if they decide
> > to
> > > > turn
> > > > > > it
> > > > > > > > on.
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> > Is there some guidance on the level of
> precision
> > > and
> > > > > > detail
> > > > > > > > >> > expected
> > > > > > > > >> > > > >> when providing the performance numbers in the
> KIP?
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> > This notion of proving out the performance
> impact
> > > is
> > > > > > > > >> important, I
> > > > > > > > >> > > > >> agree. Anecdotally, there was another KIP I was
> > > > following
> > > > > > for
> > > > > > > > >> which
> > > > > > > > >> > > > >> performance numbers were requested, as is
> > reasonable.
> > > > But
> > > > > > > that
> > > > > > > > >> > caused
> > > > > > > > >> > > > the
> > > > > > > > >> > > > >> KIP to go a bit sideways as a result because it
> > > wasn’t
> > > > > able
> > > > > > > to
> > > > > > > > >> get
> > > > > > > > >> > > > >> consensus on a) the different scenarios to test,
> > and
> > > b)
> > > > > the
> > > > > > > > >> > > quantitative
> > > > > > > > >> > > > >> goal for each. I’m not really sure the rigo(u)r
> > > that’s
> > > > > > > expected
> > > > > > > > >> at
> > > > > > > > >> > > this
> > > > > > > > >> > > > >> stage in the development of a new feature.
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> > Thanks,
> > > > > > > > >> > > > >> > Kirk
> > > > > > > > >> > > > >> >
> > > > > > > > >> > > > >> >>
> > > > > > > > >> > > > >> >> --
> > > > > > > > >> > > > >> >> Divij Vaidya
> > > > > > > > >> > > > >> >>
> > > > > > > > >> > > > >> >>
> > > > > > > > >> > > > >> >> On Sat, Sep 9, 2023 at 8:18 PM Qichao Chu
> > > > > > > > >> > <qic...@uber.com.invalid
> > > > > > > > >> > > >
> > > > > > > > >> > > > >> wrote:
> > > > > > > > >> > > > >> >>>
> > > > > > > > >> > > > >> >>> Hi All,
> > > > > > > > >> > > > >> >>>
> > > > > > > > >> > > > >> >>> Although this has been discussed many times,
> I
> > > > would
> > > > > > like
> > > > > > > > to
> > > > > > > > >> > > start a
> > > > > > > > >> > > > >> new
> > > > > > > > >> > > > >> >>> discussion regarding the introduction of
> > > > > > partition-level
> > > > > > > > >> > > throughput
> > > > > > > > >> > > > >> >>> metrics. Please review the KIP and I'm eager
> to
> > > > know
> > > > > > > > >> everyone's
> > > > > > > > >> > > > >> thoughts:
> > > > > > > > >> > > > >> >>>
> > > > > > > > >> > > > >>
> > > > > > > > >> > > >
> > > > > > > > >> > >
> > > > > > > > >> >
> > > > > > > > >>
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-977%3A+Partition-Level+Throughput+Metrics
> > > > > > > > >> > > > >> >>>
> > > > > > > > >> > > > >> >>> TL;DR: The KIP proposes to add
> partition-level
> > > > > > throughput
> > > > > > > > >> > metrics
> > > > > > > > >> > > > and
> > > > > > > > >> > > > >> a new
> > > > > > > > >> > > > >> >>> configuration to control the fan-out rate.
> > > > > > > > >> > > > >> >>>
> > > > > > > > >> > > > >> >>> Thank you all for the review and have a nice
> > > > weekend!
> > > > > > > > >> > > > >> >>>
> > > > > > > > >> > > > >> >>> Best,
> > > > > > > > >> > > > >> >>> Qichao
> > > > > > > > >> > > > >>
> > > > > > > > >> > > > >>
> > > > > > > > >> > > >
> > > > > > > > >> > >
> > > > > > > > >> >
> > > > > > > > >>
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to