-
Notifications
You must be signed in to change notification settings - Fork 21
Open
Labels
good first issueGood for newcomersGood for newcomerskind/enhancementImprovements to existing feature.Improvements to existing feature.
Description
At present, the use of metrics dimensions results in some metrics being emitted in an unexpected way:
Timer(label: "my_event", dimensions: [("foo", "bar")]).recordNanoseconds(someDuration)
will emit a packet roughly like
my_event.foo.bar:123.45|ms
However, using the tag format for dimensions would be more appropriate in many applications:
my_event:123.45|ms#foo:bar
Unfortunately, there's not a standard syntax for tags (see statsd/statsd#619), but I think this could be addressed by having an optional init parameter to specify the format:
enum DimensionFormat {
case datadog
case influxdb
case inline
// ..
}
class StatsdClient: MetricsFactory {
public init(eventLoopGroupProvider: EventLoopGroupProvider = .createNew, host: String, port: Int, format: DimensionFormat = .inline) throws {
// ...
}
// ...
}
// User initialization code
let statsdClient = try StatsdClient(host: statsdHost, port: statsdPort, format: .datadog)
MetricsSystem.bootstrap(statsdClient)
It may be preferable to avoid specific vendor names in the enum cases to avoid any sort of endorsement, but I'm confident that could be addressed.
Thoughts?
Metadata
Metadata
Assignees
Labels
good first issueGood for newcomersGood for newcomerskind/enhancementImprovements to existing feature.Improvements to existing feature.