+1 We can probably start by opening a JIRA for this and adding a design approach for the same? I would like to help in the coding-effort for this.
-SG On Mon, Oct 10, 2016 at 1:51 PM, P. Taylor Goetz <ptgo...@gmail.com> wrote: > I’ve been thinking about metrics lately, specifically the fact that people > tend to struggle with implementing a metrics consumer. (Like this one [1]). > > The IMetricsConsumer interface is pretty low level, and common > aggregations, calculations, etc. are left up to each individual > implementation. That seems like an area where further abstraction would > make it easier to support different back ends (Graphite, JMX, Splunk, etc.). > > My thought is to create an abstract IMetricsConsumer implementation that > does common aggregations and calculations, and then delegates to a plugable > “metrics sink” implementation (e.g. “IMetricsSink”, etc.). That would > greatly simplify the effort required to integrate with various external > metrics systems. I know of at least a few users that would be interested, > one is currently scraping the logs from LoggingMetricsConsumer and polling > the Storm REST API for their metrics. > > -Taylor > > [1] http://twocentsonsoftware.blogspot.co.il/2014/12/ > sending-out-storm-metrics.html > > > > On Oct 10, 2016, at 12:14 PM, Bobby Evans <ev...@yahoo-inc.com.INVALID> > wrote: > > > > First of all the server exposes essentially the same interface that the > IMetricsConsumer exposes. It mostly just adds a bunch of overhead in the > middle to serialize out the objects send them over http to another process > which then has to deserialize them and process them. If you really don't > need the metrics to show up on a special known box you can have that exact > same code running inside the metrics consumer without all of the overhead. > > The server/client are insecure, have to deal with thread issues that a > normal IMetricsConsumer does not, and are not written to be robust (If the > HTTP server is down the consumer crashes and continues to crash until the > server is brought back up). It was written very quickly for a test > situation and it honestly never crossed my mind that anyone would want to > use it in production. > > > > - Bobby > > > > On Monday, October 10, 2016 10:59 AM, S G <sg.online.em...@gmail.com> > wrote: > > > > > > Thanks Bobby. > > > > If we write our own metrics consumer, how do we ensure that it is better > > than HttpForwardingMetricsServer? In other words, what aspects of the > > HttpForwardingMetricsServer > > should we avoid to make our own metrics consumer better and ready for > > production? > > > > Is versign/storm-graphite <https://github.com/verisign/storm-graphite> > > production > > ready? > > > > Also, we should add a line about production-readiness of > > HttpForwardingMetricsServer > > in the documentation at http://storm.apache.org/ > releases/1.0.2/Metrics.html > > (We were just about to think seriously on using this for production as we > > thought this to be the standard solution for metrics' consumption in 1.0+ > > version). > > > > -SG > > > > On Mon, Oct 10, 2016 at 6:37 AM, Bobby Evans <ev...@yahoo-inc.com> > wrote: > > > >> First of all there really are two different sets of metrics. One set is > >> the topology metrics and the other set is the daemon metrics (metrics > for > >> things like the ui and nimbus). The JmxPreparableReporter plugin only > >> exposes daemon metrics not the topology metrics through JMX. Exposing > >> topology metrics through JMX is a non trivial task. The current metrics > >> feature was not designed for this. We are in the process of trying to > >> redesign the metrics system to allow for features like this, but it is > >> still a ways off. > >> > >> - Bobby > >> > >> > >> On Saturday, October 8, 2016 11:39 AM, S G <sg.online.em...@gmail.com> > >> wrote: > >> > >> > >> Thanks Bobby, > >> > >> We will need some kind of IMetricsConsumer to talk to telegraf. > >> Many other softwares like Solr, Elastic-Search, Cassandra etc. provide > >> metrics through a URL making it very easy to consume by tools like > telegraf. > >> How about a IMetricsConsumer that will run on storm-ui and provide the > >> metrics through a URL such as <storm-ui-host>/metrics ? > >> > >> Also, I see the following option in defaults.yaml: > >> #default storm daemon metrics reporter plugins > >> storm.daemon.metrics.reporter.plugins: > >> - "org.apache.storm.daemon.metrics.reporters. > JmxPreparableReporter" > >> > >> Is this a good option to use for converting metrics into JMX ? > >> > >> Thanks > >> SG > >> > >> > >> > >> > >> On Fri, Oct 7, 2016 at 8:11 AM, Bobby Evans <ev...@yahoo-inc.com.invalid > > > >> wrote: > >> > >> HttpForwardingMetricsServer is a real hack intended really for tests. I > >> know I wrote it :). Please don't use it in production. You can write > your > >> own IMetricesConsumer to do whatever you want to with the metrics. > >> https://github.com/apache/ storm/blob/master/storm-core/ > >> src/jvm/org/apache/storm/ metric/api/IMetricsConsumer. java > >> <https://github.com/apache/storm/blob/master/storm-core/ > src/jvm/org/apache/storm/metric/api/IMetricsConsumer.java> > >> > >> That is the correct way to get the data out. If you want to write a > >> bridge to JMX for this that might work, but going directly to telegraph > >> would probably be better. - Bobby > >> > >> On Thursday, October 6, 2016 1:43 PM, S G < > sg.online.em...@gmail.com> > >> wrote: > >> > >> > >> Hi, > >> > >> We want to use Telegraf ( > >> https://github.com/influxdata/ telegraf/tree/master/plugins > >> <https://github.com/influxdata/telegraf/tree/master/plugins>) for > getting > >> storm's metrics. > >> > >> But we do not want to add a HttpForwardingMetricsServer just to get the > >> metrics and send them to telegraf. > >> > >> Other option is to use Jolokia (https://jolokia.org/) that can read JMX > >> and > >> write into telegraf. > >> > >> Does storm report all its metrics (including those of custom > spouts/bolts) > >> into JMX? > >> Or spawning a HttpForwardingMetricsServer is the only option? > >> > >> Thanks > >> SG > >> > >> > >> > >> > >> > >> > >> > >> > > > > > >