From 67a4743a9531fead24d511994b1dd2e374a2ba9a Mon Sep 17 00:00:00 2001 From: Wondertan Date: Mon, 11 Jul 2022 10:31:51 +0200 Subject: [PATCH 01/16] docs(adr): initial draft fraft for telemtry adr --- docs/adr/adr-009-telemetry.md | 220 +++++++++++++++++++++++++++++ docs/adr/img/tracing-dashboard.png | Bin 0 -> 53105 bytes 2 files changed, 220 insertions(+) create mode 100644 docs/adr/adr-009-telemetry.md create mode 100644 docs/adr/img/tracing-dashboard.png diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md new file mode 100644 index 0000000000..03cce72d75 --- /dev/null +++ b/docs/adr/adr-009-telemetry.md @@ -0,0 +1,220 @@ +# ADR #009: Telemetry + +## Changelog + +* 2022-07-4: Started +* 2022-07-10: Initial Draft finished + +## Authors + +@Wondertan @liamsi + +## Context +> Now I know why I don't like writing ADRs - because I cannot run/test them and see if they work or not. +> Hoping that quality team feedback will solve this problem! + +Celestia Node needs deeper observability of each module and their components. The only integrated observability solution +we have is logging and there are two more options we need to explore from the observability triangle(tracing, metrics and logs). + +There are several priorities and "why"s we need deeper observability: +* Analysis of the current p2p share exchange or "ShrEx" stack + * So we can evaluate real world Full Node reconstruction qualities, along with data availability sampling + * And unblock celestia-node development planning +* Incentivized Testnet + * Tracking participants and validation that do task correctly + * So all participants provide to us valuable data/insight/traces that we can analyze and improve on +* Monitoring of the Celestia's own DA network infrastructure, e.g. DA Network Bootstrappers +* Monitoring dashboard for the node operators +* Extend debugging arsenal for the networking heavy DA layer + * Local development + * Issues found with Testground + * Production +* Establishing metrics/data driven engineering culture for celestia-node devs + * Metrics and tracing allows extracting dry facts out of any software on its performance, liveness, bottlenecks, + regressions, etc., on whole system scale, so devs can reliably respond + * Basing on these, all the improvements can be proven with data _before_ and _after_ a change + +This ADR is intended to outline the decisions on how to proceed with: +* Integration plan according to the priorities and the requirements +* What observability tools/dependencies to integrate +* Integration design into Celestia-Node for each observability option +* A reference document explaining "whats" and "hows" during integration in some part of the codebase, e.g. new dev + +## Decisions + +### Plan + +The first "ShrEx" stack analysis priority is critical for Celestia project. The analysis results will tell us whether +our current Full Node reconstruction qualities conforms to the main network requirements, subsequently affecting +the development roadmap of the celestia-node before the main network launch, therefore is a potential blocker to the +launch, which needs to be resolved ASAP. Basing on the former, the plan is focused on unblocking the reconstruction +story first and then proceed with steady covering of our codebase with traces for the complex codepaths as well as +metrics and dashboards for "measurables". + +Fortunately, the "ShrEx" analysis can be performed with _tracing_ only(more on that in [Tracing](./#Tracing)), so the +decision for the celestia-node team is to cover with traces only the _necessary_ for the current "ShrEx" stack code as +the initial response to the ADR, leaving the rest to be integrated in the background for the devs in the team once they +are free as well as for the efficient bootstrapping into the code for the new devs. + +The next biggest priority - incentivized Testnet can be largely covered with traces as well. All participant will submit +traces from their nodes to any provided backend endpoint by us during the whole network lifespan. Later on, we will be +able to verify the data of each participant by querying historical traces. This is the feature that some backend solutions +provide, which we can use as well to extract valuable on how the network performs in macro view. + +### Tooling/Dependencies + +#### Golang API/Shim + +The decision is to use [opentelemetry-go](https://github.com/open-telemetry/opentelemetry-go) for both Metrics and Tracing: +* Minimal and golang savvy API/shim which gathers years of experience from OpenCensus/OpenMetrics and [CNCF](https://www.cncf.io/) +* Backends/exporters for all the existing timeseries monitoring DBs, e.g. Prometheus, InfluxDB. As well as tracing backends + Jaeger, Uptrace, etc. +* https://github.com/uptrace/opentelemetry-go-extra/tree/main/otelzap with logging engine with use - Zap + +The discussion over this decision can be found in [celestia-node#663](https://github.com/celestiaorg/celestia-node/issues/663) +and props to @liamsi for initial kickoff and a deep dive into OpenTelemetry. + +#### Tracing Backends + +For the tracing there are 3 modern OSS tools are recommended. All of them have bidirectional support with OpenTelemetry: +* [Uptrace](https://get.uptrace.dev/guide/#what-is-uptrace) + * The most recent (~1 year) + * The richest UI + * Tight to Clickhouse DB + * Made by OpenTelemetry + * The most lightweight +* [Jaeger](https://www.jaegertracing.io/) + * The most mature + * Started by Uber, now supported by CNCF + * Supports multiple storages(ScyllaDB, InfluxDB, Amazon DynamoDB) +* [Graphana Tempo](https://grafana.com/oss/tempo/) + * Deep integration with Graphana/Prometheus + * Relatively new (~2 years) + * Uses Azure, GCS, S3 or local disk for storage + +Each of these backends can be used independently and depending on the use case. For us, these are main use cases: +* Local development/debugging for the private network or even public network setup +> I am personally planning to set up the lightweight Uptrace for the local light node. Just to play around and observe +> things +* Data collection from the Testground test runs +* Bootstrappers monitoring infrastructure +* Data collection from the incentivized testnet participants + +There is no strict decision on which of these backends and where to use. People taking ownership of any listed vectors +are free to use any recommended solution or any unlisted. + +#### Metrics Backend + +// WIP + +## Design + +### Tracing + +Tracing allows to see _how_ any process progresses through different modules, APIs and networks, as well as timings of +each operation and any events or errors as they occur. + +A visual example of a generic tracing dashboard provided via [Uptrace](https://uptrace.dev/) backend +![tracing](img/tracing-dashboard.png) + +Mainly, for "ShrEx" and reconstruction analysis we need to know if the reconstruction succeeded and the time it took. +The tracing in this case would provide both for the whole reconstruction operation and for each sub operation of each +process and the node involved. + +#### Spans +Span represents an operation (unit of work) in a trace. They keep the time when operation _started_ and _ended_. Any +additional user defined _attributes_, operation status(success or error with an error itself) and events/logs that +may happen during the operation. + +Spans also form a parent tree, meaning that each span associated to a process can have multiple sub processes or child +spans and vise-versa. Altogether, this feature allows to see the whole trace of execution of any part of the system, no +matter how complex it is. This is exactly what we need to analyze our reconstruction performance. + +An example of a root span in `ipld.Retriever`: +```go +import "go.opentelemetry.io/otel" + +var tracer = otel.Tracer("share") + +func (r *Retriever) Retrieve(ctx context.Context, dah *da.DataAvailabilityHeader) (*rsmt2d.ExtendedDataSquare, error) { + ctx, span := tracer.Start(ctx, "retrieve-square") + defer span.End() + + span.SetAttributes( + attribute.Int("size", len(dah.RowsRoots)), + attribute.String("data_hash", hex.EncodeToString(dah.Hash())), + ) + ... +} +``` + +The child span in `ipld.Retriever.Reconstruct`: +```go + ctx, span := tracer.Start(ctx, "reconstruct-square") + defer span.End() + + // and try to repair with what we have + err := rs.squareImported.Repair(rs.dah.RowsRoots, rs.dah.ColumnRoots, rs.codec, rs.treeFn) + if err != nil { + span.RecordError(err) + return nil, err + } +``` + +And the quadrant request event: +```go + span.AddEvent("requesting quadrant", trace.WithAttributes( + attribute.Int("axis", q.source), + attribute.Int("x", q.x), + attribute.Int("y", q.y), + attribute.Int("size", len(q.roots)), + )) +``` +> The above is only examples related to our code and is a subject to change. + +#### Backends connection + +Jaeger example +```go + // Create the Jaeger exporter + exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url))) + if err != nil { + return nil, err + } + // then the tracer provider + tp := tracesdk.NewTracerProvider( + // Always be sure to batch in production. + tracesdk.WithBatcher(exp), + // Record information about this application in a Resource. + tracesdk.WithResource(resource.NewWithAttributes( + semconv.SchemaURL, + semconv.ServiceNameKey.String(service), + attribute.String("environment", environment), + attribute.Int64("ID", id), + )), + ) + // and set it globally to be used across packages + otel.SetTracerProvider(tp) + + // then close it elsewhere + tp.Shutdown(ctx) +``` + +### Metrics + +// WIP + +## Considerations + +* Tracing performance + * _Every_ method calling two more functions making network request can affect overall performance + +## Other + +As you will see in the examples below, tracing looks similar to logging and have almost the same semantics. In fact, +tracing is debug logging on steroids, and we can potentially consider dropping conventional _debug_ logging once we +fully cover our codebases with the tracing. Same as logging, traces can be pipe out into the stdout as prettyprinted +event log. + +## Status +Proposed diff --git a/docs/adr/img/tracing-dashboard.png b/docs/adr/img/tracing-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..bccb9af346784570b14fc5da3116a046885da80f GIT binary patch literal 53105 zcmeFZcTiJb`!9+G3#eEq3PSuUy{bru#0t`TZ%XeGqzD9}C?H*_QX`;r>AginL29H# zN`%mRAP@)%Nyy#!E${pLbF)%Qk zR(*J1kAZ*d! z{6qcw;19ZHf?0}@bG%ld{+>tlEF
  • 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 Date: Mon, 11 Jul 2022 19:38:49 +0300 Subject: [PATCH 02/16] docs(adr): stylistic improvements and comments from @renaynay --- docs/adr/adr-009-telemetry.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index 03cce72d75..6d3db4d880 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -4,11 +4,16 @@ * 2022-07-4: Started * 2022-07-10: Initial Draft finished +* 2022-07-11: Stylistic improvements ## Authors @Wondertan @liamsi +## Legend +- "ShrEx" - Share Exchange +> It's all ogre now + ## Context > Now I know why I don't like writing ADRs - because I cannot run/test them and see if they work or not. > Hoping that quality team feedback will solve this problem! @@ -19,12 +24,13 @@ we have is logging and there are two more options we need to explore from the ob There are several priorities and "why"s we need deeper observability: * Analysis of the current p2p share exchange or "ShrEx" stack * So we can evaluate real world Full Node reconstruction qualities, along with data availability sampling - * And unblock celestia-node development planning + * And adjust our roadmap accordingly. * Incentivized Testnet * Tracking participants and validation that do task correctly * So all participants provide to us valuable data/insight/traces that we can analyze and improve on -* Monitoring of the Celestia's own DA network infrastructure, e.g. DA Network Bootstrappers -* Monitoring dashboard for the node operators +* Monitoring dashboars + * For Celestia's own DA network infrastructure, e.g. DA Network Bootstrappers + * For the node operators * Extend debugging arsenal for the networking heavy DA layer * Local development * Issues found with Testground @@ -47,7 +53,7 @@ This ADR is intended to outline the decisions on how to proceed with: The first "ShrEx" stack analysis priority is critical for Celestia project. The analysis results will tell us whether our current Full Node reconstruction qualities conforms to the main network requirements, subsequently affecting the development roadmap of the celestia-node before the main network launch, therefore is a potential blocker to the -launch, which needs to be resolved ASAP. Basing on the former, the plan is focused on unblocking the reconstruction +Basing on the former, the plan is focused on unblocking the reconstruction story first and then proceed with steady covering of our codebase with traces for the complex codepaths as well as metrics and dashboards for "measurables". @@ -59,7 +65,7 @@ are free as well as for the efficient bootstrapping into the code for the new de The next biggest priority - incentivized Testnet can be largely covered with traces as well. All participant will submit traces from their nodes to any provided backend endpoint by us during the whole network lifespan. Later on, we will be able to verify the data of each participant by querying historical traces. This is the feature that some backend solutions -provide, which we can use as well to extract valuable on how the network performs in macro view. +provide, which we can use as well to extract valuable insight on how the network performs in macro view. ### Tooling/Dependencies @@ -76,7 +82,7 @@ and props to @liamsi for initial kickoff and a deep dive into OpenTelemetry. #### Tracing Backends -For the tracing there are 3 modern OSS tools are recommended. All of them have bidirectional support with OpenTelemetry: +For tracing, there are 3 modern OSS tools that are recommended. All of them have bidirectional support with OpenTelemetry: * [Uptrace](https://get.uptrace.dev/guide/#what-is-uptrace) * The most recent (~1 year) * The richest UI @@ -118,8 +124,8 @@ A visual example of a generic tracing dashboard provided via [Uptrace](https://u ![tracing](img/tracing-dashboard.png) Mainly, for "ShrEx" and reconstruction analysis we need to know if the reconstruction succeeded and the time it took. -The tracing in this case would provide both for the whole reconstruction operation and for each sub operation of each -process and the node involved. +The tracing in this case would provide all three metrics for the whole reconstruction operation and for each sub operation of each +process. #### Spans Span represents an operation (unit of work) in a trace. They keep the time when operation _started_ and _ended_. Any From fbb379e4a46669da8184a66b24e3482b2d0a63ca Mon Sep 17 00:00:00 2001 From: Wondertan Date: Fri, 15 Jul 2022 14:02:32 +0200 Subject: [PATCH 03/16] docs(adr): apply suggestions from @liamsi and add minor improvements --- docs/adr/adr-009-telemetry.md | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index 6d3db4d880..bc66762a3e 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -10,7 +10,7 @@ @Wondertan @liamsi -## Legend +## Glossary - "ShrEx" - Share Exchange > It's all ogre now @@ -22,23 +22,23 @@ Celestia Node needs deeper observability of each module and their components. Th we have is logging and there are two more options we need to explore from the observability triangle(tracing, metrics and logs). There are several priorities and "why"s we need deeper observability: +* Establishing metrics/data driven engineering culture for celestia-node devs + * Metrics and tracing allows extracting dry facts out of any software on its performance, liveness, bottlenecks, + regressions, etc., on whole system scale, so devs can reliably respond + * Basing on these, all the improvements can be proven with data _before_ and _after_ a change * Analysis of the current p2p share exchange or "ShrEx" stack * So we can evaluate real world Full Node reconstruction qualities, along with data availability sampling - * And adjust our roadmap accordingly. + * And adjust our roadmap accordingly * Incentivized Testnet * Tracking participants and validation that do task correctly * So all participants provide to us valuable data/insight/traces that we can analyze and improve on -* Monitoring dashboars +* Monitoring dashboards * For Celestia's own DA network infrastructure, e.g. DA Network Bootstrappers * For the node operators * Extend debugging arsenal for the networking heavy DA layer * Local development - * Issues found with Testground + * Issues found with [Testground testing](https://github.com/celestiaorg/test-infra) * Production -* Establishing metrics/data driven engineering culture for celestia-node devs - * Metrics and tracing allows extracting dry facts out of any software on its performance, liveness, bottlenecks, - regressions, etc., on whole system scale, so devs can reliably respond - * Basing on these, all the improvements can be proven with data _before_ and _after_ a change This ADR is intended to outline the decisions on how to proceed with: * Integration plan according to the priorities and the requirements @@ -51,10 +51,10 @@ This ADR is intended to outline the decisions on how to proceed with: ### Plan The first "ShrEx" stack analysis priority is critical for Celestia project. The analysis results will tell us whether -our current Full Node reconstruction qualities conforms to the main network requirements, subsequently affecting -the development roadmap of the celestia-node before the main network launch, therefore is a potential blocker to the +our current [Full Node reconstruction](https://github.com/celestiaorg/celestia-node/issues/602) qualities conforms to the main network requirements, subsequently affecting +the development roadmap of the celestia-node before the main network launch. Basing on the former, the plan is focused on unblocking the reconstruction -story first and then proceed with steady covering of our codebase with traces for the complex codepaths as well as +analysis first and then proceed with steady covering of our codebase with traces for the complex codepaths as well as metrics and dashboards for "measurables". Fortunately, the "ShrEx" analysis can be performed with _tracing_ only(more on that in [Tracing](./#Tracing)), so the @@ -222,5 +222,13 @@ tracing is debug logging on steroids, and we can potentially consider dropping c fully cover our codebases with the tracing. Same as logging, traces can be pipe out into the stdout as prettyprinted event log. +## Further Readings +- [Uptrace tracing tools comparison](https://get.uptrace.dev/compare/distributed-tracing-tools.html) +- [Uptrace guide](https://get.uptrace.dev/guide/) +- [Uptrace OpenTelemetry Docs](https://opentelemetry.uptrace.dev/) +> Provides simple Go API guide for metrics and traces +- [OpenTelemetry Docs](https://opentelemetry.io/docs/) +- [Prometheus Docs](prometheus.io/docs/introduction/overview) + ## Status Proposed From 7ee4170d826961676d9d274cfe139ed793ef0882 Mon Sep 17 00:00:00 2001 From: Wondertan Date: Fri, 15 Jul 2022 14:09:04 +0200 Subject: [PATCH 04/16] docs(adr): improve integration example to cover question raised by @rootulp + add integrated trace visualization with Jaeger UI --- docs/adr/adr-009-telemetry.md | 25 ++++++++++++++++++------- docs/adr/img/trace-jaeger.png | Bin 0 -> 250852 bytes 2 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 docs/adr/img/trace-jaeger.png diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index bc66762a3e..555f244288 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -4,8 +4,9 @@ * 2022-07-4: Started * 2022-07-10: Initial Draft finished -* 2022-07-11: Stylistic improvements - +* 2022-07-11: Stylistic improvements from @renaynay +* 2022-07-14: Stylistic improvements from @liamsi +* 2022-07-15: Stylistic improvements from @rootulp and @bidon15 ## Authors @Wondertan @liamsi @@ -128,6 +129,7 @@ The tracing in this case would provide all three metrics for the whole reconstru process. #### Spans + Span represents an operation (unit of work) in a trace. They keep the time when operation _started_ and _ended_. Any additional user defined _attributes_, operation status(success or error with an error itself) and events/logs that may happen during the operation. @@ -136,11 +138,17 @@ Spans also form a parent tree, meaning that each span associated to a process ca spans and vise-versa. Altogether, this feature allows to see the whole trace of execution of any part of the system, no matter how complex it is. This is exactly what we need to analyze our reconstruction performance. -An example of a root span in `ipld.Retriever`: +#### Integration Example + +First, we define global pkg level tracer to create spans from within `ipld` pkg. Basically, it groups spans under +common logical namespace and extends the full name of each span. ```go -import "go.opentelemetry.io/otel" +var tracer = otel.Tracer("ipld") +``` -var tracer = otel.Tracer("share") +Then, we define a root span in `ipld.Retriever`: +```go +import "go.opentelemetry.io/otel" func (r *Retriever) Retrieve(ctx context.Context, dah *da.DataAvailabilityHeader) (*rsmt2d.ExtendedDataSquare, error) { ctx, span := tracer.Start(ctx, "retrieve-square") @@ -154,7 +162,7 @@ func (r *Retriever) Retrieve(ctx context.Context, dah *da.DataAvailabilityHeader } ``` -The child span in `ipld.Retriever.Reconstruct`: +Next, the child span in `ipld.Retriever.Reconstruct`: ```go ctx, span := tracer.Start(ctx, "reconstruct-square") defer span.End() @@ -167,7 +175,7 @@ The child span in `ipld.Retriever.Reconstruct`: } ``` -And the quadrant request event: +And lastly, the quadrant request event: ```go span.AddEvent("requesting quadrant", trace.WithAttributes( attribute.Int("axis", q.source), @@ -178,6 +186,9 @@ And the quadrant request event: ``` > The above is only examples related to our code and is a subject to change. +Here is the result of the above code sending traces visualized on Jaeger UI +![tracing](img/trace-jaeger.png) + #### Backends connection Jaeger example diff --git a/docs/adr/img/trace-jaeger.png b/docs/adr/img/trace-jaeger.png new file mode 100644 index 0000000000000000000000000000000000000000..dc96f9651f174bb30ff97df39e8e04bcb7ebb029 GIT binary patch literal 250852 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 He)s+Yd3ksa literal 0 HcmV?d00001 From bac2463167524961a9aa6ad1ca46eaf7aa70b6ee Mon Sep 17 00:00:00 2001 From: Wondertan Date: Fri, 15 Jul 2022 14:28:33 +0200 Subject: [PATCH 05/16] docs(adr): stylistic improvements from @bidon15 + a but more info --- docs/adr/adr-009-telemetry.md | 42 +++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index 555f244288..5e6165debf 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -2,17 +2,18 @@ ## Changelog -* 2022-07-4: Started +* 2022-07-04: Started * 2022-07-10: Initial Draft finished * 2022-07-11: Stylistic improvements from @renaynay * 2022-07-14: Stylistic improvements from @liamsi * 2022-07-15: Stylistic improvements from @rootulp and @bidon15 +* ## Authors @Wondertan @liamsi ## Glossary -- "ShrEx" - Share Exchange +- `ShrEx` - P2P Share Exchange Stack > It's all ogre now ## Context @@ -27,12 +28,13 @@ There are several priorities and "why"s we need deeper observability: * Metrics and tracing allows extracting dry facts out of any software on its performance, liveness, bottlenecks, regressions, etc., on whole system scale, so devs can reliably respond * Basing on these, all the improvements can be proven with data _before_ and _after_ a change -* Analysis of the current p2p share exchange or "ShrEx" stack - * So we can evaluate real world Full Node reconstruction qualities, along with data availability sampling - * And adjust our roadmap accordingly +* Roadmap adjustment after analysis of the current `ShrEx` based on real world data from: + * Full Node reconstruction qualities + * Data availability sampling * Incentivized Testnet - * Tracking participants and validation that do task correctly - * So all participants provide to us valuable data/insight/traces that we can analyze and improve on + * Tracking participants + * Validating done tasks with transparent evidence + * Harvesting valuable data/insight/traces that we can analyze and improve on * Monitoring dashboards * For Celestia's own DA network infrastructure, e.g. DA Network Bootstrappers * For the node operators @@ -51,18 +53,22 @@ This ADR is intended to outline the decisions on how to proceed with: ### Plan -The first "ShrEx" stack analysis priority is critical for Celestia project. The analysis results will tell us whether -our current [Full Node reconstruction](https://github.com/celestiaorg/celestia-node/issues/602) qualities conforms to the main network requirements, subsequently affecting -the development roadmap of the celestia-node before the main network launch. -Basing on the former, the plan is focused on unblocking the reconstruction +#### First Priority + +The first priority lies on "ShrEx" stack analysis results for Celestia project. The outcome will tell us whether +our current [Full Node reconstruction](https://github.com/celestiaorg/celestia-node/issues/602) qualities conforms to +the main network requirements, subsequently affecting the development roadmap of the celestia-node before the main +network launch. Basing on the former, the plan is focused on unblocking the reconstruction analysis first and then proceed with steady covering of our codebase with traces for the complex codepaths as well as metrics and dashboards for "measurables". -Fortunately, the "ShrEx" analysis can be performed with _tracing_ only(more on that in [Tracing](./#Tracing)), so the +Fortunately, the `ShrEx` analysis can be performed with _tracing_ only(more on that in [Tracing](./#Tracing)), so the decision for the celestia-node team is to cover with traces only the _necessary_ for the current "ShrEx" stack code as the initial response to the ADR, leaving the rest to be integrated in the background for the devs in the team once they are free as well as for the efficient bootstrapping into the code for the new devs. +#### Second Priority + The next biggest priority - incentivized Testnet can be largely covered with traces as well. All participant will submit traces from their nodes to any provided backend endpoint by us during the whole network lifespan. Later on, we will be able to verify the data of each participant by querying historical traces. This is the feature that some backend solutions @@ -101,11 +107,11 @@ For tracing, there are 3 modern OSS tools that are recommended. All of them have Each of these backends can be used independently and depending on the use case. For us, these are main use cases: * Local development/debugging for the private network or even public network setup -> I am personally planning to set up the lightweight Uptrace for the local light node. Just to play around and observe -> things * Data collection from the Testground test runs * Bootstrappers monitoring infrastructure * Data collection from the incentivized testnet participants +> I am personally planning to set up the lightweight Uptrace for the local light node. Just to play around and observe +> things There is no strict decision on which of these backends and where to use. People taking ownership of any listed vectors are free to use any recommended solution or any unlisted. @@ -124,9 +130,11 @@ each operation and any events or errors as they occur. A visual example of a generic tracing dashboard provided via [Uptrace](https://uptrace.dev/) backend ![tracing](img/tracing-dashboard.png) -Mainly, for "ShrEx" and reconstruction analysis we need to know if the reconstruction succeeded and the time it took. -The tracing in this case would provide all three metrics for the whole reconstruction operation and for each sub operation of each -process. +Mainly, for `ShrEx` and reconstruction analysis we need to know if the reconstruction succeeded and the time it took for +the big block sizes(EDS >= 128). The tracing in this case would provide all the data for the whole reconstruction +operation and for each sub operation within reconstruction, e.g time spend specifically on erasure coding +> NOTE: The exact compute time is not available unless [rsmt2d#107](https://github.com/celestiaorg/rsmt2d/issues/107) +> is fixed. #### Spans From ed69fafbc93c68958905fd4d4e151c9d3e3b5d73 Mon Sep 17 00:00:00 2001 From: Wondertan Date: Fri, 15 Jul 2022 14:33:16 +0200 Subject: [PATCH 06/16] docs(adr): fix broken links --- docs/adr/adr-009-telemetry.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index 5e6165debf..c8df51c50a 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -7,7 +7,7 @@ * 2022-07-11: Stylistic improvements from @renaynay * 2022-07-14: Stylistic improvements from @liamsi * 2022-07-15: Stylistic improvements from @rootulp and @bidon15 -* + ## Authors @Wondertan @liamsi @@ -62,10 +62,10 @@ network launch. Basing on the former, the plan is focused on unblocking the reco analysis first and then proceed with steady covering of our codebase with traces for the complex codepaths as well as metrics and dashboards for "measurables". -Fortunately, the `ShrEx` analysis can be performed with _tracing_ only(more on that in [Tracing](./#Tracing)), so the -decision for the celestia-node team is to cover with traces only the _necessary_ for the current "ShrEx" stack code as -the initial response to the ADR, leaving the rest to be integrated in the background for the devs in the team once they -are free as well as for the efficient bootstrapping into the code for the new devs. +Fortunately, the `ShrEx` analysis can be performed with _tracing_ only(more on that in Tracing Design section below), +so the decision for the celestia-node team is to cover with traces only the _necessary_ for the current "ShrEx" stack +code as the initial response to the ADR, leaving the rest to be integrated in the background for the devs in the team +once they are free as well as for the efficient bootstrapping into the code for the new devs. #### Second Priority @@ -122,7 +122,7 @@ are free to use any recommended solution or any unlisted. ## Design -### Tracing +### Tracing Design Tracing allows to see _how_ any process progresses through different modules, APIs and networks, as well as timings of each operation and any events or errors as they occur. @@ -225,7 +225,7 @@ Jaeger example tp.Shutdown(ctx) ``` -### Metrics +### Metrics Design // WIP @@ -247,7 +247,7 @@ event log. - [Uptrace OpenTelemetry Docs](https://opentelemetry.uptrace.dev/) > Provides simple Go API guide for metrics and traces - [OpenTelemetry Docs](https://opentelemetry.io/docs/) -- [Prometheus Docs](prometheus.io/docs/introduction/overview) +- [Prometheus Docs](https://prometheus.io/docs/introduction/overview) ## Status Proposed From 5eb45fbb7c055f1f1fa3764be6829563cc30eb67 Mon Sep 17 00:00:00 2001 From: Wondertan Date: Fri, 29 Jul 2022 17:00:52 +0200 Subject: [PATCH 07/16] docs(adr): adr-009: fix formatting --- docs/adr/adr-009-telemetry.md | 100 ++++++++++++++++++++-------------- 1 file changed, 59 insertions(+), 41 deletions(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index c8df51c50a..92c85978ad 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -7,23 +7,28 @@ * 2022-07-11: Stylistic improvements from @renaynay * 2022-07-14: Stylistic improvements from @liamsi * 2022-07-15: Stylistic improvements from @rootulp and @bidon15 +* 2022-07-29: Formatting fixes -## Authors +## Authors @Wondertan @liamsi ## Glossary -- `ShrEx` - P2P Share Exchange Stack + +* `ShrEx` - P2P Share Exchange Stack + > It's all ogre now ## Context + > Now I know why I don't like writing ADRs - because I cannot run/test them and see if they work or not. > Hoping that quality team feedback will solve this problem! -Celestia Node needs deeper observability of each module and their components. The only integrated observability solution +Celestia Node needs deeper observability of each module and their components. The only integrated observability solution we have is logging and there are two more options we need to explore from the observability triangle(tracing, metrics and logs). There are several priorities and "why"s we need deeper observability: + * Establishing metrics/data driven engineering culture for celestia-node devs * Metrics and tracing allows extracting dry facts out of any software on its performance, liveness, bottlenecks, regressions, etc., on whole system scale, so devs can reliably respond @@ -44,6 +49,7 @@ There are several priorities and "why"s we need deeper observability: * Production This ADR is intended to outline the decisions on how to proceed with: + * Integration plan according to the priorities and the requirements * What observability tools/dependencies to integrate * Integration design into Celestia-Node for each observability option @@ -56,22 +62,22 @@ This ADR is intended to outline the decisions on how to proceed with: #### First Priority The first priority lies on "ShrEx" stack analysis results for Celestia project. The outcome will tell us whether -our current [Full Node reconstruction](https://github.com/celestiaorg/celestia-node/issues/602) qualities conforms to -the main network requirements, subsequently affecting the development roadmap of the celestia-node before the main -network launch. Basing on the former, the plan is focused on unblocking the reconstruction -analysis first and then proceed with steady covering of our codebase with traces for the complex codepaths as well as +our current [Full Node reconstruction](https://github.com/celestiaorg/celestia-node/issues/602) qualities conforms to +the main network requirements, subsequently affecting the development roadmap of the celestia-node before the main +network launch. Basing on the former, the plan is focused on unblocking the reconstruction +analysis first and then proceed with steady covering of our codebase with traces for the complex codepaths as well as metrics and dashboards for "measurables". -Fortunately, the `ShrEx` analysis can be performed with _tracing_ only(more on that in Tracing Design section below), -so the decision for the celestia-node team is to cover with traces only the _necessary_ for the current "ShrEx" stack -code as the initial response to the ADR, leaving the rest to be integrated in the background for the devs in the team +Fortunately, the `ShrEx` analysis can be performed with _tracing_ only(more on that in Tracing Design section below), +so the decision for the celestia-node team is to cover with traces only the _necessary_ for the current "ShrEx" stack +code as the initial response to the ADR, leaving the rest to be integrated in the background for the devs in the team once they are free as well as for the efficient bootstrapping into the code for the new devs. #### Second Priority The next biggest priority - incentivized Testnet can be largely covered with traces as well. All participant will submit -traces from their nodes to any provided backend endpoint by us during the whole network lifespan. Later on, we will be -able to verify the data of each participant by querying historical traces. This is the feature that some backend solutions +traces from their nodes to any provided backend endpoint by us during the whole network lifespan. Later on, we will be +able to verify the data of each participant by querying historical traces. This is the feature that some backend solutions provide, which we can use as well to extract valuable insight on how the network performs in macro view. ### Tooling/Dependencies @@ -79,10 +85,11 @@ provide, which we can use as well to extract valuable insight on how the network #### Golang API/Shim The decision is to use [opentelemetry-go](https://github.com/open-telemetry/opentelemetry-go) for both Metrics and Tracing: + * Minimal and golang savvy API/shim which gathers years of experience from OpenCensus/OpenMetrics and [CNCF](https://www.cncf.io/) * Backends/exporters for all the existing timeseries monitoring DBs, e.g. Prometheus, InfluxDB. As well as tracing backends Jaeger, Uptrace, etc. -* https://github.com/uptrace/opentelemetry-go-extra/tree/main/otelzap with logging engine with use - Zap +* with logging engine we use - Zap The discussion over this decision can be found in [celestia-node#663](https://github.com/celestiaorg/celestia-node/issues/663) and props to @liamsi for initial kickoff and a deep dive into OpenTelemetry. @@ -90,6 +97,7 @@ and props to @liamsi for initial kickoff and a deep dive into OpenTelemetry. #### Tracing Backends For tracing, there are 3 modern OSS tools that are recommended. All of them have bidirectional support with OpenTelemetry: + * [Uptrace](https://get.uptrace.dev/guide/#what-is-uptrace) * The most recent (~1 year) * The richest UI @@ -105,11 +113,13 @@ For tracing, there are 3 modern OSS tools that are recommended. All of them have * Relatively new (~2 years) * Uses Azure, GCS, S3 or local disk for storage -Each of these backends can be used independently and depending on the use case. For us, these are main use cases: +Each of these backends can be used independently and depending on the use case. For us, these are main use cases: + * Local development/debugging for the private network or even public network setup * Data collection from the Testground test runs * Bootstrappers monitoring infrastructure * Data collection from the incentivized testnet participants + > I am personally planning to set up the lightweight Uptrace for the local light node. Just to play around and observe > things @@ -124,37 +134,39 @@ are free to use any recommended solution or any unlisted. ### Tracing Design -Tracing allows to see _how_ any process progresses through different modules, APIs and networks, as well as timings of +Tracing allows to see _how_ any process progresses through different modules, APIs and networks, as well as timings of each operation and any events or errors as they occur. A visual example of a generic tracing dashboard provided via [Uptrace](https://uptrace.dev/) backend ![tracing](img/tracing-dashboard.png) Mainly, for `ShrEx` and reconstruction analysis we need to know if the reconstruction succeeded and the time it took for -the big block sizes(EDS >= 128). The tracing in this case would provide all the data for the whole reconstruction +the big block sizes(EDS >= 128). The tracing in this case would provide all the data for the whole reconstruction operation and for each sub operation within reconstruction, e.g time spend specifically on erasure coding > NOTE: The exact compute time is not available unless [rsmt2d#107](https://github.com/celestiaorg/rsmt2d/issues/107) > is fixed. #### Spans -Span represents an operation (unit of work) in a trace. They keep the time when operation _started_ and _ended_. Any -additional user defined _attributes_, operation status(success or error with an error itself) and events/logs that +Span represents an operation (unit of work) in a trace. They keep the time when operation _started_ and _ended_. Any +additional user defined _attributes_, operation status(success or error with an error itself) and events/logs that may happen during the operation. Spans also form a parent tree, meaning that each span associated to a process can have multiple sub processes or child -spans and vise-versa. Altogether, this feature allows to see the whole trace of execution of any part of the system, no +spans and vise-versa. Altogether, this feature allows to see the whole trace of execution of any part of the system, no matter how complex it is. This is exactly what we need to analyze our reconstruction performance. #### Integration Example -First, we define global pkg level tracer to create spans from within `ipld` pkg. Basically, it groups spans under +First, we define global pkg level tracer to create spans from within `ipld` pkg. Basically, it groups spans under common logical namespace and extends the full name of each span. + ```go var tracer = otel.Tracer("ipld") ``` Then, we define a root span in `ipld.Retriever`: + ```go import "go.opentelemetry.io/otel" @@ -171,19 +183,21 @@ func (r *Retriever) Retrieve(ctx context.Context, dah *da.DataAvailabilityHeader ``` Next, the child span in `ipld.Retriever.Reconstruct`: + ```go - ctx, span := tracer.Start(ctx, "reconstruct-square") - defer span.End() - - // and try to repair with what we have - err := rs.squareImported.Repair(rs.dah.RowsRoots, rs.dah.ColumnRoots, rs.codec, rs.treeFn) - if err != nil { - span.RecordError(err) - return nil, err - } + ctx, span := tracer.Start(ctx, "reconstruct-square") + defer span.End() + + // and try to repair with what we have + err := rs.squareImported.Repair(rs.dah.RowsRoots, rs.dah.ColumnRoots, rs.codec, rs.treeFn) + if err != nil { + span.RecordError(err) + return nil, err + } ``` And lastly, the quadrant request event: + ```go span.AddEvent("requesting quadrant", trace.WithAttributes( attribute.Int("axis", q.source), @@ -192,21 +206,23 @@ And lastly, the quadrant request event: attribute.Int("size", len(q.roots)), )) ``` + > The above is only examples related to our code and is a subject to change. Here is the result of the above code sending traces visualized on Jaeger UI ![tracing](img/trace-jaeger.png) -#### Backends connection +#### Backends connection Jaeger example + ```go // Create the Jaeger exporter exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url))) if err != nil { return nil, err } - // then the tracer provider + // then the tracer provider tp := tracesdk.NewTracerProvider( // Always be sure to batch in production. tracesdk.WithBatcher(exp), @@ -218,10 +234,10 @@ Jaeger example attribute.Int64("ID", id), )), ) - // and set it globally to be used across packages + // and set it globally to be used across packages otel.SetTracerProvider(tp) - - // then close it elsewhere + + // then close it elsewhere tp.Shutdown(ctx) ``` @@ -237,17 +253,19 @@ Jaeger example ## Other As you will see in the examples below, tracing looks similar to logging and have almost the same semantics. In fact, -tracing is debug logging on steroids, and we can potentially consider dropping conventional _debug_ logging once we +tracing is debug logging on steroids, and we can potentially consider dropping conventional _debug_ logging once we fully cover our codebases with the tracing. Same as logging, traces can be pipe out into the stdout as prettyprinted event log. ## Further Readings -- [Uptrace tracing tools comparison](https://get.uptrace.dev/compare/distributed-tracing-tools.html) -- [Uptrace guide](https://get.uptrace.dev/guide/) -- [Uptrace OpenTelemetry Docs](https://opentelemetry.uptrace.dev/) -> Provides simple Go API guide for metrics and traces -- [OpenTelemetry Docs](https://opentelemetry.io/docs/) -- [Prometheus Docs](https://prometheus.io/docs/introduction/overview) + +* [Uptrace tracing tools comparison](https://get.uptrace.dev/compare/distributed-tracing-tools.html) +* [Uptrace guide](https://get.uptrace.dev/guide/) +* [Uptrace OpenTelemetry Docs](https://opentelemetry.uptrace.dev/) + * Provides simple Go API guide for metrics and traces +* [OpenTelemetry Docs](https://opentelemetry.io/docs/) +* [Prometheus Docs](https://prometheus.io/docs/introduction/overview) ## Status + Proposed From 8c335dd88c43353cd653ee7af21bbf9521b0a38e Mon Sep 17 00:00:00 2001 From: Wondertan Date: Fri, 29 Jul 2022 18:44:13 +0200 Subject: [PATCH 08/16] docs(adr-009): add more info and clarifications regarding Uptrace usability and remove incorrect information --- docs/adr/adr-009-telemetry.md | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index 92c85978ad..727d3c2913 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -8,6 +8,7 @@ * 2022-07-14: Stylistic improvements from @liamsi * 2022-07-15: Stylistic improvements from @rootulp and @bidon15 * 2022-07-29: Formatting fixes +* 2022-07-29: Clarify and add more info regarding Uptrace ## Authors @@ -80,6 +81,10 @@ traces from their nodes to any provided backend endpoint by us during the whole able to verify the data of each participant by querying historical traces. This is the feature that some backend solutions provide, which we can use as well to extract valuable insight on how the network performs in macro view. +#### Third Priority + +Enabling total observability of the node through metrics and traces. + ### Tooling/Dependencies #### Golang API/Shim @@ -100,9 +105,7 @@ For tracing, there are 3 modern OSS tools that are recommended. All of them have * [Uptrace](https://get.uptrace.dev/guide/#what-is-uptrace) * The most recent (~1 year) - * The richest UI * Tight to Clickhouse DB - * Made by OpenTelemetry * The most lightweight * [Jaeger](https://www.jaegertracing.io/) * The most mature @@ -122,6 +125,7 @@ Each of these backends can be used independently and depending on the use case. > I am personally planning to set up the lightweight Uptrace for the local light node. Just to play around and observe > things +> UPDATE: It turns out it is not that straightforward and adds additional overhead. See #Other-Findings There is no strict decision on which of these backends and where to use. People taking ownership of any listed vectors are free to use any recommended solution or any unlisted. @@ -249,14 +253,33 @@ Jaeger example * Tracing performance * _Every_ method calling two more functions making network request can affect overall performance +* Security and exported data protection + * OTLP provides TLS support -## Other +## Other Findings + +### Tracing and Logging As you will see in the examples below, tracing looks similar to logging and have almost the same semantics. In fact, tracing is debug logging on steroids, and we can potentially consider dropping conventional _debug_ logging once we fully cover our codebases with the tracing. Same as logging, traces can be pipe out into the stdout as prettyprinted event log. +### Uptrace + +It turns out that running only Uptrace locally Collector is PITA. It requires either: + +* Using their [uptrace-go](https://github.com/uptrace/uptrace-go/blob/master/example/metrics/main.go) custom OTel wrapper + * For some undocumented reason they decided to go with a custom wrapper while it's possible to use OTel with Uptrace +directly +* The direct usage though also requires additional frictions and does not work with defaults. Requires: + * Token auth to send data + * Custom URL and path + * Maintaining config for itself and clickhouse + +Overall, it is not user-friendly alternative to known projects, even thought it still does not require running Otel +Collector and absorbs both tracing and metrics. + ## Further Readings * [Uptrace tracing tools comparison](https://get.uptrace.dev/compare/distributed-tracing-tools.html) From 4163cb67f5ea40606756e05e0353669740700e5c Mon Sep 17 00:00:00 2001 From: Wondertan Date: Wed, 10 Aug 2022 18:58:43 +0200 Subject: [PATCH 09/16] docs(adr-009): cover metrics and more info on tracing --- docs/adr/adr-009-telemetry.md | 207 +++++++++++++++++++++++++++++++--- 1 file changed, 191 insertions(+), 16 deletions(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index 727d3c2913..07307c87b3 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -9,6 +9,7 @@ * 2022-07-15: Stylistic improvements from @rootulp and @bidon15 * 2022-07-29: Formatting fixes * 2022-07-29: Clarify and add more info regarding Uptrace +* 2022-08-09: Cover metrics and add more info about trace ## Authors @@ -54,7 +55,8 @@ This ADR is intended to outline the decisions on how to proceed with: * Integration plan according to the priorities and the requirements * What observability tools/dependencies to integrate * Integration design into Celestia-Node for each observability option -* A reference document explaining "whats" and "hows" during integration in some part of the codebase, e.g. new dev +* A reference document explaining "whats" and "hows" during integration in some part of the codebase +* A primer for any developer in celestia-node to quickly onboard into Telemetry ## Decisions @@ -62,7 +64,7 @@ This ADR is intended to outline the decisions on how to proceed with: #### First Priority -The first priority lies on "ShrEx" stack analysis results for Celestia project. The outcome will tell us whether +The first priority lies on "ShrEx" stack analysis results for Celestia project. The outcome will tell us whether our current [Full Node reconstruction](https://github.com/celestiaorg/celestia-node/issues/602) qualities conforms to the main network requirements, subsequently affecting the development roadmap of the celestia-node before the main network launch. Basing on the former, the plan is focused on unblocking the reconstruction @@ -74,20 +76,30 @@ so the decision for the celestia-node team is to cover with traces only the _nec code as the initial response to the ADR, leaving the rest to be integrated in the background for the devs in the team once they are free as well as for the efficient bootstrapping into the code for the new devs. +___Update:___ The `ShrEx` analysis is not the blocker nor the highest priority at the moment of writing. + #### Second Priority -The next biggest priority - incentivized Testnet can be largely covered with traces as well. All participant will submit +The next biggest priority - incentivized testnet can be largely covered with traces as well. All participant will submit traces from their nodes to any provided backend endpoint by us during the whole network lifespan. Later on, we will be able to verify the data of each participant by querying historical traces. This is the feature that some backend solutions provide, which we can use as well to extract valuable insight on how the network performs in macro view. +Even though incentivised testnet goal can be largely covered by traces in terms of observability, the metrics for this +priority are desirable, as metrics provide: + +* Easily queryable time-series data +* Extensive tooling to build visualization for that data + +Both, can facilitate implementation of global network observability dashboard, participant validation for the goal. + #### Third Priority Enabling total observability of the node through metrics and traces. ### Tooling/Dependencies -#### Golang API/Shim +#### Telemetry Golang API/Shim The decision is to use [opentelemetry-go](https://github.com/open-telemetry/opentelemetry-go) for both Metrics and Tracing: @@ -95,22 +107,35 @@ The decision is to use [opentelemetry-go](https://github.com/open-telemetry/open * Backends/exporters for all the existing timeseries monitoring DBs, e.g. Prometheus, InfluxDB. As well as tracing backends Jaeger, Uptrace, etc. * with logging engine we use - Zap +* Provides first-class support/implementation for/of generic [OTLP](https://opentelemetry.io/docs/reference/specification/protocol/)(OpenTelemetry Protocol) + * Generic format for any telemetry data. + * Allows integrating otel-go once and use it with any known backend, either + * Supporting OTLP natively + * Or through [OTel Collector]((https://opentelemetry.io/docs/collector/)) + * Allows exporting telemetry to one endpoint only([opentelemetry-go#3055](https://github.com/open-telemetry/opentelemetry-go/issues/3055)) The discussion over this decision can be found in [celestia-node#663](https://github.com/celestiaorg/celestia-node/issues/663) and props to @liamsi for initial kickoff and a deep dive into OpenTelemetry. #### Tracing Backends -For tracing, there are 3 modern OSS tools that are recommended. All of them have bidirectional support with OpenTelemetry: +For tracing, there are 4 modern OSS tools that are recommended. All of them have bidirectional support with OpenTelemetry: +* [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) + * Tracing data proxy from a OTLP client to __any__ backend + * Supports a [long list of backends](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter) * [Uptrace](https://get.uptrace.dev/guide/#what-is-uptrace) * The most recent (~1 year) * Tight to Clickhouse DB * The most lightweight + * Supports OTLP + * OSS and can be deployed locally + * Provides hosted solution * [Jaeger](https://www.jaegertracing.io/) * The most mature * Started by Uber, now supported by CNCF * Supports multiple storages(ScyllaDB, InfluxDB, Amazon DynamoDB) + * Supports OTLP * [Graphana Tempo](https://grafana.com/oss/tempo/) * Deep integration with Graphana/Prometheus * Relatively new (~2 years) @@ -125,14 +150,43 @@ Each of these backends can be used independently and depending on the use case. > I am personally planning to set up the lightweight Uptrace for the local light node. Just to play around and observe > things -> UPDATE: It turns out it is not that straightforward and adds additional overhead. See #Other-Findings +> +> __UPDATE__: It turns out it is not that straightforward and adds additional overhead. See #Other-Findings There is no strict decision on which of these backends and where to use. People taking ownership of any listed vectors -are free to use any recommended solution or any unlisted. +are free to use any recommended solution or any unlisted. The only backend requirement is the support of OTLP, natively +or through OTel Collector. The latter though, introduces additional infrastructure piece which adds unnecessary complexity +for node runners, and thus not recommended. #### Metrics Backend -// WIP +We only consider OSS backends. + +* [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/) + * Push based + * Metrics data proxy from a OTLP client to __any__ backend + * Supports a [long list of backends](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter) +* [Netdata](https://github.com/netdata/netdata) + * Push based + * Widely supported option in the Linux community + * Written in C + * Decade of experience optimized to bare metal + * Perfect for local monitoring setups + * Unfortunately, does not support OTLP +* [Uptrace](https://get.uptrace.dev/guide/#what-is-uptrace) + * The most recent (~1 year) + * Tight to Clickhouse DB + * The most lightweight + * Supports OTLP + * OSS and can be deployed locally + * Provides hosted solution +* Prometheus+Graphana + * Pull based + * No native OTLP support + * Thought there [spec](https://github.com/open-telemetry/wg-prometheus/blob/main/specification.md) to fix this + * Still, can be used with Otel Collector + +Similarly, no strictness around backend solution with only OTLP support requirement. Natively or through OTLP exporter. ## Design @@ -160,7 +214,7 @@ Spans also form a parent tree, meaning that each span associated to a process ca spans and vise-versa. Altogether, this feature allows to see the whole trace of execution of any part of the system, no matter how complex it is. This is exactly what we need to analyze our reconstruction performance. -#### Integration Example +#### Tracing Integration Example First, we define global pkg level tracer to create spans from within `ipld` pkg. Basically, it groups spans under common logical namespace and extends the full name of each span. @@ -218,14 +272,14 @@ Here is the result of the above code sending traces visualized on Jaeger UI #### Backends connection -Jaeger example +Example for Jaeger ```go - // Create the Jaeger exporter - exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url))) - if err != nil { - return nil, err - } + // Create the Jaeger exporter + exp, err := jaeger.New(jaeger.WithCollectorEndpoint(jaeger.WithEndpoint(url))) + if err != nil { + return nil, err + } // then the tracer provider tp := tracesdk.NewTracerProvider( // Always be sure to batch in production. @@ -245,19 +299,140 @@ Jaeger example tp.Shutdown(ctx) ``` +We decided to use OTLP backend, and it is almost similar in terms of setup. + ### Metrics Design -// WIP +Metrics allows collecting time-series data from different measurable points in the application. Every measurable can +be covered via 6 instruments OpenTelemetry provides: + +* ___Counter___ - synchronous instrument that measures additive non-decreasing values. +* ___UpDownCounter___ - synchronous instrument which measures additive values that increase or decrease with time. +* ___Histogram___ - synchronous instrument that produces a histogram from recorded values. +* ___CounterObserver___ - asynchronous instrument that measures additive non-decreasing values. +* ___UpDownCounterObserver___ - asynchronous instrument that measures additive values that can increase or decrease with time. +* ___GaugeObserver___ - asynchronous instrument that measures non-additive values for which sum does not produce a meaningful correct result. + +#### Metrics Integration Example + +Consider we want to know report current network height as a metric. + +First of all, the global pkg meter has to be defined in the code related to the desired metric. In our case it is `header` pkg. + +```go +var meter = global.MeterProvider().Meter("header") +``` + +Next, we should understand what instrument to use. On the first glance, for chain height a ___Counter___ instrument should +fit, as it is a non-decreasing value, and then we should think whether we need a sync or async version of it. For our case, +both would work and its more the question of precision we want. Sync metering would report every height change, while +the async would poke `header` pkg API periodically to get the metered data. For our example, we will go with the latter. + +```go +// MonitorHead enables Otel metrics to monitor head. +func MonitorHead(store Store) { + headC, _ := meter.AsyncInt64().Counter( + "head", + instrument.WithUnit(unit.Dimensionless), + instrument.WithDescription("Subjective head of the node"), + ) + + err := meter.RegisterCallback( + []instrument.Asynchronous{ + headC, + }, + func(ctx context.Context) { + head, err := store.Head(ctx) + if err != nil { + headC.Observe(ctx, 0, attribute.String("err", err.Error())) + return + } + + headC.Observe( + ctx, + head.Height, + attribute.Int("square_size", len(head.DAH.RowsRoots)), + ) + }, + ) + if err != nil { + panic(err) + } +} +``` + +The example follows a solely API-based approach without the need to integrate the metric deeper into the implementation +insides, which is nice and keeps metering decoupled from business logic. The `MonitorHead` func simply accepts the `Store` +interface and reads the information about the latest subjective header via `Head` on the node. + +The API-based approach should be followed for any info level metric. Even if there is no API to get the required metric, +such API should be introduced. However, this approach is not always possible and sometimes deeper integration with code +logic is necessary to analyze performance or there are security and/or encapsulation considerations. + +On the example, we can also see how any additional data can be added to the instruments via attributes or labels. It is +important to add only absolutely necessary data(more on that in Others section below) to the metrics or data which is +common over multiple time-series. In this case, we attach `square_size` of the height to know the block size of the +height. This allows us to query reported heights with some square size using backend UI. Note that there are only +powers of two(with 256 being a current limit) as unique values possible for the metric, so it won't put pressure on the +metrics backend. + +For in Go code examples on other metric instruments consult [Uptrace Otel docs](https://uptrace.dev/opentelemetry/go-metrics.html#getting-started). + +#### Backends Connection + +Example for OTLP extracted from our code + +```go + opts := []otlpmetrichttp.Option{ + otlpmetrichttp.WithCompression(otlpmetrichttp.GzipCompression), + otlpmetrichttp.WithEndpoint(cmd.Flag(metricsEndpointFlag).Value.String()), + } + if ok, err := cmd.Flags().GetBool(metricsTlS); err != nil { + panic(err) + } else if !ok { + opts = append(opts, otlpmetrichttp.WithInsecure()) + } + + exp, err := otlpmetrichttp.New(cmd.Context(), opts...) + if err != nil { + return err + } + + pusher := controller.New( + processor.NewFactory( + selector.NewWithHistogramDistribution(), + exp, + ), + controller.WithExporter(exp), + controller.WithCollectPeriod(2*time.Second), + controller.WithResource(resource.NewWithAttributes( + semconv.SchemaURL, + semconv.ServiceNameKey.String(fmt.Sprintf("Celestia-%s", env.NodeType.String())), + // Here we can add more attributes with Node information + )), + ) +``` ## Considerations * Tracing performance * _Every_ method calling two more functions making network request can affect overall performance +* Metrics backend performance + * Mainly, we should avoid sending too much data to the metrics backend through labels. Metrics is only for metrics and +not for indexing. +e.g. hash, uuid, etc not to overload the metrics backend * Security and exported data protection * OTLP provides TLS support ## Other Findings +### Labels and High Cardinality + +High cardinality(many different label values) issue should be always kept in mind while introducing new metrics +and labels for them. Each metric should be attached with only absolutely necessary labels and stay away from metrics +sending label __unique__ values each time, e.g. hash, uuid, etc. Doing the opposite can dramatically increase the +amount of data stored. See . + ### Tracing and Logging As you will see in the examples below, tracing looks similar to logging and have almost the same semantics. In fact, From a140a9876461f9cf0aab1cc2093162c0dc33986c Mon Sep 17 00:00:00 2001 From: ramin Date: Mon, 26 Feb 2024 10:52:28 +0000 Subject: [PATCH 10/16] Update docs/adr/adr-009-telemetry.md Co-authored-by: Rootul P --- docs/adr/adr-009-telemetry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index 07307c87b3..f9b94466b3 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -200,7 +200,7 @@ A visual example of a generic tracing dashboard provided via [Uptrace](https://u Mainly, for `ShrEx` and reconstruction analysis we need to know if the reconstruction succeeded and the time it took for the big block sizes(EDS >= 128). The tracing in this case would provide all the data for the whole reconstruction -operation and for each sub operation within reconstruction, e.g time spend specifically on erasure coding +operation and for each sub operation within reconstruction, e.g time spent specifically on erasure coding > NOTE: The exact compute time is not available unless [rsmt2d#107](https://github.com/celestiaorg/rsmt2d/issues/107) > is fixed. From 7ecab4382f29e1ef58fde2f2857c75f42dbf33ff Mon Sep 17 00:00:00 2001 From: ramin Date: Mon, 26 Feb 2024 10:52:53 +0000 Subject: [PATCH 11/16] Update docs/adr/adr-009-telemetry.md Co-authored-by: Ismail Khoffi --- docs/adr/adr-009-telemetry.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index f9b94466b3..107db4ebe1 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -23,9 +23,6 @@ ## Context -> Now I know why I don't like writing ADRs - because I cannot run/test them and see if they work or not. -> Hoping that quality team feedback will solve this problem! - Celestia Node needs deeper observability of each module and their components. The only integrated observability solution we have is logging and there are two more options we need to explore from the observability triangle(tracing, metrics and logs). From 8a4ae84a8dcfa9706e07f9271bc18b7581f659e4 Mon Sep 17 00:00:00 2001 From: ramin Date: Mon, 26 Feb 2024 10:53:09 +0000 Subject: [PATCH 12/16] Update docs/adr/adr-009-telemetry.md Co-authored-by: Rootul P --- docs/adr/adr-009-telemetry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index 107db4ebe1..76e0dce7a1 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -312,7 +312,7 @@ be covered via 6 instruments OpenTelemetry provides: #### Metrics Integration Example -Consider we want to know report current network height as a metric. +Consider we want to report the current network height as a metric. First of all, the global pkg meter has to be defined in the code related to the desired metric. In our case it is `header` pkg. From 5ea837331eeabc0a4d8f6506f4b935d58c9c2e8d Mon Sep 17 00:00:00 2001 From: ramin Date: Mon, 26 Feb 2024 10:53:39 +0000 Subject: [PATCH 13/16] Update docs/adr/adr-009-telemetry.md Co-authored-by: Rootul P --- docs/adr/adr-009-telemetry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index 76e0dce7a1..ab6ff34ce4 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -208,7 +208,7 @@ additional user defined _attributes_, operation status(success or error with an may happen during the operation. Spans also form a parent tree, meaning that each span associated to a process can have multiple sub processes or child -spans and vise-versa. Altogether, this feature allows to see the whole trace of execution of any part of the system, no +spans and vice-versa. Altogether, this feature allows to see the whole trace of execution of any part of the system, no matter how complex it is. This is exactly what we need to analyze our reconstruction performance. #### Tracing Integration Example From 36fa82a07b7376fe2b967f4101101d97e08510af Mon Sep 17 00:00:00 2001 From: ramin Date: Mon, 26 Feb 2024 10:53:56 +0000 Subject: [PATCH 14/16] Update docs/adr/adr-009-telemetry.md Co-authored-by: Rootul P --- docs/adr/adr-009-telemetry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index ab6ff34ce4..e6cf8e63e6 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -373,7 +373,7 @@ height. This allows us to query reported heights with some square size using bac powers of two(with 256 being a current limit) as unique values possible for the metric, so it won't put pressure on the metrics backend. -For in Go code examples on other metric instruments consult [Uptrace Otel docs](https://uptrace.dev/opentelemetry/go-metrics.html#getting-started). +For Go code examples on other metric instruments consult [Uptrace Otel docs](https://uptrace.dev/opentelemetry/go-metrics.html#getting-started). #### Backends Connection From 05d51de226ad0b6269debad8f52cba1ca48a9664 Mon Sep 17 00:00:00 2001 From: ramin Date: Mon, 26 Feb 2024 10:54:46 +0000 Subject: [PATCH 15/16] Update docs/adr/adr-009-telemetry.md Co-authored-by: Rootul P --- docs/adr/adr-009-telemetry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index e6cf8e63e6..7004a23c4a 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -449,7 +449,7 @@ directly * Custom URL and path * Maintaining config for itself and clickhouse -Overall, it is not user-friendly alternative to known projects, even thought it still does not require running Otel +Overall, it is not user-friendly alternative to known projects, even though it still does not require running Otel Collector and absorbs both tracing and metrics. ## Further Readings From 9afb2ebd49c50d285b5b65277cb010692c794813 Mon Sep 17 00:00:00 2001 From: ramin Date: Mon, 26 Feb 2024 10:54:59 +0000 Subject: [PATCH 16/16] Update docs/adr/adr-009-telemetry.md Co-authored-by: Rootul P --- docs/adr/adr-009-telemetry.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/adr/adr-009-telemetry.md b/docs/adr/adr-009-telemetry.md index 7004a23c4a..8fcfec2dd7 100644 --- a/docs/adr/adr-009-telemetry.md +++ b/docs/adr/adr-009-telemetry.md @@ -434,7 +434,7 @@ amount of data stored. See As you will see in the examples below, tracing looks similar to logging and have almost the same semantics. In fact, tracing is debug logging on steroids, and we can potentially consider dropping conventional _debug_ logging once we -fully cover our codebases with the tracing. Same as logging, traces can be pipe out into the stdout as prettyprinted +fully cover our codebases with the tracing. Same as logging, traces can be piped out into the stdout as prettyprinted event log. ### Uptrace