Petabridge.OpenTelemetry.Instrumentation.Sockets 1.0.0-beta3

Prefix Reserved
This is a prerelease version of Petabridge.OpenTelemetry.Instrumentation.Sockets.
dotnet add package Petabridge.OpenTelemetry.Instrumentation.Sockets --version 1.0.0-beta3
                    
NuGet\Install-Package Petabridge.OpenTelemetry.Instrumentation.Sockets -Version 1.0.0-beta3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Petabridge.OpenTelemetry.Instrumentation.Sockets" Version="1.0.0-beta3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Petabridge.OpenTelemetry.Instrumentation.Sockets" Version="1.0.0-beta3" />
                    
Directory.Packages.props
<PackageReference Include="Petabridge.OpenTelemetry.Instrumentation.Sockets" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Petabridge.OpenTelemetry.Instrumentation.Sockets --version 1.0.0-beta3
                    
#r "nuget: Petabridge.OpenTelemetry.Instrumentation.Sockets, 1.0.0-beta3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Petabridge.OpenTelemetry.Instrumentation.Sockets@1.0.0-beta3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Petabridge.OpenTelemetry.Instrumentation.Sockets&version=1.0.0-beta3&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Petabridge.OpenTelemetry.Instrumentation.Sockets&version=1.0.0-beta3&prerelease
                    
Install as a Cake Tool

Petabridge.OpenTelemetry.Instrumentation.Sockets

Nuget version Nuget downloads

An OpenTelemetry instrumentation package for collecting detailed metrics about TCP socket activity on Windows and Linux systems. This was developed by Petabridge to support our development work on Akka.NET.

What It Does

This package provides instrumentation for monitoring TCP connections and statistics directly from the operating system. It allows you to gather metrics such as:

  • Number of active TCP connections
  • Number of established TCP connections
  • Number of TCP connections in specific states (e.g., TIME_WAIT, CLOSE_WAIT)
  • TCP errors and resets
  • Segments sent and received

This information is crucial for understanding network performance, diagnosing connectivity issues, and monitoring the health of network-intensive applications.

Supported Platforms:

  • Windows (all stats)
  • Linux (active TCP connections and listeners only - see limited by .NET runtime platform support)

⚠️ Important Caveat: System-Wide Data Collection

Please be aware that this instrumentation gathers TCP data for the entire operating system environment, not just for the specific process where the instrumentation is running. The underlying APIs (iphlpapi.dll on Windows, /proc/net/tcp* on Linux) provide a system-wide view of TCP activity.

If you need process-specific network metrics, you will need to use different instrumentation methods or correlate this data with process-specific identifiers if possible.

Installation

You can install this package via the .NET CLI:

dotnet add package Petabridge.OpenTelemetry.Instrumentation.Sockets

Or via the NuGet Package Manager console:

Install-Package Petabridge.OpenTelemetry.Instrumentation.Sockets

Usage

To enable TCP socket instrumentation, add it to your OpenTelemetry MeterProvider configuration.

Basic Configuration:

This example shows how to add the instrumentation with default settings:

using OpenTelemetry.Metrics;
using Petabridge.OpenTelemetry.Instrumentation.Sockets; // <-- Add this using statement

// ... inside your service configuration (e.g., Program.cs or Startup.cs)
services.AddOpenTelemetry()
    .WithMetrics(builder =>
    {
        builder
            // Add other meters as needed
            .AddConsoleExporter() // Example exporter
            .AddSocketInstrumentation(); // <-- Add this line
    });

Custom Configuration:

You can customize the instrumentation behavior, such as the collection interval and which specific metrics to enable.

using System;
using OpenTelemetry.Metrics;
using Petabridge.OpenTelemetry.Instrumentation.Sockets; // <-- Add this using statement

// ... inside your service configuration
services.AddOpenTelemetry()
    .WithMetrics(builder =>
    {
        builder
            // Add other meters as needed
            .AddConsoleExporter() // Example exporter
            .AddSocketInstrumentation(configurator => // <-- Configure options
            {
                // Explicitly enable TCP connection state metrics (enabled by default)
                configurator.AddTcpConnectionInstrumentation();

                // Explicitly enable TCP statistics metrics (enabled by default)
                configurator.AddTcpStatisticsInstrumentation();
            });
    });

See the OpenTelemetry .NET documentation for more details on configuring exporters and the SDK.

Copyright 2015-2025 Petabridge, LLC.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0-beta3 4,103 5/5/2025
1.0.0-beta2 219 5/1/2025
1.0.0-beta1 139 4/30/2025

1.5.25 June 17 2024

           * [Updated Akka.NET to 1.5.25](https://github.com/akkadotnet/akka.net/releases/tag/1.5.25)