Introduction

build
GitHub Pages

Diginsight telemetry is a set .Net packages that that provides automatic observability for dotnet applications.
In particular, the full application flow is made available to local text based streams such as traditional file logs, the Console Log or the Azure Streaming Log and also to remote analysis tools such as Azure Monitor and Prometheus/Grafana.

Diginsight allows observability of the full application lifecycle, including static methods, injection sequences and the application startup and shutdown sequences where configuration problems and much complexity are often hidden.

Diginsight telemetry is produced by standard ILogger<> and System.Diagnostic activity classes so it integrates (without replacing) other logging systems telemetry. Also, diginsight telemetry is fully integrated with Opentelemetry and the W3C Trace Context Specification so traceids are preserved across process invocations of a distributed system.

Diginsight telemetry targets all dotnet framework versions starting from netstandard2.0.
Samples are available on telemetry.samples repository to demonstrate use of telemetry on .net 4.8 up to [blazor webassembly,].net6 and .net8+ assemblies.
> Diginsight telemetry can capture automatically database queries, outgoing requests as well as missing configuration data.
This makes it is an invaluable companion for troubleshooting problems related to missing or invalid data.

> Diginsight Telemetry is fully dynamic: minimal data can be enabled by default, on live environments.
Full execution flow observability can be enabled on demand for specific components or specific requests.

Diginsight Telemetry fully dynamic and automatic nature can be a strong base for automatic problems analysis and resolution.

Additional Information

Diginsight telemetry is readable, consistent and efficient:

  • readable: telemetry is easily readable on local troubleshooting tools, live server consoles and remote analysis tools such as the Azure monitor. The generated application flow is consistent with application code so that problems understanding is much simplified.
  • consistent: the application flow is rendered consistently on local troubleshooting tools, where maximun flow detail is available, and to the remote analysis tools such as the Azure monitor, where metrics and data from past executions can be easily compared.
  • efficient: application flow is generated with fully optimized techniques (such as dynamic compilation). Also, the full application flow observability can be enabled dynamically and only on the specific executions that are under analysis. this ensures that diginsight can be leveraged with no pratical impact on application performance.

The image below shows the text based stream associated to to a Web API call. alt text

The following image shows the same call on the Azure Monitor Transaction Detail where the call structure is shown as a hierarchy of activities (also called spans) and trace details: alt text Please, note that the transaction involves two services invocations.
The first image reports the detailed log stream for first web application call (PlantsController.GetPlantsAsync).
The latter image shows the full transaction detail on Azure Monitor.
Both invocations are correlated by the same traceId so, for every transaction, the: the full flow is visible across all services invocations.

Full observability on live environments can be supported with dynamic logging.
Live environments logging level is normally limited to Warning or Information to avoid any cost and performance impact from the telemetry produced by applications.
With dynamic logging Log level can be raied to debug or trace for a single call, for example, by means of the Log-Level http headers.

The image below shows a call to a live environment where the log level is set to Debug or Trace for 2 categories: alt text

The image below shows the live environment App Service console where our call is traced with full datail, while other calls are being processed with limited Log level. alt text

Performance information gathered by diginsight can be analyzed in the form of metrics.
The following image shows the Azure Monitor Metrics dashboard where method invocations and latencies can be analized in value and frequency: alt text

Intelligent sampling, dynamic compilation, automatic truncation and other strategies are used to maximize application efficiency and minimize telemetry cost
For these reasons Local analysis and analysis on the remote tools can be supported without compromises on performance and without compromises on cost of telemetry in test and production environments.

HowTo: Use diginsight telemetry with no impact on Application performance an telemetry cost
Explores how diginsight telemetry can be used without impact on application performance and telemetry cost.

Learn more

The following articles provide easy steps to integrate diginsight into our code, how to configure telemetry for the local text based strams and how to configure telemetry for the remote analysis tools.
Also, details are provided to use its relevant features such as Dynamic configuration and Dynamic Logging.

Example code used in the articles is also available in the telemetry.samples repository.

Advanced topics:

Team and contributors:

  • About: Diginsight is a team of friends (engineers, scientists…) with passion for technology, experimenting ideas and excellence.


Summary

Diginsight telemetry is a comprehensive suite of .NET packages designed to provide automatic observability for .NET applications. It enables developers to gain deep insights into the full application lifecycle, from startup to shutdown, including static methods and injection sequences.

By leveraging standard ILogger<> and System.Diagnostics activity classes, Diginsight telemetry integrates seamlessly with existing logging systems and supports OpenTelemetry and the W3C Trace Context Specification.

Key features of Diginsight telemetry include: - Automatic Observability: Capture detailed telemetry data without manual instrumentation. - Full Lifecycle Coverage: Monitor application behavior from startup to shutdown. - Seamless Integration: Works with existing logging systems and supports OpenTelemetry. - Dynamic Configuration: Enable full observability on-demand for specific components or requests. - Performance Optimization: Uses intelligent sampling, dynamic compilation, and other strategies to minimize performance impact and telemetry cost.

With Diginsight telemetry, you can troubleshoot issues more effectively, understand application behavior, and ensure optimal performance in both test and production environments.

Samples

You can start using diginsight telemetry by running the samples on the telemetry.samples repository.

Article HOWTO - Use Diginsight Samples: explores how we can use diginsight samples to test and understand integration of Diginsight telemetry in our own projects.

alt text

Build and Test

You can easily test Diginsight integration with OpenTelemetry by means of the EasySampleBlazorv2 project: - Clone diginsight repository - Open and build solution Diginsight.sln. - build the solution



Contribute

Contribute to the repository with your pull requests.

License

See the LICENSE file for license rights and limitations (MIT).

Back to top