jmxtrans / jmxtrans-agent

Java Agent based JMX metrics exporter.
MIT License
178 stars 110 forks source link

Feature/google stackdriver #99

Closed evmin closed 7 years ago

evmin commented 7 years ago

Dependency-less implementation of Google Cloud Monitoring - Stackdriver writer. Documentation can be found in the google folder.

cyrille-leclerc commented 7 years ago

Thanks you very much @evmin, this is a great improvement.

The CI build reports findbugs problems: https://travis-ci.org/jmxtrans/jmxtrans-agent/jobs/210809302

Could you please review these errors, maybe running mvn findbugs:findbugs

evmin commented 7 years ago

Builds on my machine no issues:

[ evgeny@AU jmxtrans-agent ] # # mvn findbugs:findbugs
[INFO] Scanning for projects...
[INFO] Inspecting build with total of 1 modules...
[INFO] Installing Nexus Staging features:
[INFO]   ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building JMX metrics exporter agent 1.2.6-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- findbugs-maven-plugin:3.0.4:findbugs (default-cli) @ jmxtrans-agent ---
[INFO] Fork Value is true
     [java] Warnings generated: 15
[INFO] Done FindBugs Analysis....
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.492 s
[INFO] Finished at: 2017-03-14T21:20:47+11:00
[INFO] Final Memory: 26M/313M
[INFO] ------------------------------------------------------------------------
[ evgeny@AU jmxtrans-agent ] #

Following the issues reported by Travis build. Will commit shortly.

cyrille-leclerc commented 7 years ago

@evmin could you try to run ./mvnw clean install (it's findbugs:check instead of findbugs:findbugs as I said in my previous comment)

According to https://travis-ci.org/jmxtrans/jmxtrans-agent/jobs/210809302 we have:

[INFO] --- findbugs-maven-plugin:3.0.4:check (default) @ jmxtrans-agent ---
[INFO] BugInstance size is 15
[INFO] Error size is 0
[INFO] Total bugs: 15
[INFO] Found reliance on default encoding in org.jmxtrans.agent.google.Connection.httpCall(String, String, String, String): String.getBytes() [org.jmxtrans.agent.google.Connection] At Connection.java:[line 290] DM_DEFAULT_ENCODING
[INFO] Found reliance on default encoding in org.jmxtrans.agent.google.Connection.prepareApiToken(): String.getBytes() [org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection] At Connection.java:[line 161]Another occurrence at Connection.java:[line 163] DM_DEFAULT_ENCODING
[INFO] Found reliance on default encoding in org.jmxtrans.agent.google.Connection.setFromFile(String): new java.io.InputStreamReader(InputStream) [org.jmxtrans.agent.google.Connection] At Connection.java:[line 102] DM_DEFAULT_ENCODING
[INFO] Found reliance on default encoding in org.jmxtrans.agent.google.Connection.signSHA256withRSA(String): String.getBytes() [org.jmxtrans.agent.google.Connection] At Connection.java:[line 213] DM_DEFAULT_ENCODING
[INFO] Inconsistent synchronization of org.jmxtrans.agent.google.Connection.expiry; locked 62% of time [org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection] Unsynchronized access at Connection.java:[line 134]Unsynchronized access at Connection.java:[line 134]Synchronized access at Connection.java:[line 141]Synchronized access at Connection.java:[line 141]Synchronized access at Connection.java:[line 196]Synchronized access at Connection.java:[line 200]Synchronized access at Connection.java:[line 198] IS2_INCONSISTENT_SYNC
[INFO] Inconsistent synchronization of org.jmxtrans.agent.google.Connection.serviceAccount; locked 50% of time [org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection] Unsynchronized access at Connection.java:[line 103]Synchronized access at Connection.java:[line 157] IS2_INCONSISTENT_SYNC
[INFO] Inconsistent synchronization of org.jmxtrans.agent.google.Connection.token; locked 66% of time [org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection, org.jmxtrans.agent.google.Connection] Unsynchronized access at Connection.java:[line 134]Unsynchronized access at Connection.java:[line 136]Synchronized access at Connection.java:[line 141]Synchronized access at Connection.java:[line 200]Synchronized access at Connection.java:[line 195]Synchronized access at Connection.java:[line 197] IS2_INCONSISTENT_SYNC
[INFO] Found reliance on default encoding in org.jmxtrans.agent.google.MetricWriter.getGkeProjectId(): new java.io.InputStreamReader(InputStream) [org.jmxtrans.agent.google.MetricWriter] At MetricWriter.java:[line 131] DM_DEFAULT_ENCODING
[INFO] org.jmxtrans.agent.google.MetricWriter.getGkeProjectId() may fail to close stream [org.jmxtrans.agent.google.MetricWriter] At MetricWriter.java:[line 131] OS_OPEN_STREAM
[INFO] Call to method of static java.text.DateFormat in org.jmxtrans.agent.google.MetricWriter.getNow() [org.jmxtrans.agent.google.MetricWriter] At MetricWriter.java:[line 56] STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE
[INFO] org.jmxtrans.agent.google.MetricWriter.initStaticLabels(Map) makes inefficient use of keySet iterator instead of entrySet iterator [org.jmxtrans.agent.google.MetricWriter] At MetricWriter.java:[line 117] WMI_WRONG_MAP_ITERATOR
[INFO] org.jmxtrans.agent.util.json.JsonObject's readObject method is synchronized [org.jmxtrans.agent.util.json.JsonObject] At JsonObject.java:[lines 797-800] RS_READOBJECT_SYNC
[INFO] org.jmxtrans.agent.util.json.JsonObject is Serializable; consider declaring a serialVersionUID [org.jmxtrans.agent.util.json.JsonObject] At JsonObject.java:[lines 82-807] SE_NO_SERIALVERSIONID
[INFO] Initialization of org.jmxtrans.agent.util.json.WriterConfig accesses class org.jmxtrans.agent.util.json.PrettyPrint, which isn't initialized yet [org.jmxtrans.agent.util.json.WriterConfig] At WriterConfig.java:[line 46] IC_SUPERCLASS_USES_SUBCLASS_DURING_INITIALIZATION
[INFO] org.jmxtrans.agent.util.json.WriterConfig.MINIMAL isn't final but should be [org.jmxtrans.agent.util.json.WriterConfig] At WriterConfig.java:[line 35] MS_SHOULD_BE_FINAL
[INFO] 
evmin commented 7 years ago

Gotcha. On it.

cyrille-leclerc commented 7 years ago

Thank you very much @evmin

evmin commented 7 years ago

All done.

evmin commented 7 years ago

@cyrille-leclerc One extra thing to consider is the documentation. I have put the readme in the google folder. Please have a look and move around as required?