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(); }); }
protected void LogEvent(ResponseStatus status, string service, string operation) { string metricId = _distributionMetricName + "|" + service + "|" + operation; Dictionary <string, string> metadata = new Dictionary <string, string>() { { "metric_name_distribution", _distributionMetricName }, { "service", service }, { "operation", operation } }; IEventMetric metric = _eventMetricManager.GetMetric(metricId, new MetricConfig(metadata)); if (status == null) { metric.AddEvent("null"); } else { metric.AddEvent(status.ErrorCode); } }
private void Metric(string changeType, bool updated, Instance instance) { if (string.IsNullOrWhiteSpace(changeType) || instance == null) { return; } string metricId = "service-discovery." + changeType + "." + updated + "." + instance; Dictionary <string, string> metadata = new Dictionary <string, string>(); metadata["metric_name_distribution"] = _serviceDiscoveryMetricName; metadata["regionId"] = instance.RegionId; metadata["zoneId"] = instance.ZoneId; metadata["serviceId"] = instance.ServiceId; metadata["updated"] = updated ? "true" : "false"; metadata["instanceId"] = instance.InstanceId; IEventMetric metric = _eventMetricManager.GetMetric(metricId, new MetricConfig(metadata)); metric.AddEvent(changeType); }
/// <summary> /// ExportEvemtSamples is the shared logic for all event metric exports /// </summary> private void ExportEventSamples(StreamWriter writer, IEventMetricDefinition metricDefinition, IEventMetric metric) { writer.Write("\"Sequence\",\"Timestamp\""); foreach (var valueDefinition in metricDefinition.Values) { writer.Write(",\"{0}\"", valueDefinition.Caption); } writer.WriteLine(); foreach (var sample in metric.Samples) { var eventSample = sample as IEventMetricSample; if (eventSample == null) continue; writer.Write("{0},\"{1}\"", eventSample.Sequence, eventSample.Timestamp.ToString("yyyy-MM-dd HH:mm:ss")); for (var i = 0; i < eventSample.Values.Count(); i++) { writer.Write(",\"{0}\"", eventSample.Values[i]); } writer.WriteLine(); } }
/// <summary> /// ExportEvemtSamples is the shared logic for all event metric exports /// </summary> private void ExportEventSamples(StreamWriter writer, IEventMetricDefinition metricDefinition, IEventMetric metric) { writer.Write("\"Sequence\",\"Timestamp\""); foreach (var valueDefinition in metricDefinition.Values) { writer.Write(",\"{0}\"", valueDefinition.Caption); } writer.WriteLine(); foreach (var sample in metric.Samples) { var eventSample = sample as IEventMetricSample; if (eventSample == null) { continue; } writer.Write("{0},\"{1}\"", eventSample.Sequence, eventSample.Timestamp.ToString("yyyy-MM-dd HH:mm:ss")); for (var i = 0; i < eventSample.Values.Count(); i++) { writer.Write(",\"{0}\"", eventSample.Values[i]); } writer.WriteLine(); } }
private NullEventMetricManager() { Metrics = new IEventMetric[0]; Config = new MetricManagerConfig <IEventMetric>(NullEventMetricReporter.Instance); }