monithor/Monithor.api/DbProxy.cs

42 lines
1.1 KiB
C#

using System;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using InfluxDB.Client;
namespace Monithor.api {
public class DbProxy {
private static Influx _influx;
public static string LastUpdated;
public static void Init() {
var client = InfluxDBClientFactory.Create(Config.Url, Config.Token.ToCharArray());
_influx = new Influx(client, Config.Org, Config.Bucket);
}
public static void ProcessMonitors(bool notify = true) {
foreach (var monitor in Config.Monitors.FindAll(monitor => monitor.Update(monitor.GetFluxItems(_influx, "5m")))) {
if (notify) {
Config.Targets.FindAll(p => p.Monitor == monitor).ForEach(p => p.SendMessage());
}
}
}
[SuppressMessage("ReSharper", "FunctionNeverReturns")]
public static Task BackgroundUpdate() {
ProcessMonitors(false);
while (true) {
try {
ProcessMonitors();
}
catch (Exception e) {
Console.WriteLine(e);
}
LastUpdated = DateTime.Now.ToString("MMM dd yyyy, HH':'mm':'ss %K");
Thread.Sleep(60000);
}
}
}
}