public static void Setup(IEncompassConfig config) { var metricConfig = Metric.Config; var statsdTags = config.GetValue(STATSD_METRICS_TAGS, ""); var globalTags = TrimTags(statsdTags); var datadogEnabled = config.GetValue(DatadogReporter.DATADOG_ENABLED, false); if (datadogEnabled) { var datadogTags = TrimTags(config.GetValue(DatadogReporter.DATADOG_TAGS)); if (datadogTags.Any()) { globalTags.AddRange(datadogTags); } metricConfig.WithReporting( report => report.WithDatadog(config.GetValue(DatadogReporter.DATADOG_APIKEY), Environment.MachineName, config.GetValue(DatadogReporter.DATADOG_ROOTNAMESPACE), TimeSpan.FromSeconds(1))); } var graphiteEnabled = config.GetValue(GraphiteReporter.GRAPHITE_ENABLED, false); if (graphiteEnabled) { var grapiteTags = TrimTags(config.GetValue(GraphiteReporter.GRAPHITE_TAGS)); if (grapiteTags.Any()) { globalTags.AddRange(grapiteTags); } var gs = new TcpGraphiteSender(config.GetValue(GraphiteReporter.GRAPHITE_HOST), config.GetValue(GraphiteReporter.GRAPHITE_PORT, 0)); var gr = new StatsDGraphiteReport(gs, config.GetValue(GraphiteReporter.GRAPHITE_ROOT_NAMESPACE, string.Empty)); metricConfig.WithReporting(report => report.WithReport(gr, TimeSpan.FromSeconds(1))); } if (globalTags.Any()) { _globalTags = new MetricTags(globalTags); } }
/// <inheritdoc /> public IMetricReporter CreateMetricReporter(string name, ILoggerFactory loggerFactory) { GraphiteSender sender; switch (_settings.ConnectionType) { case ConnectionType.Udp: sender = new UdpGraphiteSender(loggerFactory, _settings.Host, _settings.Port); break; case ConnectionType.Tcp: sender = new TcpGraphiteSender(loggerFactory, _settings.Host, _settings.Port); break; default: throw new InvalidOperationException("Unknown ConnectionType"); } return(new GraphiteReporter(sender, _settings.MetricNameFormatter, name, _settings.ReportInterval, loggerFactory)); }