From e492e6c7e463972c11b3573344fa3008ed0c14c4 Mon Sep 17 00:00:00 2001 From: Harald Wolff Date: Mon, 15 Apr 2019 09:18:41 +0200 Subject: [PATCH] WIP --- SkyEntities.cs | 14 +-- SkyScanner.cs | 2 +- checks/CheckJob.cs | 6 +- checks/SkyChecker.cs | 4 +- ln.skyscanner.csproj | 3 + templates/static/checks/checks.html | 142 +++++++++++++++++++++++ templates/static/checks/issues.html | 167 ++++++++++++++++------------ templates/static/network/index.html | 2 + templates/static/skyapi.js | 11 +- templates/static/topnav.html | 5 +- 10 files changed, 267 insertions(+), 89 deletions(-) create mode 100644 templates/static/checks/checks.html diff --git a/SkyEntities.cs b/SkyEntities.cs index d972aa7..53eae53 100644 --- a/SkyEntities.cs +++ b/SkyEntities.cs @@ -64,8 +64,8 @@ namespace ln.skyscanner /* Preload all nodes to increase load speed*/ foreach (Node node in NodeCollection.ToArray()) { - if (n192.Contains(node.PrimaryIP)) - NodeCollection.Delete(node); + //if (n192.Contains(node.PrimaryIP)) + //NodeCollection.Delete(node); } SubnetCollection = ODB.GetCollection(); @@ -84,11 +84,11 @@ namespace ln.skyscanner SkyCheckStates.EnableStrongCache(true); SkyCheckStates.EnsureIndeces("Node"); - foreach (SkyCheckState checkState in SkyCheckStates.ToArray()) - { - if (object.ReferenceEquals(checkState.Node, null)) - SkyCheckStates.Delete(checkState); - } + //foreach (SkyCheckState checkState in SkyCheckStates.ToArray()) + //{ + // if (object.ReferenceEquals(checkState.Node, null)) + // SkyCheckStates.Delete(checkState); + //} Logging.Log(LogLevel.INFO, "SkyEntities: initialized"); diff --git a/SkyScanner.cs b/SkyScanner.cs index 76af6ec..dda841b 100644 --- a/SkyScanner.cs +++ b/SkyScanner.cs @@ -36,7 +36,7 @@ namespace ln.skyscanner public SkyScanner(String[] args) :this() { - MemoryLogger = new MemoryLogger(1024); + MemoryLogger = new MemoryLogger(4096); Logger.Default.Backends.Add(MemoryLogger); Logging.Log(LogLevel.INFO, "SkyScanner: Constructor"); diff --git a/checks/CheckJob.cs b/checks/CheckJob.cs index 229c60b..0e4ed85 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 SkyScanner.Instance.Entities.SkyCheckStates.ToArray()); } - return checkStates.Where((cs) => cs.CheckState != CheckState.OK).ToArray(); + return checkStates.Where((cs) => (!String.Empty.Equals(cs.Node?.Vendor) && (cs.CheckState != CheckState.OK))).ToArray(); } } diff --git a/ln.skyscanner.csproj b/ln.skyscanner.csproj index fe00310..014235a 100644 --- a/ln.skyscanner.csproj +++ b/ln.skyscanner.csproj @@ -202,6 +202,9 @@ PreserveNewest + + PreserveNewest + diff --git a/templates/static/checks/checks.html b/templates/static/checks/checks.html new file mode 100644 index 0000000..0c3a106 --- /dev/null +++ b/templates/static/checks/checks.html @@ -0,0 +1,142 @@ +<%frame "frame.html"%> + +

Check Parameters

+ +
+
+
+ +
+
+ Warnschwelle: < LastValue <
+ Kritische Schwelle: < LastValue <
+ +
+
+ + diff --git a/templates/static/checks/issues.html b/templates/static/checks/issues.html index 2cb0124..2e8305b 100644 --- a/templates/static/checks/issues.html +++ b/templates/static/checks/issues.html @@ -44,88 +44,107 @@ moment.defaultFormat = "DD.MM.YYYY HH:mm"; var issues = {} + var charts = [] + + function graphLoaded(pv, performanceValue, perfData) + { + var chartColor = performanceValue.CheckState == "CRITICAL" ? '#FF0000' : (performanceValue.CheckState == "WARN") ? '#FFFF00' : '#000000'; + var chart = new Chart( $("#chart", pv), { + type: 'bar', + data: { + datasets: [ + { + label: "-", + data: [], + backgroundColor: chartColor, + } + ] + }, + options: { + scales: { + yAxes: [ + { + ticks: { + callback: ScaleSI, + beginAtZero: true, + } + } + ], + xAxes: [{ + type: 'time', + time: { + unit: "minute", + tooltipFormat: "DD.MM.YYYY HH:mm", + displayFormats: { + minute: "DD.MM.YYYY HH:mm" + }, + parser: moment.unix + } + }] + }, + responsive: true, + maintainAspectRatio: false + } + } ); + + chart.data.labels.length = 0; + chart.data.datasets[0].data.length = 0; + chart.data.datasets[0].label = perfName; + $.each( perfValues, function(){ + if (this.TimeStamp != 0) + chart.data.datasets[0].data.push( { x: this.TimeStamp, y: this.Value } ); + }); + chart.update(); + } + function updateIssue(issue) { - var ne = $("#" + issue.ID ); - if (!ne.length) - ne = $("#nodetemplate").clone().attr("id",issue.ID); - - ne.appendTo($("#" + issue.CheckState)); - ne.addClass("issue-" + issue.CheckState ); - - $("h2", ne).text(issue.CheckName + ": " + issue.Node.Name + " ( " + issue.Node.UniqueIdentity + " )"); - $("#LastCheckTime", ne).text(issue.LastCheckTime); - $("#UnchangedTime", ne).text(issue.UnchangedTime); - - $.each( issue.PerformanceValues, function(){ - var pv = $("#" + this.PerfName.replace(/\//g,"-")); - if (!pv.length) - pv = $("#pvtemplate").clone().attr("id", this.PerfName.replace(/\//g,"-")); - - $("#PerfName", pv).text(this.PerfName); - $("#CheckState", pv).text(this.CheckState).addClass(this.CheckState); - - pv.appendTo($("#PerfValues", ne)); - - var chartColor = this.CheckState == "CRITICAL" ? '#FF0000' : (this.CheckState == "WARN") ? '#FFFF00' : '#000000'; - var chart = new Chart( $("#chart", pv), { - type: 'bar', - data: { - datasets: [ - { - label: "-", - data: [], - backgroundColor: chartColor, - } - ] - }, - options: { - scales: { - yAxes: [ - { - ticks: { - callback: ScaleSI, - beginAtZero: true, - } - } - ], - xAxes: [{ - type: 'time', - time: { - unit: "minute", - tooltipFormat: "DD.MM.YYYY HH:mm", - displayFormats: { - minute: "DD.MM.YYYY HH:mm" - }, - parser: moment.unix - } - }] - }, - responsive: true, - maintainAspectRatio: false - } - } ); + var ne = $("#" + issue.ID ); + if (!ne.length) + ne = $("#nodetemplate").clone().attr("id",issue.ID); - var perfName = this.PerfName; - - skyapi().getJson("api/checker/checks/" + encodeURIComponent(perfName) + "?interval=" + $("#interval").children("option:selected").val(), function(perfValues){ - chart.data.labels.length = 0; - chart.data.datasets[0].data.length = 0; - chart.data.datasets[0].label = perfName; - - $.each( perfValues, function(){ - if (this.TimeStamp != 0) - chart.data.datasets[0].data.push( { x: this.TimeStamp, y: this.Value } ); - }); - - chart.update(); + ne.appendTo($("#" + issue.CheckState)); + ne.addClass("issue-" + issue.CheckState ); + + $("h2", ne).text(issue.CheckName + ": " + issue.Node.Name + " ( " + issue.Node.UniqueIdentity + " )"); + $("#LastCheckTime", ne).text(issue.LastCheckTime); + $("#UnchangedTime", ne).text(issue.UnchangedTime); + + $.each( issue.PerformanceValues, function(){ + var pv = $("#" + this.PerfName.replace(/\//g,"-")); + if (!pv.length) + pv = $("#pvtemplate").clone().attr("id", this.PerfName.replace(/\//g,"-")); + + $("#PerfName", pv).text(this.PerfName); + $("#CheckState", pv).text(this.CheckState).addClass(this.CheckState); - }) - }); + pv.appendTo($("#PerfValues", ne)); + + var _perfValue = this; + var _pv = pv; + var perfName = this.PerfName; + + charts.push( { pv: _pv, performanceValue: this } ); + }); + //loadNextChart(); } + function loadNextChart() + { + if (charts.length == 0) + return; + + next = charts.shift(); + + skyapi().getJson("api/checker/checks/" + encodeURIComponent(next.performanceValue.PerfName) + "?interval=" + $("#interval").children("option:selected").val(), function(perfData){ + graphLoaded(next.pv, next.performanceValue, perfData); + loadNextChart(); + }); + } + + function updateIssueList(issueList) { $.each( issueList , function(){ diff --git a/templates/static/network/index.html b/templates/static/network/index.html index 23f8bc7..0ef1356 100644 --- a/templates/static/network/index.html +++ b/templates/static/network/index.html @@ -132,6 +132,8 @@ { $("#nodeTable").DataTable().ajax.reload(null, false); } + + showNode(null); //refreshNodeTable(); diff --git a/templates/static/skyapi.js b/templates/static/skyapi.js index 7eb21b2..e2a1986 100644 --- a/templates/static/skyapi.js +++ b/templates/static/skyapi.js @@ -1,4 +1,11 @@ - +Object.values = function(o) { + var values = []; + for(var property in o) { + values.push(o[property]); + } + return values; +} + function SKYAPI(baseurl){ this.baseurl = baseurl; @@ -189,3 +196,5 @@ function ScaleSI(value) } + + diff --git a/templates/static/topnav.html b/templates/static/topnav.html index 7e988e3..bd79a3d 100644 --- a/templates/static/topnav.html +++ b/templates/static/topnav.html @@ -56,7 +56,10 @@
Status
+