good first issuekind/enhancement
Repository-Metriken
- Stars
- (71 Sterne)
- PR-Merge-Metriken
- (PR-Metriken ausstehend)
Beschreibung
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 https://github.com/statsd/statsd/issues/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?