From 24b956a4a2c77ae184677127710a90cb3ec660e1 Mon Sep 17 00:00:00 2001 From: Harald Wolff Date: Fri, 12 Apr 2019 14:19:30 +0200 Subject: [PATCH] WIP --- SkyEntities.cs | 14 ++- checks/CheckJob.cs | 10 +- checks/Hostalive.cs | 4 +- checks/SkyChecker.cs | 20 ++-- http/CheckerApi.cs | 13 ++- templates/static/checks/index.html | 2 +- templates/static/checks/issues.html | 151 ++++++++++++++++++++++------ templates/static/css/style.css | 66 +++++++++++- 8 files changed, 232 insertions(+), 48 deletions(-) diff --git a/SkyEntities.cs b/SkyEntities.cs index 2cb3e6f..d972aa7 100644 --- a/SkyEntities.cs +++ b/SkyEntities.cs @@ -59,9 +59,13 @@ namespace ln.skyscanner "uniqueIdentity" ); + Network4 n192 = Network4.Parse("192.168.0.0/16"); + /* Preload all nodes to increase load speed*/ - foreach (Node node in NodeCollection) + foreach (Node node in NodeCollection.ToArray()) { + if (n192.Contains(node.PrimaryIP)) + NodeCollection.Delete(node); } SubnetCollection = ODB.GetCollection(); @@ -78,7 +82,13 @@ namespace ln.skyscanner SkyCheckStates = ODB.GetCollection(); SkyCheckStates.EnableStrongCache(true); - SkyCheckStates.EnsureIndeces("CheckName","Node"); + SkyCheckStates.EnsureIndeces("Node"); + + foreach (SkyCheckState checkState in SkyCheckStates.ToArray()) + { + if (object.ReferenceEquals(checkState.Node, null)) + SkyCheckStates.Delete(checkState); + } Logging.Log(LogLevel.INFO, "SkyEntities: initialized"); diff --git a/checks/CheckJob.cs b/checks/CheckJob.cs index f54d4e0..229c60b 100644 --- a/checks/CheckJob.cs +++ b/checks/CheckJob.cs @@ -28,17 +28,17 @@ namespace ln.skyscanner.checks { Name = String.Format("Interval check: {0} [{1}]",node.UniqueIdentity,node.PrimaryIP.ToString()); Node = node; + } + public override void RunJob() + { Query stateQuery = Query.Equals("Node", Node.ID); SkyCheckState[] skyCheckStates = SkyScanner.Instance.Entities.SkyCheckStates.Query(stateQuery).ToArray(); foreach (SkyCheckState checkState in skyCheckStates) { checkStates.Add(checkState.CheckName, checkState); } - } - public override void RunJob() - { SkyCheck[] checks = SkyCheck.SkyChecks; for (int n=0;n 0) { roundTripTime /= success; - checkState.WritePerformanceValue("rta", roundTripTime, 0, 10, 0, 50); + checkState.WritePerformanceValue("rta", roundTripTime, 0, 40, 0, 80); } checkState.BaseCheckState = CheckState.OK; diff --git a/checks/SkyChecker.cs b/checks/SkyChecker.cs index 66252ae..7fbbfa5 100644 --- a/checks/SkyChecker.cs +++ b/checks/SkyChecker.cs @@ -39,14 +39,18 @@ namespace ln.skyscanner.checks public bool ContainsPerfFile(String perfName) => perfFiles.ContainsKey(perfName); [Callable] - public SkyCheckState[] Issues => SkyScanner.Instance.Entities.SkyCheckStates.Query( - Query.OR( - Query.Equals("currentCheckState", CheckState.CRITICAL), - Query.Equals("currentCheckState", CheckState.FAIL), - Query.Equals("currentCheckState", CheckState.WARN) - ) - ).ToArray(); - + public SkyCheckState[] Issues + { + get + { + SkyCheckState[] checkStates = null; + lock (SkyScanner.Instance.Entities.SkyCheckStates) + { + checkStates = SkyScanner.Instance.Entities.SkyCheckStates.ToArray(); + } + return checkStates.Where((cs) => cs.CheckState != CheckState.OK).ToArray(); + } + } public SNMPEngine SNMPEngine { get; } diff --git a/http/CheckerApi.cs b/http/CheckerApi.cs index 0268fbf..80839d8 100644 --- a/http/CheckerApi.cs +++ b/http/CheckerApi.cs @@ -15,6 +15,9 @@ using ln.types.threads; using ln.perfdb.storage; using Newtonsoft.Json; using System.Net; +using ln.skyscanner.checks; +using ln.types.odb; +using System.Linq; namespace ln.skyscanner.http { public class CheckerApi : JsonCallResource @@ -29,7 +32,15 @@ namespace ln.skyscanner.http public PoolJob[] CurrentPoolJobs => SkyScanner.Instance.Checker.CurrentJobs; [Callable] public PoolJob[] QueuedPoolJobs => SkyScanner.Instance.Checker.QueuedJobs; - + [Callable] + public SkyCheckState[] Issues + { + get + { + Query issueQuery = Query.EqualsNot("CheckState", CheckState.OK); + return SkyScanner.Instance.Entities.SkyCheckStates.Query(issueQuery).ToArray(); + } + } diff --git a/templates/static/checks/index.html b/templates/static/checks/index.html index 97a7b6c..3335335 100644 --- a/templates/static/checks/index.html +++ b/templates/static/checks/index.html @@ -27,7 +27,7 @@ var chartCTX = $("#perfChart"); var chart = new Chart( chartCTX, { - type: 'bar', + type: 'line', data: { datasets: [ { diff --git a/templates/static/checks/issues.html b/templates/static/checks/issues.html index a8abf6a..2cb0124 100644 --- a/templates/static/checks/issues.html +++ b/templates/static/checks/issues.html @@ -1,51 +1,146 @@ <%frame "frame.html"%>

Aktuelle Störfälle

+ +

+ + +
-
-
+
+
+
+
-