コード例 #1
0
        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);
            }
        }
コード例 #2
0
        /// <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));
        }