Brian,

I would expect a PR to OTEL's java auto instrumentation project over the
> next few months that adds NiFi to its list of instrumentations. If the NiFi
> committers would like a demo / tech exchange to go over the current state
> of the tracing agent, we'd be happy to accommodate. As it stands, the agent
> utilizes flowfile attributes to pass along the tracestate so trace
> propagation can occur across NiFi to NiFi boundaries.
>

I think a lot of us would love to get on a call for a demo and discuss this
work. It sounds great!
How would you like to proceed?


Le mar. 23 mai 2023 à 12:19, Michael Hogue <michael.p.hogu...@gmail.com> a
écrit :

> Related & complementary to Brian's tracing work would be modeling
> provenance/lineage in OTEL. I chatted with some OTEL maintainers about
> modeling provenance natively as a top-level Signal [1] at KubeCon and they
> advised raising an issue in the opentelemetry-specification repo for
> discussion:
> https://github.com/open-telemetry/opentelemetry-specification/issues/3447
>
> Their in-person response was largely that OTEL events could be used to
> model provenance, but I argued that the model should be standardized for
> use across tooling. This way, the provenance model wouldn't need to be
> maintained separately.
>
> My original thought was that we could have a standard provenance model in
> OTEL and shift NiFi to emit these instead of its own provenance events.
> Then we can tie provenance together across heterogeneous tooling using log
> visualization through something like Loki & Grafana, but there are many
> options in this space.
>
> Thanks,
> Mike
>
> [1] https://opentelemetry.io/docs/concepts/signals/
>
> On Tue, May 23, 2023 at 3:56 AM Brian Putt <puttbr...@gmail.com> wrote:
>
> > Hello Joe / All,
> >
> > Jaeger or Grafana (w/ tempo) offer comparable tools to visualize the
> trace
> > data. I believe additional tools will be needed to get the most out of
> the
> > trace data. We've been experimenting with a number of open source
> products
> > to see what works best for the amount of trace data that NiFi emits. So
> > far, Grafana Tempo, Victoria Metrics, and Clickhouse seem to offer a good
> > set of features to cover searching / viewing the traces along with
> > summarizing certain flowfile attributes. As long as the trace data is in
> > OTEL's format, the collector offers flexibility in exporting the data to
> a
> > number of services with ease.
> >
> > I would expect a PR to OTEL's java auto instrumentation project over the
> > next few months that adds NiFi to its list of instrumentations. If the
> NiFi
> > committers would like a demo / tech exchange to go over the current state
> > of the tracing agent, we'd be happy to accommodate. As it stands, the
> agent
> > utilizes flowfile attributes to pass along the tracestate so trace
> > propagation can occur across NiFi to NiFi boundaries.
> >
> > Thanks,
> >
> > Brian
> >
> > On Wed, May 17, 2023 at 1:05 PM Joe Witt <joe.w...@gmail.com> wrote:
> >
> > > Brian Putt, All
> > >
> > > Are you aware of any good tools/services that can ingest the traces and
> > > provide an interesting view/story/reporting on it?
> > >
> > > I could see us emitting otel events instead of our current provenance
> > > mechanism and using that both internally to do what we already do but
> > also
> > > have a clear/spec friendly way of exporting it to others.
> > >
> > > Thanks
> > >
> > > On Sat, Jul 30, 2022 at 7:43 AM u...@moosheimer.com <u...@moosheimer.com
> >
> > > wrote:
> > >
> > > > Hello Brian, Bryan, Greg, NiFi devs,
> > > >
> > > > Integrating OpenTelemetry is a very good idea, especially since the
> > major
> > > > cloud providers also rely on it. This could also be interesting for
> > > > Stateless NiFi.
> > > >
> > > > I have a suggestion that I would like to put up for discussion.
> > > >
> > > > Would it be useful to make a list of what extensions or new
> development
> > > > would be helpful for a complete integration of OpenTelemetry?
> > > >
> > > > I'm thinking of ConsumeMQTT and PublishMQTT, for example. Currently
> > these
> > > > can do max. MQTT version 3.11, but since version 5 the User
> Properties
> > > > exist, which are similar to the HTTP header fields.
> > > > Thus one could implement OpenTelemetry in the MQTT processors
> similarly
> > > as
> > > > in HTTP.
> > > >
> > > > With a list we could make an overview of the "necessary" adjustments
> > and
> > > > advertise for support.
> > > >
> > > > If what I write is nonsense, then I may not have understood something
> > and
> > > > I take it all back :)
> > > >
> > > > Mit freundlichen Grüßen / best regards
> > > > Kay-Uwe Moosheimer
> > > >
> > > > > Am 29.07.2022 um 05:09 schrieb Brian Putt <puttbr...@gmail.com>:
> > > > >
> > > > > Hello Bryan / Greg / NiFi devs,
> > > > >
> > > > > Distributed tracing (DT) is similar to provenance in that it shows
> > the
> > > > path
> > > > > a particular flowfile travels, but its core selling point is that
> it
> > > > > supports tracing across multiple systems/services regardless of
> > what's
> > > > > receiving the data. Provenance is a fantastic feature and there are
> > > > > instances where one might want to draw that bigger picture of
> > > identifying
> > > > > bottlenecks as data flows from one system to another and that
> system
> > > > > may/may not be using NiFi.
> > > > >
> > > > > DT utilizes three ids: traceId, parentId, and spanId. While a tree
> > can
> > > be
> > > > > built using two ids, the third id (traceId) helps bring all of the
> > > > relevant
> > > > > information out of a datastore more easily.
> > > > > DT is focused more on performance and identifying bottlenecks in
> one
> > or
> > > > > more systems. Imagine if NiFi were receiving data from various
> > sources
> > > > > (i.e. HTTP, Kafka, SQS) and NiFi egressed to other sources (HTTP,
> > > Kafka,
> > > > > NiFi).
> > > > > DT provides a spec that we'd be able to follow and correlate the
> data
> > > as
> > > > it
> > > > > traverses from system to system. Each system that participates in
> the
> > > DT
> > > > > ecosystem would simply emit information (a trace is made up of one
> or
> > > > more
> > > > > spans) and there'd be a collection system which would aggregate all
> > of
> > > > > these spans and would draw a bigger picture of the path that data
> > went
> > > > > through and could help identify key bottlenecks.
> > > > >
> > > > > OpenTelemetry (OTEL) provides clients (across many languages,
> > including
> > > > > java) where developers can instrument their library's APIs and
> > > > participate
> > > > > in a DT ecosystem as it adheres to the tracing spec. Egressing
> trace
> > > data
> > > > > is possible without using OTEL, but then we may find ourselves
> having
> > > to
> > > > > recreate the wheel, but could be optimized for NiFi.
> > > > >
> > > > > Creating a reporting task could certainly be a path, mainly have a
> > few
> > > > > concerns with that:
> > > > >
> > > > > 1. If provenance is disabled, will provenance events still be
> emitted
> > > and
> > > > > be collected by a new reporting task?
> > > > > 2. There'll be an impact on performance, how much is unknown. OTEL
> is
> > > > > gaining traction across industry and there are ways to mitigate
> > > > > performance, mainly sampling and the fact that *tracing is best
> > > effort*.
> > > > > Spans would be emitted from NiFi via UDP to a collector on the same
> > > > network
> > > > > 3. Would there be any issues with appending a flowfile attribute
> that
> > > is
> > > > > carried throughout the flow where it maintains the traceId,
> > > parentSpanId,
> > > > > and trace flags? See below for more details
> > > > >
> > > > > There's a W3C spec (Trace context) which includes a formatted
> string
> > > that
> > > > > would be propagated to services (HTTP, Kafka, etc...). So if NiFi
> > were
> > > to
> > > > > put information onto kafka, any consumers of that data would be
> able
> > to
> > > > > continue the trace and help draw the bigger picture.
> > > > >
> > > > > W3C Spec: https://www.w3.org/TR/trace-context/#traceparent-header
> > > > >
> > > > > For #2, since DT is focused on performance, sampling can help
> > alleviate
> > > > > chatter over the wire and ideally, 0.01% would draw the same
> picture
> > as
> > > > 1%
> > > > > or 10%+. This is certainly different from provenance as DT is
> focused
> > > on
> > > > > performance over quality of the data and should not be thought of
> as
> > > > > auditing.
> > > > >
> > > >
> > >
> >
> https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/sdk.md#sampler
> > > > >
> > > > >> On Thu, Jul 28, 2022 at 5:01 PM Bryan Bende <bbe...@gmail.com>
> > wrote:
> > > > >>
> > > > >> Hi Greg,
> > > > >>
> > > > >> I don't really know anything about OpenTelemetry, but from the
> > > > >> perspective of integrating something into the framework, some
> things
> > > > >> to consider...
> > > > >>
> > > > >> Is there some way to piggy-back on provenance and use a
> > ReportingTask
> > > > >> to process provenance events and report something to
> OpenTelemetry?
> > > > >>
> > > > >> If something new does need to be added, it should probably be an
> > > > >> extension point where there is an interface in the framework-api
> and
> > > > >> different implementations can be plugged in.
> > > > >> Ideally the framework itself wouldn't have any knowledge of
> > > > >> OpenTelemetry specifically, it would only be reporting some
> > > > >> information, which could then be used in some way by the
> > OpenTelemetry
> > > > >> implementation.
> > > > >>
> > > > >> How does NiFi actually communicate with OpenTelemetry? Are you
> > > > >> expecting to send data to OpenTelemetry in this new method you are
> > > > >> suggesting?
> > > > >> That would likely have a significant impact on the performance of
> > the
> > > > flow.
> > > > >>
> > > > >> Thanks,
> > > > >>
> > > > >> Bryan
> > > > >>
> > > > >>> On Thu, Jul 28, 2022 at 3:17 PM glma...@uwe.nsa.gov <
> > > > glma...@uwe.nsa.gov>
> > > > >>> wrote:
> > > > >>>
> > > > >>> Nifi Devs,
> > > > >>>
> > > > >>> My team and I are looking for guidance on how we can extend
> Apache
> > > > >> Nifi's capabilities. Specifically we're looking to include
> > distributed
> > > > >> tracing. We'll approach this effort as if we're the tracing
> experts
> > > and
> > > > >> simply seeking implementation guidance. Our developers have good
> > > > exposure
> > > > >> to working with Nifi and creating custom processors. We plan to
> fork
> > > the
> > > > >> project to begin this effort but want to make sure we approach
> this
> > > with
> > > > >> the best possible direction for community adoption.
> > > > >>>
> > > > >>> Our initial thoughts on this approach would be to piggyback on
> how
> > > > >> Provenance was implemented. We essentially want to include a
> > > subroutine
> > > > or
> > > > >> method that gets implicitly invoked upon a processors 'onTrigger'
> > > > method.
> > > > >> From there we would analyze the FlowFiles attributes to check for
> > the
> > > > >> existence of 'traceId' and/or propagate one if found.
> > > > >>>
> > > > >>> We can expound upon all of these tracing/observability details if
> > > that
> > > > >> helps by any means. We're able to provide more detailed scope of
> > this
> > > > task
> > > > >> as well but for now we just want to get feed back for our overall
> > goal
> > > > and
> > > > >> proposed approach.
> > > > >>>
> > > > >>> Thanks,
> > > > >>> Greg Marshall
> > > > >>
> > > >
> > > >
> > >
> >
>

Reply via email to