Hi, Nikolay, I looked through PR and IEP, and I have some comments:
It would be better to implement it as a separate module, I can't say if it is possible for the main part of monitoring or not, but I believe that HttpExposer with Jetty's dependencies should be detached from the core module. I like your approach with 'wrapper' for monitored objects, like 'ComputeTaskInfo' in PR, and don't like using 'ServiceConfiguration' directly as a monitored object for services. I believe we shouldn't mix approaches. It'd be better always use some kind of container with monitored object's information to work with such data. In my opinion, each sensor should have a timestamp. Usually monitoring systems aggregate data and build graphics according to sensors timestamp. Also, it'd be great to have an ability to store a list of a fixed size of last N sensors, not to miss them without pushing to an external monitoring system. It'd be great if you provide a more extended test to show the work of the system. Everybody who looks to PR needs to run the test and get the info manually to see the completeness of sensors, this might be simplified by proper test. Thank you! On Fri, Apr 26, 2019 at 5:56 PM Nikolay Izhikov <nizhi...@apache.org> wrote: > > Hello, Igniters. > > I've prepared Proof of Concept for IEP-35 [1] > PR can be found here - https://github.com/apache/ignite/pull/6510 > > I've done following changes: > > 1. `GridMonitoringManager` [2] - simple implementation of manager to > store all monitoring info > 2. `HttpPullExposerSpi` [3] - pull exposer implementation that can > respond with JSON from http://localhost:8080/ignite/monitoring. JSON content > can be veiwed in gist [4] > 3. Compute task start and finish monitoring in "compute" list [5] > 4. Service registration are monitored in "service" list - [6] > 5. Current `IgniteSpiMBeanAdapter` rewritten using > `GridMonitoringManager` [7] > > Design principles, monitoring subsystem details and new Ignite entities can > be found in IEP [1]. > > My next steps will be: > > 1. Implementation of JMX exposer > 2. Registration of all "lists" and "sensor groups" as a SQL System > view. > 3. Add monitoring for all unmonitoring Ignite API. (described in IEP). > 4. Rewrite existing jmx metrics using GridMonitoringManager. > > Please, share you thoughts. > > Part of JSON file: > ``` > "COMPUTE": { > "tasks": { > "name": "tasks", > "rows": [ > { > "id": "0798817a-eeec-4386-9af7-94edb39ffced", > "sessionId": "a1814f95a61-912451ff-ca7b-4764-a7fd-728f6a900000", > "data": { > "taskClasName": > "org.apache.ignite.monitoring.MonitoringSelfTest$$Lambda$145/1500885480", > "startTime": 1556287337944, > "timeout": 9223372036854776000, > "execName": null > }, > "name": "anotherBroadcast" > } > ``` > > [1] https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=112820392 > [2] > https://github.com/apache/ignite/pull/6510/files#diff-ec7d5cf5e35b99303deb9accee153c50R34 > [3] > https://github.com/apache/ignite/pull/6510/files#diff-32239c45e0ae3b692af2eae7078e1436R47 > [4] https://gist.github.com/nizhikov/aa1e6222e6a3456472b881b8deb0e24d > [5] > https://github.com/apache/ignite/pull/6510/files#diff-d651ed29d07bd0c5ce291654a3254cc0R749 > [6] > https://github.com/apache/ignite/pull/6510/files#diff-0b4e54fbda2b0da1c10eff48416336f6R1606 > [7] > https://github.com/apache/ignite/pull/6510/files#diff-4398bf118150500e059069b3a1638ec7R61 -- Best Regards, Vyacheslav D.