예제 #1
0
        private void Metric(string filterId, long value)
        {
            if (string.IsNullOrWhiteSpace(filterId))
            {
                return;
            }
            string metricId = "filter-instances." + filterId;

            Dictionary <string, string> metadata = new Dictionary <string, string>();

            metadata["metric_name_distribution"] = _metricNameDistribution;
            metadata["metric_name_audit"]        = _metricNameAudit;
            metadata["filter"] = filterId;

            IAuditMetric metric = _valueMetricManager.GetMetric(metricId, new MetricConfig(metadata));

            metric.AddValue(value);
        }
예제 #2
0
        public InstanceRegistry(InstanceRepository instanceRepository, ArtemisClientConfig config)
        {
            Preconditions.CheckArgument(instanceRepository != null, "instance repository");
            Preconditions.CheckArgument(config != null, "config");
            _instanceRepository = instanceRepository;
            _ttl      = config.ConfigurationManager.GetProperty(config.Key("instance-registry.instance-ttl"), 20 * 1000, 5 * 1000, 24 * 60 * 60 * 1000);
            _interval = config.ConfigurationManager.GetProperty(config.Key("instance-registry.heartbeat-interval"), 5 * 1000, 500, 5 * 60 * 1000);

            Action <WebSocket> onOpen = (webSocket) => {
            };
            Action <WebSocket, MessageEventArgs> onMessage = (webSocket, message) =>
            {
                AcceptHeartbeat(message);
            };

            _sessionContext = new WebSocketSessionContext(config, onOpen, onMessage);

            var heartbeatStatusMetricConfig = new MetricConfig(new Dictionary <string, string>()
            {
                { "metric_name_distribution", config.Key("heartbeat.event.distribution") }
            });

            _heartbeatStatus         = config.EventMetricManager.GetMetric(config.Key("heartbeat.event"), heartbeatStatusMetricConfig);
            _prepareHeartbeatLatency = config.AuditMetricManager.GetMetric(config.Key("heartbeat.prepare-latency"), new MetricConfig(new Dictionary <string, string>()
            {
                { "metric_name_distribution", config.Key("heartbeat.prepare-latency.distribution") }
            }));
            _sendHeartbeatLatency = config.AuditMetricManager.GetMetric(config.Key("heartbeat.send-latency"), new MetricConfig(new Dictionary <string, string>()
            {
                { "metric_name_distribution", config.Key("heartbeat.send-latency.distribution") }
            }));
            _acceptHeartbeatLatency = config.AuditMetricManager.GetMetric(config.Key("heartbeat.accept-latency"), new MetricConfig(new Dictionary <string, string>()
            {
                { "metric_name_distribution", config.Key("heartbeat.accept-latency.distribution") }
            }));

            _heartbeater = new DynamicTimer(config.ConfigurationManager.GetProperty(config.Key("instances-registry.heartbeat-interval.dynamic-scheduled-thread.run-interval"), 1000, 500, 90 * 1000),
                                            () =>
            {
                CheckHeartbeat();
            });
        }
예제 #3
0
        public void CLogMetricTest()
        {
            string auditMetricName = "Caravan.Metric.Test.CLogMetricTest";
            IAuditMetricManager         manager  = NullAuditMetricManager.Instance;
            Dictionary <string, string> metadata = new Dictionary <string, string>();

            metadata["metric_name_audit"] = auditMetricName.ToLower();
            IAuditMetric auditMetric = manager.GetMetric(auditMetricName.ToLower(), new MetricConfig(metadata));
            bool         isCompleted = false;
            var          task        = Task.Factory.StartNew(() =>
            {
                Random random = new Random();
                while (!isCompleted)
                {
                    auditMetric.AddValue(random.Next(100, 200));
                    Thread.Sleep(10);
                }
            });

            Thread.Sleep(1000 * 60 * 60);
            isCompleted = true;
            task.Wait();
        }
 private NullAuditMetricManager()
 {
     Metrics = new IAuditMetric[0];
     Config  = new MetricManagerConfig <IAuditMetric>(NullAuditMetricReporter.Instance);
 }