Uploaded image for project: 'Debezium'
  1. Debezium
  2. DBZ-8359

RowsScanned JMX metric for MongoDB differs from relational connectors

XMLWordPrintable

      Hi team. Thank you so much for this wonderful software.

      We're running mysql and mongodb connectors in prod. We're using 'RowsScanned' metric in both cases and we realized that in case of mongodb connector, 'RowsScanned' metric type is 'java.util.Map', and for mysql connector (and postgres as well) it's 'javax.management.openmbean.TabularData'.
      It's problematic, because of jmx-exporter (which is part of debezium-examples and looks like a go-to tool for exposing jmx metrics from debezium) that doesn't handle 'java.util.Map' metrics - such metrics are skipped (see this issue in jmx-exporter) and in result 'RowsScanned' is not scraped by prometheus as it's not exposed at all by jmx-exporter.
      On the other hand 'javax.management.openmbean.TabularData' is handled by jmx-exporter without any issues, and mysql/postgres connectors expose 'RowsScanned' just fine.

      It would be good to align connectors to expose 'RowsScanned' metric with the same type, preferably 'javax.management.openmbean.TabularData' as it's supported already by jmx-exporter

      Screenshot from JConsole attached - it shows mongodb and mysql connectors and the type difference in 'RowsScanned' metric.

      Issue is reproducible using debezium-tutorial with JMX enabled or with `ENABLE_JOLOKIA: true` set, and then all MBeans are accessible via http://localhost:8778/jolokia/list by default

      Bug report

      For bug reports, provide this information, please:

      What Debezium connector do you use and what version?

      2.4.2.Final, 2.7.3.Final, 3.0.1.Final

      What is the connector configuration?

      The same as in https://github.com/debezium/debezium-examples/tree/main/tutorial  

      What is the captured database version and mode of deployment?

      The same as in https://github.com/debezium/debezium-examples/tree/main/tutorial  

      What behavior do you expect?

      To both mongodb and mysql connector to expose 'RowsScanned' metric as the same type, preferably 'javax.management.openmbean.TabularData'

      What behavior do you see?

      Mongodb connector exposes 'RowsScanned' metric as 'java.util.Map', and mysql connector exposes 'RowsScanned' metric as 'javax.management.openmbean.TabularData'

      Do you see the same behaviour using the latest released Debezium version?

      (Ideally, also verify with latest Alpha/Beta/CR version)

      yes, in 3.0.1.Final

      Do you have the connector logs, ideally from start till finish?

      (You might be asked later to provide DEBUG/TRACE level log)

      <Your answer>

      How to reproduce the issue using our tutorial deployment?

      run connect image with
      ENABLE_JOLOKIA: true
       
      create mongodb and mysql connector, then compare 'RowsScanned' metric type in jolokia, using http://localhost:8778/jolokia/list endpoint

        1. image-2024-10-28-16-29-19-304.png
          1.33 MB
          Michal Fijolek
        2. image-2024-10-28-16-33-49-567.png
          48 kB
          Michal Fijolek
        3. image-2024-10-28-16-33-56-035.png
          58 kB
          Michal Fijolek

              Unassigned Unassigned
              michal.fijolek.yotpo Michal Fijolek
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: