On Thu, Oct 18, 2018 at 2:52 AM 'Daniel Schierbeck' via Ruby on Rails: Core
<rubyonrails-core@googlegroups.com> wrote:

> Looks like OpenCensus already has support for development mode UIs,
> currently only for Java and Go though:
> https://opencensus.io/core-concepts/z-pages/
>

This is a great starting point. Rails dev can level up from there.

Have you deployed an OpenCensus integration to production? At least the
> metrics part looks pretty advanced, maybe too much so.
>

Not in production. We have a branch of Basecamp that exports to
Stackdriver. In production, we'd prefer to use local agents and collectors
rather than export directly to a vendor:
https://github.com/census-instrumentation/opencensus-service


>
> Cheers,
> Daniel
>
> On Thu, Oct 18, 2018 at 11:26 AM Daniel Schierbeck <
> dschierb...@zendesk.com> wrote:
>
>> On Wed, Oct 17, 2018 at 7:26 PM Jeremy Daer <jeremyd...@gmail.com> wrote:
>>
>>> Hey Daniel,
>>>
>>> Absolutely! We're looking at OpenCensus (https://opencensus.io)
>>> integration, which seems to be leapfrogging OpenTracing in standardization
>>> and adoption.
>>>
>>
>> So now there are two standards? 😬
>> Is there clarity on where things are going? The point of a standard would
>> be that we'd only need to support *one*, and not have an extra layer of
>> abstraction.
>>
>>
>>>
>>> Current Ruby integration, including early Rack and Rails support:
>>> https://github.com/census-instrumentation/opencensus-ruby
>>>
>>> Datadog exporter:
>>> https://github.com/DataDog/opencensus-go-exporter-datadog
>>> Stackdriver exporter:
>>> https://github.com/census-ecosystem/opencensus-ruby-exporter-stackdriver
>>> Zipkin/Jaeger exporter:
>>> https://github.com/census-ecosystem/opencensus-ruby-exporter-zipkin
>>> Or use a local collector/relay:
>>> https://github.com/census-instrumentation/opencensus-service
>>>
>>
>> Compared to OpenTracing, is the ecosystem mature enough to warrant us
>> going all-in on this? I definitely see the theoretical point of a unified
>> stats and trace standard, especially seeing as Statsd has fragmented
>> somewhat, but is it a horse we want to bet on? I'm fine with either, as
>> long as there are working, scalable solutions *today* for getting things
>> working in a variety of languages and without duct tape. For instance, it
>> seems like the Datadog exporter only supports Go?
>>
>>
>>> Production use is fantastic, but I'd particularly love to see a
>>> collector and built-in visualization for local app development and tests.
>>>
>>
>> Me too 😄 but that's probably not going to be my initial focus, I'm
>> meanly looking at the instrumentation side of things.
>>
>>
>> We have an existing ActiveSupport::Notifications API which works much
>>> like typical parent-span instrumentation, but it doesn't propagate or
>>> report trace context.
>>>
>> For deeper Rails integration, we could adapt the AS::N design to more
>>> directly map to OpenCensus, or introduce ActiveSupport::Tracing if there's
>>> too much mismatch or compatibility concern.
>>>
>>
>> I've done a bunch of work on AS::N in the past (I'm the one who created
>> the original ActiveSupport::Subscriber base class) and feel pretty
>> confident that it can form the basis for this work. We'd probably want to
>> instrument more places, e.g. each middleware invocation and maybe filters
>> in controllers, but otherwise it's a good starting point.
>>
>> I do think we need to have a specific mapping from AS::N to the tracing
>> backend, selecting which payload keys should be propagated and maybe
>> formatting some of the values, so it's probably not just a matter of
>> copying everything verbatim. It sounds like you're doing the verbatim thing
>> at Basecamp though – how is that working out? Would you be in favor of that?
>>
>> We've seen issues when tracing gets too granular or too much data is
>> captured, so I'd like to be a bit conservative.
>>
>>
>>> That'd allow these libraries to plug in directly without needing to
>>> carefully instrument Rails on their own. Rails should be able to
>>> participate in distributed tracing out of the box, report stats out of the
>>> box, show traces and stats in development mode, and flip between production
>>> APM vendors without specialized integration.
>>>
>>
>> Yup, that's my goal as well. APM vendors should not compete on their
>> quality of instrumentation, but on the quality of their product. One thing
>> I want to emphasize though is that I think we need to push for
>> standardization *beyond* Rails. AS::N could have been a great standard if
>> it wasn't tied to AS – it hasn't seen widespread adoption because gem
>> authors are unwilling to add a dependency on AS, I think. So we should
>> think holistically about the entire ecosystem and what would make sense for
>> Ruby as a whole.
>>
>>
>>> At Basecamp, we have a home-grown StatsD setup, similar to Datadog, that
>>> hooks Active Support notifications (
>>> https://signalvnoise.com/posts/3091-pssst-your-rails-application-has-a-secret-to-tell-you).
>>>  We
>>> also parse logs from Kafka to reconstruct some traces. We'd love to extract
>>> this and rely on Rails to natively export traces and stats.
>>>
>>
>>> I'd love to hear what you're doing at Zendesk, where you're headed, and
>>> whether this sketch aligns well. And anyone else who's working in this area!
>>>
>>
>> We're currently all-in on Datadog, and I've helped improve their
>> instrumentation. However, I keep running into ad-hoc instrumentation being
>> brittle, which is why I'm interested in first-class support. I think the
>> only sustainable path forward is that gems natively support some form of
>> tracing, either through AS::N (which would need to be extracted) or
>> directly with a standardized tracing gem.
>>
>> How would you feel about extracting AS::N, actually? Then gems could
>> adopt it for pub/sub and it would be a lot simpler to plug in a tracing
>> subscriber.
>>
>>
>>>
>>> Best,
>>> Jeremy
>>>
>>> On Wed, Oct 17, 2018 at 5:58 AM 'Daniel Schierbeck' via Ruby on Rails:
>>> Core <rubyonrails-core@googlegroups.com> wrote:
>>>
>>>> With the advent of OpenTracing (https://opentracing.io) along with an
>>>> official Ruby library (https://github.com/opentracing/opentracing-ruby)
>>>> as well as growing industry support (e.g.
>>>> https://www.datadoghq.com/blog/opentracing-datadog-cncf/ and
>>>> http://blog.scoutapp.com/articles/2018/01/17/tutorial-distributed-tracing-in-ruby-with-opentracing),
>>>> would it make sense to provide native tracing of Rails using the
>>>> opentracing-ruby library?
>>>>
>>>> At Zendesk we're using Datadog's proprietary tracing API, which monkey
>>>> patches Rails and other libraries in order to trace key interactions. I
>>>> think a more sustainable approach would be for libraries to include tracing
>>>> support out of the box using the standardized OpenTracing APIs. It is then
>>>> merely a matter of hooking up e.g. the Datadog trace collector in order to
>>>> get a working tracing setup.
>>>>
>>>> If there's interest in this I'd be willing to contribute code. I've
>>>> done a bunch of working in order to trace various aspects of Rails,
>>>> including Rack middleware and before/after filters, but without native
>>>> support, these implementations are brittle and prone to breakage when
>>>> internal Rails APIs change.
>>>>
>>>> I'd love to hear your thoughts on this.
>>>>
>>>> Cheers,
>>>> Daniel Schierbeck
>>>>
>>>> --
>>>>
>>> You received this message because you are subscribed to the Google
>>>> Groups "Ruby on Rails: Core" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to rubyonrails-core+unsubscr...@googlegroups.com.
>>>
>>>
>>>> To post to this group, send email to rubyonrails-core@googlegroups.com.
>>>> Visit this group at https://groups.google.com/group/rubyonrails-core.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "Ruby on Rails: Core" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/rubyonrails-core/qJlL_uVxsnU/unsubscribe
>>> .
>>> To unsubscribe from this group and all its topics, send an email to
>>> rubyonrails-core+unsubscr...@googlegroups.com.
>>> To post to this group, send email to rubyonrails-core@googlegroups.com.
>>> Visit this group at https://groups.google.com/group/rubyonrails-core.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Core" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-core+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-core@googlegroups.com.
> Visit this group at https://groups.google.com/group/rubyonrails-core.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to