I am looking for a framework to make a monitoring application. Right now, I am looking at JMX which seems very interesting but I am not sure to understand everything totally.
I need to check several information and to do so, I need to ask several servers. Log errors on some, stat files on other and so on. Maybe also make a wrapper with a Python application.
So my question is : Is JMX a good option ?
At the moment, nothing is implemented.
jmx is an excellent option for managing java applications. you provide the management interfaces and the the jvm does all the work with providing access to those interfaces (be it locally or remotely). also, jvisualvm is an excellent utility for managing a java application as it provides some great tools, as well as access to the application's mbeans (provided you install the mbean plugin).
But it is not exactly a java application to monitor. It is more the general system, build with several components (not necessarily in Java).
If the MBeans are in Java and I check, let's say, the logs files. Is it enough to use JMX?
That is my real problem. I don't really have a java application to monitor but a system made with several parts providing services. I want to know is the services are still up.
i'm not sure i understand your question completely.
if you are asking "will jmx work for all my applications, including non-java ones", then the answer is no. jmx is a java specific framework. however, jmx enabled java applications could be monitored as part of a larger application management system. there are jmx to snmp bridges which would enable your jmx management features to be used through snmp capable tools (where snmp is a management tool which is not language specific). also, some management utilities have "plugins" which know how to talk different protocols, where there is probably a good chance that jmx is supported.
basically, jmx is probably the best choice for your java based services. you will need to find another way to monitor your non-java services. once you put all those pieces together, you will need to find a monitoring tool which can "talk" to the different services in the protocols that they support.
long answer, short: jmx is a great building block, but it is not the entire solution if you are integrating non-java based services.
I will give you a couple of examples to illustrate what I could check.
I have log files. Today it's examined by a python script. But if I develop a Mbean in java to examine the log errors. Would it be possible ?
The same. Some scripts are launched manually in python. What if I execute them with java ?
Can the both examples be used for JMX monitoring ?