J'essaie de signaler les mesures de Cassandra 3.0 au serveur Graphite en utilisant des métriques-graphite comme suggéré ici http://www.datastax.com/dev/blog/pluggable-metrics-reporting-in-cassandra-2-0-2. Quand il n'y a pas de charge sur le cluster, tout fonctionne correctement et toutes les métriques sont correctement rapportées. Mais si une certaine charge se produit, je reçois à la suite exception system.log:Impossible de collecter des mesures dans Cassandra
ERROR [metrics-graphite-reporter-1-thread-1] 2016-07-13 08:21:23,580 ScheduledReporter.java:119 - RuntimeException thrown from GraphiteReporter#report. Exception was suppressed.
java.lang.IllegalStateException: Unable to compute ceiling for max when histogram overflowed
at org.apache.cassandra.utils.EstimatedHistogram.rawMean(EstimatedHistogram.java:231) ~[apache-cassandra-3.0.7.jar:3.0.7]
at org.apache.cassandra.metrics.EstimatedHistogramReservoir$HistogramSnapshot.getMean(EstimatedHistogramReservoir.java:103) ~[apache-cassandra-3.0.7.jar:3.0.7]
at com.codahale.metrics.graphite.GraphiteReporter.reportHistogram(GraphiteReporter.java:265) ~[metrics-graphite-3.1.2.jar:3.1.2]
at com.codahale.metrics.graphite.GraphiteReporter.report(GraphiteReporter.java:179) ~[metrics-graphite-3.1.2.jar:3.1.2]
at com.codahale.metrics.ScheduledReporter.report(ScheduledReporter.java:162) ~[metrics-core-3.1.0.jar:3.1.0]
at com.codahale.metrics.ScheduledReporter$1.run(ScheduledReporter.java:117) ~[metrics-core-3.1.0.jar:3.1.0]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_91]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_91]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_91]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_91]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_91]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_91]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]
Ce message est répété à chaque fois que le journaliste tente d'obtenir des mesures sur chaque nœud Cassandra et certains paramètres deviennent indisponibles. Afin de recevoir à nouveau les métriques, je dois redémarrer tous les nœuds de Cassandra, ce qui est très peu pratique. J'ai essayé différentes versions métriques-graphite de 3.1.0 à 3.1.2 avec le même problème.
Malheureusement, les mesures Table sont nécessaires pour moi. Pour surmonter ce problème, je suis passé à collectd et j'ai écrit un conf pour collecter toutes les métriques de Cassandra dont j'ai besoin via JMX. – nickoff
Nous avons rencontré le même bug sur 3.0.9, @nickoff pourriez-vous partager la conf qui fonctionne dans votre cas? –
Selon cassandra jira ce bug est corrigé dans 3.0.10 https://issues.apache.org/jira/browse/CASSANDRA-11117 – nickoff