Yeah I admit that configuration flag was bad for me also, but I have no alternatives. Only way to avoid struggling with design limitation is revamp / redesign. Thanks S G for exposing willingness of volunteer and great news Alessandro for that project. Alessandro, could you forward the upcoming news for the project to dev@ list?
- Jungtaek Lim (HeartSaVioR) 2016년 10월 12일 (수) 오전 10:22, P. Taylor Goetz <ptgo...@gmail.com>님이 작성: > I was thinking on a smaller scale in terms of effort, but the more I think > about it, the more supportive I would be of a full revamp (new API) for > metrics based on Coda Hale's metrics library. It's proven and stable. I've > used it many times. I think either approach would be roughly the same > amount of work. > > Some of the metrics API improvements in the 1.1.x branch are nice, but > IMHO are lipstick on a pig. > > With apologies to Jungtaek, who has done amazing work all across the > codebase, I'm a little squeamish about the proposed change to metrics that > changes the consumer API based on a configuration flag (don't know the PR > number offhand). > > I'm +1 for moving in this direction (revamped metrics). Let's end the > metrics pain. > > -Taylor > > > On Oct 11, 2016, at 10:15 AM, Bobby Evans <ev...@yahoo-inc.com.INVALID> > wrote: > > > > I agree that IMetricsConsumer is not good, but the reality is that all > of the metrics system needs to be redone. The problem is that we ship an > object as a metric. If I get an object I have no idea what it is hand > hence no idea how to report it or what to do with it. What is more the > common types we use in the metrics we provide are really not enough. For > example CountMetric sends a Long. Well when I get it in the metrics > consumer I have no idea if I should report it like a counter or if I should > report it like a gauge (something that every metrics system I have used > wants to know). But then we support pre-aggregation of the metrics with > IReducer so the number I get might be an average instead of either a gauge > or a counter, which no good metrics system will want to collect because I > cannot aggregate it with anything else, the math just does not work. > > The proposal I have said before and I still believe is that we need to > put in place a parallel metrics API/system. We will deprecate all of > https://git.corp.yahoo.com/storm/storm/tree/master-security/storm-core/src/jvm/backtype/storm/metric/api > and create a new parallel one that provides an API similar to > http://metrics.dropwizard.io/3.1.0/. I would even be fine in just using > their API and exposing that to end users. Dropwizard has solved all of > these problems already and I don't see a reason to reinvent the wheel. I > don't personally see a lot of value in trying to send all of the metrics > through storm itslef. I am fine if we are able to support that, but it is > far from a requirement. - Bobby > > > > On Monday, October 10, 2016 10:47 PM, S G <sg.online.em...@gmail.com> > wrote: > > > > > > +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 > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>> > >>> > >> > >> > > >