Jijo John
Jijo John

Reputation: 69

Regex pattern for Prometheus exporter

I am trying to create a regex pattern for one of the prometheus exporter (jmx exporter) configuration file to export weblogic jms queues.

My String is as below

(com.bea<ServerRuntime=AC_Server-10-100-40-122, Name=iLoyalJMSModule!AC_JMSServer@AC_Server-10-100-40-122@com.ibsplc.iloyal.eai.EN.retro.outErrorqueue, Type=JMSDestinationRuntime, JMSServerRuntime=AC_JMSServer@AC_Server-10-100-40-122><>MessagesCurrentCount)

And the RegEx is as below

Pattern

com.bea<ServerRuntime=(.+), Name=(.+), Type=(.+), JMSServerRuntime=(.+)<>(MessagesCurrentCount|MessagesPendingCount)

Name to display in Prometheus exporter output

name: "weblogic_jmsserver_$1_$5"

Current Output

weblogic_jmsserver_ac_server_10_100_40_122_messagescurrentcount

Now i would like to add the queue outErrorqueue name to my output from the Name= string and the final output should be like below.

Required Output

weblogic_jmsserver_ac_server_10_100_40_122_outErrorqueue_messagespendingcount

Upvotes: 1

Views: 961

Answers (1)

The fourth bird
The fourth bird

Reputation: 163332

You could change the number of capture groups from 5 to the 2 that you need in the replacement. Instead of using .+, you can either use .*? or use a negated character class to match any char except a commen [^,]+

If the surrounding parenthesis of the example data should not be part of the replacement, you can use:

\(com\.bea<ServerRuntime=([^,]+), Name=[^,]+, Type=[^,]+, JMSServerRuntime=.+?<>(Messages(?:Current|Pending)Count)\)

In the replacement use:

weblogic_jmsserver_$1_outErrorqueue_$2

See a regex demo

Upvotes: 1

Related Questions