Socket

The App.Metrics.Reporting.Socket nuget package reports metrics through a socket. The reporter has no default output formatter, so one of the available formatters must be provided.

Getting started

To use the Socket reporter, first install the Socket nuget package:

nuget install App.Metrics.Reporting.Socket

Then install output formatter package of your choice.
For example, to report metrics into Telegraf the InfluxDB package is required:

nuget install App.Metrics.Formatters.InfluxDB

Capabilities

Socket reporter is transport layer to send data via sockets. Socket reporter supports TCP and UDP protocols for both Windows and Unix systems and Unix Domain Sockets for Unix. Reporter is unspecific to formatting protocols, so it can be used with any application that can receive data via sockets.

The reporter was tested with Telegraf. Plugin socket_listener was used to receive metrics.

To send metrics over TCP protocol:

var metrics = new MetricsBuilder()
    .Report.OverTcp("localhost", 8094)
    .Build();

To send metrics over UDP protocol:

var metrics = new MetricsBuilder()
    .Report.OverUdp("127.0.0.1", 8094)
    .Build();

To send metrics over Unix Domain Sockets:

var metrics = new MetricsBuilder()
    .Report.OverUds("//tmp/telegraf.sock")
    .Build();

Configuration

The reporter can be configured through an options object passed to the setup action. There are several reporter-specific and common options.

var formatter = new MetricsInfluxDbLineProtocolOutputFormatter();

var metrics = new MetricsBuilder()
    .Report.OverTcp(
        options => {
            options.SocketSettings.Address = "localhost";
            options.SocketSettings.Port = 8094;

            options.Filter = new MetricsFilter().WhereType(MetricType.Timer);
            options.FlushInterval = TimeSpan.FromSeconds(12);
            options.MetricsOutputFormatter = formatter;
            options.SocketPolicy = new SocketPolicy();
        })
    .Build();

Reporter-specific options are:

SocketSettings.Address SocketSettings.Port
OverTcp
OverUdp
Address of a socket endpoint
(DNS name or IP address)
Port of a socket endpoint
OverUds ”//path/to/socket/file”
(Works only on Unix)
The port must be 0

Common options are:

Option Description
MetricsOutputFormatter The formatter used for format metrics into a string which will be sent over sockets layer.
Filter The filter used to filter metrics.
FlushInterval The delay between each report attempt.
SocketPolicy.FailuresBeforeBackoff The number of failures before backing-off when failing to report metrics to a socket.
SocketPolicy.BackoffPeriod The TimeSpan to back-off when failing to report metrics to a socket.
SocketPolicy.Timeout The timeout duration when attempting to report metrics to a socket.