internal static object Run() { var promOptions = new PrometheusExporterOptions() { Url = "http://localhost:9184/metrics/" }; Metric <long> metric = new Metric <long>("sample"); var promExporter = new PrometheusExporter <long>(promOptions, metric); try { promExporter.Start(); List <KeyValuePair <string, string> > label1 = new List <KeyValuePair <string, string> >(); label1.Add(new KeyValuePair <string, string>("dim1", "value1")); var labelSet1 = new LabelSet(label1); metric.GetOrCreateMetricTimeSeries(labelSet1).Add(100); Task.Delay(30000).Wait(); metric.GetOrCreateMetricTimeSeries(labelSet1).Add(200); Console.WriteLine("Look at metrics in Prometheus console!"); Console.ReadLine(); } finally { promExporter.Stop(); } return(null); }
public void PrometheusExporterTest1() { var promOptions = new PrometheusExporterOptions() { Url = "http://localhost:9184/metrics/" }; List <Metric> metrics = new List <Metric>(); var promExporter = new PrometheusExporter(promOptions); try { promExporter.Start(); var label1 = new List <KeyValuePair <string, string> >(); label1.Add(new KeyValuePair <string, string>("dim1", "value1")); metrics.Add(new Metric("ns", "metric1", "desc", label1, 100)); metrics.Add(new Metric("ns", "metric1", "desc", label1, 100)); metrics.Add(new Metric("ns", "metric1", "desc", label1, 100)); promExporter.ExportAsync(metrics, CancellationToken.None); } finally { // Change delay to higher value to manually check Promtheus. // These tests are just to temporarily validate export to prometheus. Task.Delay(10).Wait(); promExporter.Stop(); } }
static void Main(string[] args) { var app = ConsoleHelper.CreateApp("cv4pve-metrics-exporter", "Metrics Exporter for Proxmox VE"); var cmd = app.AddCommand("prometheus", "Export for Prometheus"); var optHost = cmd.AddOption("--http-host", $"Http host (default: {PrometheusExporter.DEFAULT_HOST})"); optHost.SetDefaultValue(PrometheusExporter.DEFAULT_HOST); var optPort = cmd.AddOption <int>("--http-port", $"Http port (default: {PrometheusExporter.DEFAULT_PORT})"); optPort.SetDefaultValue(PrometheusExporter.DEFAULT_PORT); var optUrl = cmd.AddOption("--http-url", $"Http url (default: {PrometheusExporter.DEFAULT_URL})"); optUrl.SetDefaultValue(PrometheusExporter.DEFAULT_URL); var optPrefix = cmd.AddOption("--prefix", $"Prefix export (default: {PrometheusExporter.DEFAULT_PREFIX})"); optPrefix.SetDefaultValue(PrometheusExporter.DEFAULT_PREFIX); var optNodeDiskInfo = cmd.AddOption("--node-disk-info", "Export disk info (disk,wearout,smart)"); cmd.SetHandler(() => { var logFactory = ConsoleHelper.CreateLoggerFactory <Program>(app.GetLogLevelFromDebug()); var exporter = new PrometheusExporter(app.GetHost().GetValue(), app.GetUsername().GetValue(), app.GetPasswordFromOption(), app.GetApiToken().GetValue(), logFactory, optHost.GetValue(), optPort.GetValue(), optUrl.GetValue(), optPrefix.GetValue(), optNodeDiskInfo.HasValue()); exporter.Start(); Console.Out.WriteLine("Corsinvest for Proxmox VE"); Console.Out.WriteLine($"Cluster: {app.GetHost().GetValue()} - User: {app.GetUsername().GetValue()}"); Console.Out.WriteLine($"Exporter Prometheus: http://{optHost.GetValue()}:{optPort.GetValue()}/{optUrl.GetValue()} - Prefix: {optPrefix.GetValue()}"); Console.Out.WriteLine($"Export Node Disk Info: {optNodeDiskInfo.HasValue()}"); Console.ReadLine(); try { exporter.Stop(); } catch { } Console.Out.WriteLine("End application"); }); app.ExecuteApp(args); }
internal static object Run() { var promOptions = new PrometheusExporterOptions() { Url = "http://localhost:9184/metrics/" }; var promExporter = new PrometheusExporter(promOptions); var simpleProcessor = new UngroupedBatcher(promExporter, TimeSpan.FromSeconds(5)); var meter = MeterFactory.Create(simpleProcessor).GetMeter("library1"); var testCounter = meter.CreateInt64Counter("testCounter"); var labels1 = new List <KeyValuePair <string, string> >(); labels1.Add(new KeyValuePair <string, string>("dim1", "value1")); var labels2 = new List <KeyValuePair <string, string> >(); labels2.Add(new KeyValuePair <string, string>("dim1", "value2")); var defaultContext = default(SpanContext); try { promExporter.Start(); for (int i = 0; i < 1000; i++) { testCounter.Add(defaultContext, 100, meter.GetLabelSet(labels1)); testCounter.Add(defaultContext, 10, meter.GetLabelSet(labels1)); testCounter.Add(defaultContext, 200, meter.GetLabelSet(labels2)); testCounter.Add(defaultContext, 10, meter.GetLabelSet(labels2)); if (i % 10 == 0) { // Collect is called here explicitly as there is // no controller implementation yet. // TODO: There should be no need to cast to MeterSdk. (meter as MeterSdk).Collect(); } Task.Delay(1000).Wait(); } } finally { Task.Delay(3000).Wait(); promExporter.Stop(); } return(null); }
public void E2ETest1() { var promOptions = new PrometheusExporterOptions() { Url = "http://localhost:9184/metrics/" }; var promExporter = new PrometheusExporter(promOptions); var simpleProcessor = new UngroupedBatcher(promExporter); var meter = MeterFactory.Create(simpleProcessor).GetMeter("library1") as MeterSdk; var testCounter = meter.CreateInt64Counter("testCounter"); var labels1 = new List <KeyValuePair <string, string> >(); labels1.Add(new KeyValuePair <string, string>("dim1", "value1")); var labels2 = new List <KeyValuePair <string, string> >(); labels2.Add(new KeyValuePair <string, string>("dim1", "value2")); try { promExporter.Start(); var defaultContext = default(SpanContext); for (int i = 0; i < 1000; i++) { testCounter.Add(defaultContext, 100, meter.GetLabelSet(labels1)); testCounter.Add(defaultContext, 10, meter.GetLabelSet(labels1)); testCounter.Add(defaultContext, 200, meter.GetLabelSet(labels2)); testCounter.Add(defaultContext, 10, meter.GetLabelSet(labels2)); if (i % 10 == 0) { meter.Collect(); } // Change delay to higher value to manually check Promtheus. // These tests are just to temporarily validate export to prometheus. // Task.Delay(1).Wait(); } } finally { Task.Delay(100).Wait(); promExporter.Stop(); } }
internal static object Run() { var exporter = new PrometheusExporter( new PrometheusExporterOptions() { Url = "http://+:9184/metrics/", // "+" is a wildcard used to listen to all hostnames }, Stats.ViewManager); exporter.Start(); try { var tagContextBuilder = Tagger.CurrentBuilder.Put(FrontendKey, TagValue.Create("mobile-ios9.3.5")); Stats.ViewManager.RegisterView(VideoSizeView); var t = new Task(() => { var r = new Random(); var values = new byte[1]; while (true) { using (var scopedTags = tagContextBuilder.BuildScoped()) { r.NextBytes(values); StatsRecorder.NewMeasureMap().Put(VideoSize, values[0] * MiB).Record(); Thread.Sleep(TimeSpan.FromSeconds(1)); } } }); t.Start(); Console.WriteLine("Look at metrics in Prometetheus console!"); Console.ReadLine(); } finally { exporter.Stop(); } return(null); }
public void PrometheusExporterTest1() { var promOptions = new PrometheusExporterOptions() { Url = "http://localhost:9184/metrics/" }; Metric <long> metric = new Metric <long>("sample"); var promExporter = new PrometheusExporter <long>(promOptions, metric); try { promExporter.Start(); List <KeyValuePair <string, string> > label1 = new List <KeyValuePair <string, string> >(); label1.Add(new KeyValuePair <string, string>("dim1", "value1")); var labelSet1 = new LabelSet(label1); metric.GetOrCreateMetricTimeSeries(labelSet1).Add(100); metric.GetOrCreateMetricTimeSeries(labelSet1).Add(200); } finally { Task.Delay(10000).Wait(); promExporter.Stop(); } }
public Task StopAsync(CancellationToken cancellationToken) { exporter.Stop(); timer.Dispose(); return(Task.CompletedTask); }