Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial version #196

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Initial version #196

wants to merge 2 commits into from

Conversation

weissreto
Copy link
Member

Monitoring a solution with a Reverse Proxy, Axon Ivy Engine and a Backend with a REST and SOAP endpoint. OpenTelemetry is used to export metrics to Prometheus. Grafana is used to display the data in a dashboard

Monitoring a solution with a Reverse Proxy, Axon Ivy Engine and a Backend with a REST and SOAP endpoint.
OpenTelemetry is used to export metrics to Prometheus. Grafana is used to display the data in a dashboard
Copy link
Member

@alexsuter alexsuter left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've worked with Denis on this topic a while ago https://github.com/axonivy/monitoring. Seems like that you use the JMX exporter. I guess Prometheus is requesting the Axon ivy Engine from time to time? The issue is (or at least was) that not all JMX values are cached. Some of them were calculated at runtime. Some of them were highly resource intensive. So if we add this kind of monitoring we gave a lot more pressure to the Axon Ivy Engine.

Furthermore I think we should design very carefully the prometheus API. Because customer's will create custom Graphana dashboards and we can not change keys anymore without migration pain.

The backend is highly outdated. Not sure how long we are able to build the backend. Maybe there are some simple docker containers out there, which we can use? Or even better, building a simple backend from source directly here.

@weissreto
Copy link
Member Author

Seems like that you use the JMX exporter. I guess Prometheus is requesting the Axon ivy Engine from time to time? The issue is (or at least was) that not all JMX values are cached. Some of them were calculated at runtime. Some of them were highly resource intensive. So if we add this kind of monitoring we gave a lot more pressure to the Axon Ivy Engine.

-> This is not the case the JMX exporter exports the value to Prometheus. How often this is done can be configured. An there is a list of rules which MBeans are exported. There should not be any performance issues here.

Furthermore I think we should design very carefully the prometheus API. Because customer's will create custom Graphana dashboards and we can not change keys anymore without migration pain.

-> This is only a sample of how customers can do monitoring by themselves. The keys are either standard to OT or can be configured in this file https://github.com/axonivy/docker-samples/pull/196/files#diff-bcde297a529515ad4cb44a5c078a71a4257523904d1189496f12ab978103ab52 by the customer itself.

The backend is highly outdated. Not sure how long we are able to build the backend. Maybe there are some simple docker containers out there, which we can use? Or even better, building a simple backend from source directly here.

-> The same backend is also used in ivy-tracing-jaeger. I will update the backend in another PR that will do it in both examples.

Copy link
Member

@alexsuter alexsuter left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm fine if we have no performance issues and we don't need to keep the jmx interface stable for ever.

For the backend I would use an nginx with static file service. There you can put a json file for a rest endpoint and a xml file for a web service endpoint. This should be enough for demo and should work for a long long time.


## JMX
[Java Management Extension](https://en.wikipedia.org/wiki/Java_Management_Extensions) is a technology to read and write runtime information from a Java processes.
This allows monitoring tools to monitor the state the Axon.ivy Engine. The Engine Cockpit has an MBean View that allows to browse and read these information.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Axon Ivy Engine instead of Axon.Ivy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants