Giter VIP home page Giter VIP logo

scriptable-jmx-exporter's Issues

Add metrics for the exporter itself

These would be useful to detect and diagnose problems of the exporter and its configuration.


  • scriptable_jmx_exporter_build_info{version="1.0.0-alpha1"} 1
  • scriptable_jmx_exporter_config_success boolean (gauge)
  • scriptable_jmx_exporter_config_reload_success_total long (counter)
  • scriptable_jmx_exporter_scrape_duration histogram
  • scriptable_jmx_exporter_scrape_error counter

  • scriptable_jmx_exporter_mbean_get_attributes_duration{object_name="java.lang:type=Threading"} histogram
  • scriptable_jmx_exporter_mbean_get_attributes_error{object_name="java.lang:type=Threading"} counter

Support for NotificationEmitter MBeans?

Some MBeans such as GarbageCollectorMXBean implements NotificationEmitter. If we can listen to the notifications, we might be able to compute and expose more useful metrics such as 99th percentile of GC duration not just LastGCInfo.duration.

I believe we can also support JFR Event Streaming in a similar manner.

Support exposing metrics in OpenMetrics format

While OpenMetrics is still in the early stage, Prometheus (>=2.5) already accepts application/openmetrics-text.

GET /metrics HTTP/1.1
Host: foo.example.com:18090
User-Agent: Prometheus/2.19.2
Accept: application/openmetrics-text; version=0.0.1,text/plain;version=0.0.4;q=0.5,*/*;q=0.1
Accept-Encoding: gzip
X-Prometheus-Scrape-Timeout-Seconds: 10.000000

Support java.util.Set

Cassandra exposes these attributes which are java.util.Set.

  • org.apache.cassandra.db:type=DisallowedDirectories:UnreadableDirectories
  • org.apache.cassandra.db:type=DisallowedDirectories:UnwritableDirectories

While these attributes can be handled by a transform script, it's probably worth supporting them natively.

Support java.util.Date

Apache Solr exposes these java.util.Date attributes.

  • solr:dom1=core,dom2=demo,category=SEARCHER,scope=searcher,name=registeredAt:Value
  • solr:dom1=core,dom2=demo,category=SEARCHER,scope=searcher,name=openedAt:Value
  • solr:dom1=core,dom2=demo,category=CORE,name=startTime:Value

It's easy to handle these in a transform script, but it may be worth supporting java.util.Date natively.

Support multiple comma-separated configurations on -javaagent:exporter.jar=

We need a way to override .server.bind_address externally to a configuration file. For example, if you have an exporter configuration file baked in docker image, it's hard to override the port number, etc. on runtime. Usually, there's no need to change the port number because each Pod gets its own IP address, however, if you want to run multiple containers on the Pod, they need different port numbers to avoid conflict.

One obvious way to solve this problem is to allow users to override configuration entries by multiple configuration files or JSONs.

-javaagent:[email protected],{"server":{"bind_address":"localhost:19639"}},...
-javaagent:[email protected],@override.yaml,...

We need to come up with a (ideally generic) strategy to merge multiple configuration trees.

replacement for Prometheus JMX exporter for use with puppetserver

Thanks in advance for entertaining my request.

For exposing metrics from puppetserver, all searches were pointing towards JMX Exporter. I tried it out, (naively in my production puppetserver) and ended up with /metrics endpoint going silent after a few minutes of successfully returning metrics.

Since existing grafana dashboards are available for those metrics, would you be able to guide me to translate JMX exporter rules to scriptable JMX exporter (here is an example)?

Cheers.

Release 1.0.0

Planned incompatible changes since 0.0.7

  • Default separator in V1 APIs changed from : to more conventional _.
  • V1.snakeCase() changed to keep : instead of escaping it to _.
  • V1.snakeCase() now converts FooSSL โ†’ foo_ssl, not foo_s_s_l.
  • jq support is dropped and now script engine defaults to java.
  • The default rule is changed to V1.transform(in, out, "type").

Schedule

  • Alpha 1 Release: 8/9 8/10

Scraper#mbeanInfoCache can cause heap OOM

Scraper#mbeanInfoCache is not properly configured to expire stale cache entries for unregistered MBeans. This can cause heap OOM in some environments where new MBeans are added/removed constantly.

Add option to expose all string attributes as info metrics.

It might be useful as long as it doesn't cause too much load on Prometheus.

# TODO: come up with a better API
declarations:
   public static final V1.Config config = V1.config()
       .stringAsInfoMetrics(true)
       .snakeCase();

rules:
- transform: |
    V1.transform(..., config);

Not able to run the exporter as agent

I have attached the error text in file:
Error_text.txt

I have following jdk version:
eip@fcyeip3297:/home/eip/logs/out-> java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment Temurin-11.0.12+7 (build 11.0.12+7)
OpenJDK 64-Bit Server VM Temurin-11.0.12+7 (build 11.0.12+7, mixed mode)

my test.yaml has following: -
as defined in docs section:
https://github.com/eiiches/scriptable-jmx-exporter#example-exposing-versions-as-info-style-metrics-advanced
test .yaml.txt

Thanks,
Rakesh

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.