Uploaded image for project: 'AMQ Broker'
  1. AMQ Broker
  2. ENTMQBR-8909

[Docs]Provide a convenient means of filtering addresses for metrics reporting

XMLWordPrintable

    • Icon: Story Story
    • Resolution: Done
    • Icon: Undefined Undefined
    • None
    • None
    • documentation
    • None

      With the fix for ENTMQBR-7513 we now have a means of cleaning up short-lived "temporary" addresses created by MQTT publishers (that feed into one or more matching wildcard addresses).

      This fix introduces a new issue; however. If metrics collection is enabled for the broker, there is no convenient way to filter these short-lived addresses. This makes it potentially difficult to set up monitoring and alerting without capturing potential garbage data.

      Imagine a scenario like this one, where we have 1000 short-lived producers publishing to numbered topics, with names like "Topic.Test.0"..."Topic.Test.999" and a single consumer consuming from matching wildcard address "Topic.Test.*".

      The only way to filter metrics to avoid publishing data for the short-lived addresses is to create a cumbersome set of address-settings, with enable-metrics set to false for each possible match for the short-lived addresses. Something like:

               <address-setting match="Topic.Test.0*">
                  <dead-letter-address>DLQ</dead-letter-address>
                  <expiry-address>ExpiryQueue</expiry-address>
                  <redelivery-delay>0</redelivery-delay>
                  <max-size-bytes>-1</max-size-bytes>
                  <max-size-messages>-1</max-size-messages>
                  <page-size-bytes>10M</page-size-bytes>
                  <max-read-page-messages>-1</max-read-page-messages>
                  <max-read-page-bytes>20M</max-read-page-bytes>
                  <message-counter-history-day-limit>10</message-counter-history-day-limit>
                  <address-full-policy>PAGE</address-full-policy>
                  <auto-create-queues>true</auto-create-queues>
                  <auto-create-addresses>true</auto-create-addresses>
                  <auto-delete-queues>false</auto-delete-queues>
                  <auto-delete-addresses>false</auto-delete-addresses>
                  <enable-metrics>false</enable-metrics>
               </address-setting>
      ...
               <address-setting match="Topic.Test.9*">
                  <dead-letter-address>DLQ</dead-letter-address>
                  <expiry-address>ExpiryQueue</expiry-address>
                  <redelivery-delay>0</redelivery-delay>
                  <max-size-bytes>-1</max-size-bytes>
                  <max-size-messages>-1</max-size-messages>
                  <page-size-bytes>10M</page-size-bytes>
                  <max-read-page-messages>-1</max-read-page-messages>
                  <max-read-page-bytes>20M</max-read-page-bytes>
                  <message-counter-history-day-limit>10</message-counter-history-day-limit>
                  <address-full-policy>PAGE</address-full-policy>
                  <auto-create-queues>true</auto-create-queues>
                  <auto-create-addresses>true</auto-create-addresses>
                  <auto-delete-queues>false</auto-delete-queues>
                  <auto-delete-addresses>false</auto-delete-addresses>
                  <enable-metrics>false</enable-metrics>
               </address-setting>
      ...
               <address-setting match="Topic.Test.0">
                  <dead-letter-address>DLQ</dead-letter-address>
                  <expiry-address>ExpiryQueue</expiry-address>
                  <redelivery-delay>0</redelivery-delay>
                  <max-size-bytes>-1</max-size-bytes>
                  <max-size-messages>-1</max-size-messages>
                  <page-size-bytes>10M</page-size-bytes>
                  <max-read-page-messages>-1</max-read-page-messages>
                  <max-read-page-bytes>20M</max-read-page-bytes>
                  <message-counter-history-day-limit>10</message-counter-history-day-limit>
                  <address-full-policy>PAGE</address-full-policy>
                  <auto-create-queues>true</auto-create-queues>
                  <auto-create-addresses>true</auto-create-addresses>
                  <auto-delete-queues>false</auto-delete-queues>
                  <auto-delete-addresses>false</auto-delete-addresses>
                  <enable-metrics>false</enable-metrics>
               </address-setting>
      ...
               <address-setting match="Topic.Test.9">
                  <dead-letter-address>DLQ</dead-letter-address>
                  <expiry-address>ExpiryQueue</expiry-address>
                  <redelivery-delay>0</redelivery-delay>
                  <max-size-bytes>-1</max-size-bytes>
                  <max-size-messages>-1</max-size-messages>
                  <page-size-bytes>10M</page-size-bytes>
                  <max-read-page-messages>-1</max-read-page-messages>
                  <max-read-page-bytes>20M</max-read-page-bytes>
                  <message-counter-history-day-limit>10</message-counter-history-day-limit>
                  <address-full-policy>PAGE</address-full-policy>
                  <auto-create-queues>true</auto-create-queues>
                  <auto-create-addresses>true</auto-create-addresses>
                  <auto-delete-queues>false</auto-delete-queues>
                  <auto-delete-addresses>false</auto-delete-addresses>
                  <enable-metrics>false</enable-metrics>
               </address-setting>
      

      This is cumbersome, error-prone, and may not work with all possible address patterns in scenarios like this one.

      An alternative might be to develop some way of treating wildcards as string literals for the purpose of metrics enablement, or providing separate configuration options for the metrics plugin that allows for filtering unwanted addresses.

            jcliffor@redhat.com John Clifford
            rhn-support-dhawkins Duane Hawkins
            Michal Toth Michal Toth
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: