Expose metrics

Description

Introduce gauges to track values over time, like open connections, in-flight requests, etc.

We currently expose point-in-time information of the state of the driver, via Session.GetState(), like open connections and in-flight requests and the user has to manually export it to a reporter or sink, if needed. Maybe we could expose them as gauges, even though there is no built-in support for that (similar to ETW for Windows or LTTNG for Linux).

There are several metrics libraries that provide the notion Gauge but none of them are very popular. Also, without an equivalent of JMX, a library can help with reporting but it must be defined in the application explicitly.

In any case, AppMetrics looks promising for Gauges but its too recent (user base seems small). It's based on Metrics.NET, which is a port of Java Dropwizard Metrics library. AppMetrics supports .NET 4.5.2+ and .NET Standard 1.6+ (it doesn't support .NET Standard 1.5 which we support).

Edit: Attached a list of metrics available in java driver 4.x

Environment

None

Pull Requests

None

Assignee

Unassigned

Reporter

Jorge Bay Gondra

Labels

None

PM Priority

B

External issue ID

None

Doc Impact

None

Reviewer

None

Pull Request

None

Epic Link

Sprint

Size

None

Priority

Major
Configure