Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

AEM + Prometheus JMX Exporter

anands82757572
Level 2
Level 2

Does anyone have experience integrating AEM with Prometheus JMX Exporter (GitHub - prometheus/jmx_exporter: A process for exposing JMX Beans via HTTP for Prometheus consumpti...

I am trying to setup a monitoring/alerting system in place for some of the key metrics such as replication queues etc.

1 Accepted Solution
wimsymons
Correct answer by
Level 4
Level 4

Yes I do. Quite easy actually. Just use the java agent and put the required java startup parameters in your CQ_JVM_OPTS environment variable before starting AEM.

Be be sure to whitelist only the beans you need. By default all JMX beans are monitored and in AEM that is quite a lot.

View solution in original post

7 Replies
wimsymons
Correct answer by
Level 4
Level 4

Yes I do. Quite easy actually. Just use the java agent and put the required java startup parameters in your CQ_JVM_OPTS environment variable before starting AEM.

Be be sure to whitelist only the beans you need. By default all JMX beans are monitored and in AEM that is quite a lot.

View solution in original post

chads14984109
Level 1
Level 1

I have been trying to get this too work with the jmx_prometheus_httpserver-0.3.1-jar-with-dependencies.jar jar file, but it trows a bunch of errors in the logs.

*WARN* [RMI TCP Connection(175)-<IP Address>] org.apache.jackrabbit.oak.jcr.session.RefreshStrategy This session has been idle for 4 minutes and might be out of date. Consider using a fresh session or explicitly refresh the session.

java.lang.Exception: The session was created here:

Do you know why this is happening?  Can you provide a sample on how to use the java agent with AEM?

wimsymons
Level 4
Level 4

Some JMX beans in AEM don't properly close their JCR session, which causes the errors you see.

I opened some Daycare issues to report that.

Best is to whitelist only the JMX beans you want to extract data from (depends on your monitoring needs).

Download the prometheus Java agent jar as described on GitHub - prometheus/jmx_exporter: A process for exposing JMX Beans via HTTP for Prometheus consumpt... and copy it into /usr/local/bin/jmx_prometheus_javaagent.jar

Edit the file crx-quickstart/bin/start-env and add following line:

JVM_OPTS='-javaagent:/usr/local/bin/jmx_prometheus_javaagent.jar=9242:/etc/prometheus/jmx-exporter-config.yaml'

Create the file /etc/prometheus/jmx-exporter-config.yaml and give it (for example) following content:

whitelistObjectNames: [

  "com.adobe.granite:type=Repository",

  "com.adobe.granite.replication:type=agent,*",

  "java.lang:*",

  "org.apache.jackrabbit.oak:type=\"Standby\",*",

  "org.apache.jackrabbit.oak:type=SegmentRevisionGarbageCollection,*",

  "org.apache.jackrabbit.oak:type=Metrics,name=SESSION_COUNT",

  "org.apache.jackrabbit.oak:type=IndexStats,name=async",

  "org.apache.sling:type=queues,*",

  "org.apache.sling.installer:type=Installer,name=Sling OSGi Installer",

]

Finally start AEM as follows:

crx-quickstart/bin/start

The prometheus exporter will be running at http://localhost:9242/metrics.

bhaesa
Level 1
Level 1

I have tried the above one with multiple configurations but getting the following error

 

no main manifest attribute, in /app/jmx_prometheus_javaagent-0.16.1.jar
chads14984109
Level 1
Level 1

This worked.  Thanks!  One thing I have noticed about the JMX Exporter does add to the CPU.  if you change it to scrape every 60 - 90 seconds it only adds 4% - 5% to the CPU. 

antonyh62497090
Level 1
Level 1

Thanks for posting this question and answer. This worked well, but I needed to remove the \"Quotes\" around the Standby type (using JMX Exporter 0.5).

For me it didn't seem to add anything to the CPU, even at 5sec polling. 1sec poll added a couple of percent. Perhaps the new version is more performant.