2024-08-17 01:46:22 +00:00
|
|
|
|
using System;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Microsoft.AspNetCore.Builder;
|
|
|
|
|
using Microsoft.AspNetCore.Hosting;
|
2024-08-17 01:54:33 +00:00
|
|
|
|
using Microsoft.AspNetCore.Http;
|
2024-08-17 01:46:22 +00:00
|
|
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
|
using Prometheus;
|
|
|
|
|
|
2024-08-17 01:54:33 +00:00
|
|
|
|
namespace PrometheusExporterEdenic
|
2024-08-17 01:46:22 +00:00
|
|
|
|
{
|
|
|
|
|
public class Program
|
|
|
|
|
{
|
|
|
|
|
public static void Main(string[] args)
|
|
|
|
|
{
|
|
|
|
|
CreateHostBuilder(args).Build().Run();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
|
|
|
|
Host.CreateDefaultBuilder(args)
|
|
|
|
|
.ConfigureWebHostDefaults(webBuilder =>
|
|
|
|
|
{
|
|
|
|
|
webBuilder.UseStartup<Startup>();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class Startup
|
|
|
|
|
{
|
|
|
|
|
public void ConfigureServices(IServiceCollection services)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
|
|
|
|
|
{
|
|
|
|
|
if (env.IsDevelopment())
|
|
|
|
|
{
|
|
|
|
|
app.UseDeveloperExceptionPage();
|
|
|
|
|
}
|
2024-08-17 01:54:33 +00:00
|
|
|
|
|
|
|
|
|
string EDENIC_API = Environment.GetEnvironmentVariable("EDENIC_API") ?? "placeholderapikey";
|
|
|
|
|
|
2024-08-17 01:46:22 +00:00
|
|
|
|
// Enable prometheus metrics
|
|
|
|
|
app.UseMetricServer();
|
|
|
|
|
app.UseHttpMetrics();
|
|
|
|
|
|
|
|
|
|
app.UseRouting();
|
|
|
|
|
|
|
|
|
|
app.UseEndpoints(endpoints =>
|
|
|
|
|
{
|
|
|
|
|
endpoints.MapGet("/", async context =>
|
|
|
|
|
{
|
|
|
|
|
await context.Response.WriteAsync("Open /metrics");
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Define custom metrics
|
|
|
|
|
var ph = Metrics.CreateGauge("edenic_ph", "Edenic ph");
|
|
|
|
|
var temperature = Metrics.CreateGauge("edenic_temperature", "Edenic temperature");
|
|
|
|
|
var ec = Metrics.CreateGauge("edenic_ec", "Edenic EC");
|
|
|
|
|
Task.Run(async () =>
|
|
|
|
|
{
|
|
|
|
|
while (true)
|
|
|
|
|
{
|
|
|
|
|
ph.Set(1);
|
|
|
|
|
temperature.Set(1);
|
|
|
|
|
ec.Set(1);
|
|
|
|
|
await Task.Delay(1000);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|