mk23 / jmxproxy Goto Github PK
View Code? Open in Web Editor NEWJMX to HTTP Proxy
Home Page: https://mk23.github.io/jmxproxy
License: MIT License
JMX to HTTP Proxy
Home Page: https://mk23.github.io/jmxproxy
License: MIT License
http://fortawesome.github.io/Font-Awesome/
Add/replace icons where appropriate.
Split scripts/hadoop_stats.py
into scripts/graphite/jmxproxy.py
and scripts/graphite/hadoop.py
.
Use balance uri
to maximize cache hits.
For example:
jmxproxy:
allowed_endpoints:
- "host1:port1"
- "host1:port2"
- "host2:port3"
If the list is missing or empty, allow all hosts.
Currently things like arrays or lists become strings in the resulting json. They should be json lists instead.
Use MIT.
When a JMX Attribute value yields a NaN (and, presumably +/- Infinity), they end up unquoted in the resulting JSON. For example:
"\"org.eclipse.jetty.servlet\":type=\"ServletContextHandler\",name=\"percent-4xx-5m\"": {
"Value": NaN
},
These values are not in the json spec so some parsers (PHP
) may break. Change this behavior to return a string "NaN"
(and "Infinity"
or "-Infinity"
) when appropriate.
Cache bean results to avoid fetching the same data repeatedly.
getHost(...)
valid input is not nullgetHost(...)
invalid input is nullgetHost(...).getDomains()
contains valid datagetHost(...).getDomain(...)
valid input is not nullgetHost(...).getDomain(...)
invalid input is nullgetHost(...).getDomain(...).getMBeans()
contains valid datagetHost(...).getMBean(...)
valid input is not nullgetHost(...).getMBean(...)
invalid input is nullgetHost(...).getMBean(...).getAttributes()
contains valid datagetHost(...).getMBean(...).getAttribute(...)
valid input is not nullgetHost(...).getMBean(...).getAttribute(...)
invalid input is nullThis is in order to streamline the package after completing issue #13.
drop includeDomains
query param
add support for full
query param to perform current behavior:
/host:port?full=true =>
{ "mbean": {"attr": "value", ...}, ...}
add support for domain retrieval when bare host is requested:
/host:port =>
["domain1", "domain2", ...]
add support for mbean retrieval when a domain is requested:
/host:port/domain =>
["mbean1", "mbean2", ...]
add support for attribute retrieval when an mbean is requested:
/host:port/domain:mbean =>
{"attr": "value", ...}
add support for value retrieval when an attribute is requested:
/host:port/domain:mbean/attribute =>
"value"
If an attribute exposes a string that is properly formatted json, do the parsing and packaging for the client.
Fix pom.xml
to only compress *.css
files.
Include versions and licenses.
Currently the access expire runner is scheduled for 1 minute intervals, the access expire time is set to 5 minutes and the cache expire time is set to 5 minutes. These values should be configurable.
Instead minify during packaging as described in issue #23.
Create a test class that exposes beans of supported attribute types and tests them via json fixtures.
This causes the memory view to show a large negative percentage for these memory managers. Detect when the max value is <= 0 and disable tracking.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<effort>Max</effort>
<threshold>Default</threshold>
<xmlOutput>true</xmlOutput>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
Synchronize initial data load with authentication check. Add a loader animation to provide visual feedback.
maven2
-> maven
dependencydpkg-source: warning: no source format specified in debian/source/format, see dpkg-source(1)
dpkg-source: info: using source format `1.0'
dpkg-source: warning: source directory 'jmxproxy' is not <sourcepackage>-<upstreamversion> 'jmxproxy-3.0.0'
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.3.1</version>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<DependencyConvergence/>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
Breaks endpoint input functionality.
The default rootPath was changed to /jmxporxy
as part of Issue #17. Update documentation accordingly.
Instead of collecting on demand, add a flag to enable background collection for faster retrieval.
Make it a standalone python script.
Depreciate JMXProxyServiceConfiguration.java
creating a static class in JMXProxyConfiguration.java
instead.
To allow static assets to be served out of the root context for Issue #13.
Currently: 6 Errors, 3 warning(s)
String values in mbean data tables should be dynamically sized with the cell. Currently an attribute modal that has only one column (i.e. java.lang / Runtime / InputArguments) looks bad with a hardcoded cutoff at 50 chars.
Username/Password should come from the HTTP request as basic or digest auth.
If an attribute value is a string, but can yield proper json, do the conversion.
Use has-error
and has-success
classes on endpoint text input.
When clicking on dynamic (nested) attribute links in Chrome, the main table doesn't resize vertically. After toggling the attribute back, the main table doesn't resize back to it's original width.
mvn clean package hit an error with maven:
Detected Maven Version: 3.0.4 is not in the allowed range 3.0.5.
pdebuild hit an error regarding JDK:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project jmxproxy: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
Update to the latest version of dependency plugins as well.
When requesting a bare host without ?full=true
return the full list of mbeans available on a JVM. This makes matching by regex much simpler and requires less requests to get at desired data.
Some JMX classes can have really long names (i.e. io.dropwizard.jetty.MutableServletContextHandler.5xx-responses
). This causes the menu to wrap and look really bad. Compress these by taking initials of package paths until the total string length is less than 30.
Include default config that lets the admin control startup flags and to enable/disable the service. Leave disabled on initial install.
Implement /config
resource that returns a json of the runtime config.
User input of *
breaks the whole table. Change search functionality to do simple case-insensitive substring.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.