public void Start() { try { var publisher = new AtlasMetricPublisher(config); var mon = DefaultMonitorRegistry.getInstance(); var monitors = mon.getRegisteredMonitors(); var monitorsFlatten = new List<IMonitor>(); foreach (var monitor in monitors) { var compositeMonitor = monitor as ICompositeMonitor; if (ReferenceEquals(null, compositeMonitor) == false) monitorsFlatten.AddRange(compositeMonitor.getMonitors()); else monitorsFlatten.Add(monitor); } var timestamp = DateTime.UtcNow.GetCurrentUnixTimestampMillis(); var metrics = monitorsFlatten.Select(x => new Metric(x.getConfig(), timestamp, x.GetValue())); AtlasMetrics atlasMetrics = new AtlasMetrics(metrics); publisher.Publish(atlasMetrics); } catch (Exception ex) { log.FatalException("Failed to execute task.", ex); } finally { ScheduledStart = DateTime.UtcNow.AddSeconds(10); } }
public void Publish(AtlasMetrics metrics) { var request = new RestRequest(resourceLocation, Method.POST); request.AddJsonBody(metrics); var response = client.Execute(request); if (response.StatusCode != System.Net.HttpStatusCode.OK) log.ErrorException("Failed to push metrics. Details: " + response.Content, response.ErrorException); }