Hi all,
I have a JVM application writen in Clojure. It runs in an embedded Jetty (runs with ring.adapter.jetty).
I've attached the Java Agent, the server is listed in AppDynamics console, however no transactions or load data show up.
Does AppDynamics allows to monitor Clojure Applications? Any way to make it work?
Thanks.
Hi,
We should be able to monitor any java based webapp as long as the target compiled classes are .class , Can you define POJO rules on Clojure classes and see if that helps?
https://docs.appdynamics.com/display/PRO41/POJO+Entry+Points
In some cases, we might not auto discover BTs could be due to that we are hitting out of box supported entry points like servle, struts, JMS etc and we could still continue to define custom pojo rules on target class and monitor as BT
Hi,
We should be able to monitor any java based webapp as long as the target compiled classes are .class , Can you define POJO rules on Clojure classes and see if that helps?
https://docs.appdynamics.com/display/PRO41/POJO+Entry+Points
In some cases, we might not auto discover BTs could be due to that we are hitting out of box supported entry points like servle, struts, JMS etc and we could still continue to define custom pojo rules on target class and monitor as BT
Yes, it works!
For anyone interested in this, Clojure generates anonymous inner class for everyfunction declared in a given namespace and creates a method called "invoke" in it.
For instance if you have a function like the below:
(ns myproject)
(defn my-function [])
You should create the following rule in appdynamics:
class name contains: "myproject$my_function"
method name contains: invoke
Note that clojure replaces "-" by "_" when translating to java. I used contains rule just in case, but I think equals works also.