├── .tgitconfig ├── .gitignore ├── img ├── widgets.png ├── widgets2.png ├── widgets3.jpg ├── mail_test.png ├── configurator1.png └── configurator2.png ├── DeepSee System Monitor Dashboards.docx ├── csp-data └── csp │ ├── lib │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 │ ├── css │ │ ├── style.css │ │ └── angular-notify.min.css │ └── js │ │ └── angular-notify.min.js │ ├── src │ ├── views │ │ ├── menu.html │ │ └── config.html │ ├── app.js │ └── controllers │ │ └── menu.js │ └── index.html ├── package.json ├── cls └── kutac │ ├── monitor │ ├── history │ │ ├── SysDataDB.cls │ │ ├── SysData.cls │ │ ├── PerfDataWD.cls │ │ └── PerfData.cls │ ├── current │ │ ├── SysDataDB.cls │ │ ├── PerfData.cls │ │ └── SysData.cls │ ├── cubes │ │ ├── CurrentSysDataDB.cls │ │ ├── HistorySysDataDB.cls │ │ └── HistoryPerfDataWD.cls │ ├── utils │ │ └── CashLocale.cls │ ├── task │ │ └── Builder.cls │ └── kpi │ │ └── Actions.cls │ └── REST │ └── ConfigBroker.cls ├── License.md ├── dfi ├── mobile-Current_System_Parameters.dashboard.dfi ├── mobile-Current_System_Parameters_2.dashboard.dfi ├── mobile-SysParamsPerf.dashboard.dfi ├── mobile-LicenseHistory.dashboard.dfi ├── mobile-JrnSizeHistoryTC.dashboard.dfi ├── dash-sys-current-Databases.dashboard.dfi ├── mobile-DBSizes.dashboard.dfi ├── mobile-ObjPerf.dashboard.dfi ├── mobile-WijPerf.dashboard.dfi ├── mobile-RoutinesPerf.dashboard.dfi ├── dash-sys-history-Database_Files.dashboard.dfi ├── mobile-Current_Performance_Indicators_2.dashboard.dfi ├── mobile-Current_Performance_Indicators.dashboard.dfi ├── dash-sys-history-System_Dashboard_3.dashboard.dfi ├── dash-sys-history-System_Dashboard_2.dashboard.dfi ├── dash-actions-State_Info.dashboard.dfi ├── dash-perf-history-ECP.dashboard.dfi ├── pivots-monitor-current-perf-KPI_Transform_WIJ.pivot.dfi ├── mobile-CPUUtilization.dashboard.dfi ├── dash-sys-history-WD_Cycle_Timers.dashboard.dfi ├── dash-perf-history-Seizes.dashboard.dfi ├── dash-sys-history-CPU_Utilization.dashboard.dfi ├── dash-perf-history-History_WIJ.dashboard.dfi ├── dash-perf-history-Performance_History_Objects.dashboard.dfi ├── mobile-GloPerf.dashboard.dfi ├── dash-sys-history-WD_Cycle_Buffers.dashboard.dfi ├── pivots-monitor-history-fortc-JrnSizeTC.pivot.dfi ├── pivots-monitor-history-fortc-GloRefMinutes.pivot.dfi ├── pivots-monitor-current-DatabaseSizes.pivot.dfi ├── pivots-monitor-history-fortc-LicenseMinutes.pivot.dfi ├── pivots-monitor-history-fortc-PerfDataWIJMinutes.pivot.dfi ├── pivots-monitor-current-perf-KPI_Transform_Rtn.pivot.dfi ├── pivots-monitor-current-sys-KPI_Transform_Lic.pivot.dfi ├── pivots-monitor-current-sys-DatabaseSize.pivot.dfi ├── pivots-monitor-history-SysJournalDay.pivot.dfi ├── pivots-monitor-history-fortc-RtnPerfMinutes.pivot.dfi ├── dash-perf-history-Performance_History_Routines.dashboard.dfi ├── pivots-monitor-history-fortc-GloReadWriteMinutes.pivot.dfi ├── pivots-monitor-current-sys-KPI_Transform_CPU.pivot.dfi ├── pivots-monitor-current-perf-KPI_Transform_Globals.pivot.dfi ├── dash-sys-history-System_Dashboard_1.dashboard.dfi ├── dash-perf-history-Dash1.dashboard.dfi ├── pivots-monitor-history-fortc-CPUUtilization.pivot.dfi ├── pivots-monitor-history-fortc-CPUUtilization_Hours.pivot.dfi ├── pivots-monitor-history-SysECP.pivot.dfi ├── pivots-monitor-history-SysJournal.pivot.dfi ├── pivots-monitor-current-perf-KPI_Transform_Obj.pivot.dfi ├── pivots-monitor-history-DatabaseFilesHistory.pivot.dfi └── pivots-monitor-history-fortc-ObjPerfMinutes.pivot.dfi ├── sc-list.txt └── README.md /.tgitconfig: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | node_modules/ 3 | package-lock.json 4 | .idea/ -------------------------------------------------------------------------------- /img/widgets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intersystems-community/deepsee-sysmon-dashboards/master/img/widgets.png -------------------------------------------------------------------------------- /img/widgets2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intersystems-community/deepsee-sysmon-dashboards/master/img/widgets2.png -------------------------------------------------------------------------------- /img/widgets3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intersystems-community/deepsee-sysmon-dashboards/master/img/widgets3.jpg -------------------------------------------------------------------------------- /img/mail_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intersystems-community/deepsee-sysmon-dashboards/master/img/mail_test.png -------------------------------------------------------------------------------- /img/configurator1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intersystems-community/deepsee-sysmon-dashboards/master/img/configurator1.png -------------------------------------------------------------------------------- /img/configurator2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intersystems-community/deepsee-sysmon-dashboards/master/img/configurator2.png -------------------------------------------------------------------------------- /DeepSee System Monitor Dashboards.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intersystems-community/deepsee-sysmon-dashboards/master/DeepSee System Monitor Dashboards.docx -------------------------------------------------------------------------------- /csp-data/csp/lib/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intersystems-community/deepsee-sysmon-dashboards/master/csp-data/csp/lib/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /csp-data/csp/lib/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intersystems-community/deepsee-sysmon-dashboards/master/csp-data/csp/lib/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /csp-data/csp/lib/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intersystems-community/deepsee-sysmon-dashboards/master/csp-data/csp/lib/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /csp-data/csp/lib/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intersystems-community/deepsee-sysmon-dashboards/master/csp-data/csp/lib/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /csp-data/csp/lib/css/style.css: -------------------------------------------------------------------------------- 1 | .btn.btn-inline { margin: 0 1px; } 2 | 3 | .recipient { 4 | border: #ccc 1px solid; 5 | border-radius: 2px; 6 | margin: 2px 0; 7 | padding-top: 5px; 8 | padding-bottom: 5px; 9 | } 10 | 11 | .animate-show-hide.ng-hide { 12 | opacity: 0; 13 | } 14 | 15 | .animate-show-hide.ng-hide-add, 16 | .animate-show-hide.ng-hide-remove { 17 | transition: all linear 0.5s; 18 | } 19 | 20 | .check-element { 21 | opacity: 1; 22 | } -------------------------------------------------------------------------------- /csp-data/csp/src/views/menu.html: -------------------------------------------------------------------------------- 1 |
2 | 15 |
-------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DeepSee_System_Monitor_Dashboards", 3 | "author": "Makarov S.D", 4 | "version": "2.0.1", 5 | "devDependencies": { 6 | "del": "^3.0.0", 7 | "gulp": "github:gulpjs/gulp#4.0", 8 | "gulp-angular-templatecache": "^2.0.0", 9 | "gulp-autoprefixer": "^4.0.0", 10 | "gulp-concat": "^2.6.1", 11 | "gulp-cssmin": "^0.2.0", 12 | "gulp-debug": "^3.1.0", 13 | "gulp-if": "^2.0.2", 14 | "gulp-ignore": "^2.0.2", 15 | "gulp-jshint": "^2.0.4", 16 | "gulp-minify-html-2": "^1.0.0", 17 | "gulp-replace": "^0.6.1", 18 | "gulp-traceur-compiler": "^1.1.4", 19 | "gulp-uglify": "^3.0.0", 20 | "gulp-useref": "^3.1.2", 21 | "jshint": "^2.9.5", 22 | "through2": "^2.0.3" 23 | }, 24 | "license": "MIT" 25 | } 26 | -------------------------------------------------------------------------------- /cls/kutac/monitor/history/SysDataDB.cls: -------------------------------------------------------------------------------- 1 | Class kutac.monitor.history.SysDataDB Extends %DeepSee.DataConnector 2 | { 3 | 4 | Parameter SUPPORTSIDLIST = 1; 5 | 6 | XData SourceQuery [ XMLNamespace = "http://www.intersystems.com/deepsee/connector/query" ] 7 | { 8 | SELECT db.*,d.datetime FROM SYS_History.SysData_DB db,SYS_History.SysData d WHERE db.SysData = d.id order by datetime desc 9 | } 10 | 11 | XData Output [ XMLNamespace = "http://www.intersystems.com/deepsee/connector/output" ] 12 | { 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | } 21 | 22 | } 23 | 24 | -------------------------------------------------------------------------------- /cls/kutac/monitor/current/SysDataDB.cls: -------------------------------------------------------------------------------- 1 | Class kutac.monitor.current.SysDataDB Extends %DeepSee.DataConnector 2 | { 3 | 4 | Parameter SUPPORTSIDLIST = 1; 5 | 6 | XData SourceQuery [ XMLNamespace = "http://www.intersystems.com/deepsee/connector/query" ] 7 | { 8 | SELECT d.datetime,db.* FROM SYS_History.SysData_DB db,SYS_History.SysData d 9 | WHERE db.SysData = d.id and (d.datetime = (select top 1 datetime from SYS_History.SysData order by datetime desc )) 10 | } 11 | 12 | XData Output [ XMLNamespace = "http://www.intersystems.com/deepsee/connector/output" ] 13 | { 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | } 22 | 23 | } 24 | 25 | -------------------------------------------------------------------------------- /License.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 InterSystems Corp. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /csp-data/csp/lib/css/angular-notify.min.css: -------------------------------------------------------------------------------- 1 | .cg-notify-message{position:fixed;top:0;z-index:9999;max-width:400px;text-align:center;background-color:#d9edf7;color:#31708f;padding:15px;border:1px solid #bce8f1;border-radius:4px;-webkit-transition:top .5s ease-out,opacity .2s ease-out;-moz-transition:top .5s ease-out,opacity .2s ease-out;-o-transition:top .5s ease-out,opacity .2s ease-out;transition:top .5s ease-out,opacity .2s ease-out;visibility:hidden;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.cg-notify-message-center{left:50%}.cg-notify-message-left{left:15px}.cg-notify-message-right{right:15px}.cg-notify-message a{font-weight:700;color:inherit}.cg-notify-message a:hover{color:inherit}.cg-notify-close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0;font-size:21px;font-weight:700;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2;position:absolute;top:0;right:3px;line-height:15px}.cg-notify-close:focus,.cg-notify-close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}.cg-notify-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0} -------------------------------------------------------------------------------- /csp-data/csp/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | SYSMONConfigurator UI 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 |
30 | 31 | -------------------------------------------------------------------------------- /csp-data/csp/src/app.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Admin on 05.07.2017. 3 | */ 4 | (function(){ 5 | 'use strict'; 6 | angular.module('templates',[]); 7 | 8 | angular.module('app',['ngRoute' ,'cgNotify' , 'ngAnimate', 'templates']) 9 | .config(['$routeProvider', function ($routeProvider) { 10 | $routeProvider 11 | .when('/',{ 12 | templateUrl: 'src/views/config.html', 13 | controller: 'config' 14 | }) 15 | .when('/email',{ 16 | templateUrl: 'src/views/email.html', 17 | controller: 'email' 18 | }) 19 | .otherwise({ redirectTo: '/' }); 20 | }]) 21 | .constant('CONST',{ 22 | title: 'SYSMONConfigurator UI', 23 | version: '{{package.json.version}}', 24 | protocol: location.protocol, 25 | host: location.host, /*"localhost:57772",*/ 26 | appname: 'sysmon' 27 | }) 28 | .run(['notify', function (notify) { 29 | notify.config({ 30 | duration: 5000, 31 | position: 'right', 32 | maximumOpen: 5, 33 | verticalSpacing: 20, 34 | startTop: 20 35 | }); 36 | }]); 37 | })(); -------------------------------------------------------------------------------- /cls/kutac/monitor/cubes/CurrentSysDataDB.cls: -------------------------------------------------------------------------------- 1 | /// 2 | Class kutac.monitor.cubes.CurrentSysDataDB Extends %DeepSee.CubeDefinition [ DependsOn = kutac.monitor.current.SysDataDB, ProcedureBlock ] 3 | { 4 | 5 | Parameter DOMAIN = "SYSMON"; 6 | 7 | /// Cube definition from Architect. 8 | XData Cube [ XMLNamespace = "http://www.intersystems.com/deepsee" ] 9 | { 10 | 11 | 17 | 18 | 19 | 20 | } 21 | 22 | } 23 | 24 | -------------------------------------------------------------------------------- /csp-data/csp/src/controllers/menu.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Admin on 05.07.2017. 3 | */ 4 | (function(){ 5 | 'use strict'; 6 | 7 | function MenuCtrl($scope, CONST, $location) { 8 | $scope.model = { 9 | title: CONST.title, 10 | version: CONST.version, 11 | inPage: { 12 | _class: true, 13 | _email: false 14 | } 15 | }; 16 | 17 | $scope.onClassClick = onClassClick; 18 | $scope.onEmailClick = onEmailClick; 19 | 20 | checkPage(); 21 | 22 | function onEmailClick() { 23 | $location.path('/email'); 24 | checkPage(); 25 | } 26 | 27 | function onClassClick() { 28 | $location.path('/'); 29 | checkPage(); 30 | } 31 | 32 | function checkPage() { 33 | for (var key in $scope.model.inPage) { 34 | $scope.model.inPage[key] = false; 35 | } 36 | 37 | var path = $location.path(); 38 | switch (path) { 39 | case '/': $scope.model.inPage['_class'] = true; break; 40 | case '/email': $scope.model.inPage['_email'] = true; break; 41 | } 42 | } 43 | } 44 | 45 | angular.module('app').controller('menu',['$scope', 'CONST', '$location', MenuCtrl]); 46 | 47 | })(); -------------------------------------------------------------------------------- /csp-data/csp/src/views/config.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |

Sysmon Application Classes configuration:

7 |
8 |
9 |
10 | 11 | {{class.name}} 12 |
13 |
14 |
15 |
16 |
17 |

Control System Monitor:

18 |
19 |
20 | 21 | 22 |
23 |
24 |
25 |
26 |
-------------------------------------------------------------------------------- /dfi/mobile-Current_System_Parameters.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /dfi/mobile-Current_System_Parameters_2.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /dfi/mobile-SysParamsPerf.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /dfi/mobile-LicenseHistory.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /dfi/mobile-JrnSizeHistoryTC.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /cls/kutac/monitor/utils/CashLocale.cls: -------------------------------------------------------------------------------- 1 | Class kutac.monitor.utils.CashLocale Extends %RegisteredObject 2 | { 3 | 4 | Parameter DOMAIN = "SYSMON"; 5 | 6 | ClassMethod DefineL18N() 7 | { 8 | set x = $$$Text("Database Sizes") 9 | set x = $$$Text("Database Free Space") 10 | set x = $$$Text("CPU Utilization") 11 | set x = $$$Text("Hours") 12 | set x = $$$Text("Minutes") 13 | set x = $$$Text("Globals Performance") 14 | set x = $$$Text("Global Read\Write Performance") 15 | set x = $$$Text("Gloref Performance") 16 | set x = $$$Text("Journal size history") 17 | set x = $$$Text("Journal Size") 18 | set x = $$$Text("License History") 19 | set x = $$$Text("Object Performance") 20 | set x = $$$Text("Routines Performance History") 21 | set x = $$$Text("Routines Performance") 22 | set x = $$$Text("Various System Parameters Performance") 23 | set x = $$$Text("WIJ Performance") 24 | set x = $$$Text("State Info & actions") 25 | set x = $$$Text("Performance - Globals") 26 | set x = $$$Text("Global References (AVG)") 27 | set x = $$$Text("Global Physical Loads and Reads (AVG)") 28 | set x = $$$Text("Performance - Objects") 29 | set x = $$$Text("Objects Performance (AVG)") 30 | set x = $$$Text("Performance - Routines") 31 | set x = $$$Text("Routine References (AVG)") 32 | set x = $$$Text("Routine Loads (AVG)") 33 | set x = $$$Text("Seizes") 34 | set x = $$$Text("Seize Counters") 35 | set x = $$$Text("WIJ Performance (AVG)") 36 | set x = $$$Text("Databases Status") 37 | set x = $$$Text("Database size (in MB)") 38 | set x = $$$Text("Database Files") 39 | set x = $$$Text("DB File Size (in MB) in Time") 40 | set x = $$$Text("Journal Size - Daily figures") 41 | set x = $$$Text("Various System Metrics") 42 | set x = $$$Text("Licenses Used") 43 | set x = $$$Text("ECP") 44 | } 45 | 46 | ClassMethod SetLocale() [ CodeMode = objectgenerator ] 47 | { 48 | do ##class(%MessageDictionary).SetSessionLanguage("en") 49 | } 50 | 51 | } 52 | 53 | -------------------------------------------------------------------------------- /cls/kutac/monitor/task/Builder.cls: -------------------------------------------------------------------------------- 1 | Class kutac.monitor.task.Builder Extends %SYS.Task.Definition 2 | { 3 | 4 | /// This method is responsible for executing the task.
5 | /// At the scheduled time, the Task Manager creates an instance of this object, 6 | /// sets any property values using the stored "settings" for the task, and then 7 | /// invokes this method to execute the task.
8 | /// In order to execute a real task, override this method in a subclass. 9 | Method OnTask() As %Status 10 | { 11 | s tSC=$$$OK 12 | try { 13 | set cubes("CurrentSysDataDB")="" 14 | set cubes("HistoryPerfData")="" 15 | set cubes("HistoryPerfDataWD")="" 16 | set cubes("HistorySysData")="" 17 | set cubes("HistorySysDataDB")="" 18 | s cube="" 19 | for { 20 | s cube=$o(cubes(cube)) q:cube="" 21 | $$$THROWONERROR(tSC,##class(%DeepSee.Utils).%BuildCube(cube,,0)) 22 | s ^kutac("SYSMON","LastCubeBuild")=$lb(tSC,$h) 23 | } 24 | } catch (e) { 25 | set tSC=$$$ADDSC(tSC,e.AsStatus()) 26 | s ^kutac("SYSMON","LastCubeBuild")=$lb(e.DisplayString(),$h) 27 | } 28 | Quit tSC 29 | } 30 | 31 | /// d ##class(kutac.monitor.task.Builder).Setup() 32 | ClassMethod Setup() 33 | { 34 | try { 35 | set tTask=##class(%SYS.Task).%New() 36 | set tTask.Name="Rebuild SYSMON Cubes" 37 | set tTask.DailyFrequency=1 38 | set tTask.DailyFrequencyTime=0 39 | set tTask.DailyIncrement=35 // run every 15 minutes 40 | set tTask.DailyStartTime=28800 // 8AM 41 | set tTask.DailyEndTime=64800 // 6PM 42 | if ($p($h,",",2) >= 64800) 43 | set tTask.StartDate=+$h+1 44 | else 45 | set tTask.StartDate=+$h 46 | set tTask.Description="Rebuild System Monitor Cubes" 47 | set tTask.NameSpace=$namespace 48 | set tTask.TaskClass="kutac.monitor.task.Builder" 49 | $$$THROWONERROR(tSC,tTask.%Save()) 50 | do ##class(%SYS.Task).Resume(tTask.%Id()) 51 | do ##class(%SYS.Task).RunNow(tTask.%Id()) 52 | } catch (ex) { 53 | w !,ex.DisplayString() 54 | } 55 | quit 56 | } 57 | 58 | } 59 | 60 | -------------------------------------------------------------------------------- /cls/kutac/monitor/history/SysData.cls: -------------------------------------------------------------------------------- 1 | Class kutac.monitor.history.SysData Extends %DeepSee.DataConnector 2 | { 3 | 4 | Parameter SUPPORTSIDLIST = 1; 5 | 6 | XData SourceQuery [ XMLNamespace = "http://www.intersystems.com/deepsee/connector/query" ] 7 | { 8 | SELECT * FROM SYS_History.SysData 9 | } 10 | 11 | XData Output [ XMLNamespace = "http://www.intersystems.com/deepsee/connector/output" ] 12 | { 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | } 30 | 31 | } 32 | 33 | -------------------------------------------------------------------------------- /cls/kutac/monitor/current/PerfData.cls: -------------------------------------------------------------------------------- 1 | /// kutac.monitor.current.PerfData 2 | Class kutac.monitor.current.PerfData Extends %DeepSee.KPI 3 | { 4 | 5 | Parameter DOMAIN = "SYSMON"; 6 | 7 | Parameter RESOURCE; 8 | 9 | /// This XData definition defines the KPI. 10 | XData KPI [ XMLNamespace = "http://www.intersystems.com/deepsee/kpi" ] 11 | { 12 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | } 31 | 32 | /// Notification that this KPI is being executed. 33 | /// This is a good place to override properties, such as range and threshold. 34 | Method %OnLoadKPI() As %Status 35 | { 36 | Quit $$$OK 37 | } 38 | 39 | /// Return an SQL statement to execute. 40 | Method %OnGetSQL(ByRef pSQL As %String) As %Status 41 | { 42 | set pSQL = "SELECT top 1 ID, DateTime, Perf_GloRef, Perf_PhysReads, Perf_PhysWrites, Perf_ObjHit, Perf_ObjDel, Perf_ObjMiss, Perf_ObjNew,"_ 43 | " Perf_ObjLoad, Perf_RtnLoad, Perf_RtnCallLocal, Perf_WIJWrites FROM SYS_History.PerfData order by DateTime Desc" 44 | Quit $$$OK 45 | } 46 | 47 | /// This callback is invoked from a dashboard when an action defined by this dashboard is invoked. 48 | ClassMethod %OnDashboardAction(pAction As %String, pContext As %ZEN.proxyObject) As %Status 49 | { 50 | // pAction is the name of the action (as defined in the XML list). 51 | // pContext contains information from the client 52 | // and can be used to return information. 53 | Quit $$$OK 54 | } 55 | 56 | } 57 | 58 | -------------------------------------------------------------------------------- /dfi/dash-sys-current-Databases.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /dfi/mobile-DBSizes.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /dfi/mobile-ObjPerf.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /dfi/mobile-WijPerf.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /dfi/mobile-RoutinesPerf.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /cls/kutac/monitor/current/SysData.cls: -------------------------------------------------------------------------------- 1 | Class kutac.monitor.current.SysData Extends %DeepSee.KPI 2 | { 3 | 4 | Parameter DOMAIN = "SYSMON"; 5 | 6 | Parameter RESOURCE; 7 | 8 | /// This XData definition defines the KPI. 9 | XData KPI [ XMLNamespace = "http://www.intersystems.com/deepsee/kpi" ] 10 | { 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | } 24 | 25 | /// Notification that this KPI is being executed. 26 | /// This is a good place to override properties, such as range and threshold. 27 | Method %OnLoadKPI() As %Status 28 | { 29 | Quit $$$OK 30 | } 31 | 32 | /// Return an SQL statement to execute. 33 | Method %OnGetSQL(ByRef pSQL As %String) As %Status 34 | { 35 | set pSQL = "SELECT top 1 ID, DateTime, Sys_CPUIdle, Sys_CPUKernel, Sys_CPUUser, Sys_LicUsedDist "_ 36 | "FROM SYS_History.SysData order by DateTime Desc" 37 | Quit $$$OK 38 | } 39 | 40 | /// This callback is invoked from a dashboard when an action defined by this dashboard is invoked. 41 | ClassMethod %OnDashboardAction(pAction As %String, pContext As %ZEN.proxyObject) As %Status 42 | { 43 | // pAction is the name of the action (as defined in the XML list). 44 | // pContext contains information from the client 45 | // and can be used to return information. 46 | Quit $$$OK 47 | } 48 | 49 | /// Get data for this KPI manually. 50 | /// This is implemented by subclasses that provide manual data. 51 | Method %OnExecute() As %Status 52 | { 53 | Set tSC = $$$OK 54 | Try { 55 | &sql(SELECT top 1 ID, DateTime, Sys_CPUIdle, Sys_CPUKernel, Sys_CPUUser, Sys_LicUsedDist 56 | INTO :ID, :DateTime, :SysCPUIdle, :SysCPUKernel, :SysCPUUser, :SysLicUsedDist 57 | FROM SYS_History.SysData 58 | ORDER BY DateTime DESC) 59 | set ..%data(1,"ID") = ID 60 | set ..%data(1,"DateTime") = DateTime 61 | set ..%data(1,"SysCPUIdle") = SysCPUIdle 62 | set ..%data(1,"SysCPUKernel") = SysCPUKernel 63 | set ..%data(1,"SysCPUUser") = SysCPUUser 64 | set ..%data(1,"SysLicUsedDist") = SysLicUsedDist 65 | set ..%data(1,"SysLicUsedLocal") = $system.License.GetUserLimit() 66 | } 67 | Catch(ex) { 68 | Set tSC = ex.AsStatus() 69 | } 70 | Quit tSC 71 | } 72 | 73 | } 74 | 75 | -------------------------------------------------------------------------------- /cls/kutac/monitor/cubes/HistorySysDataDB.cls: -------------------------------------------------------------------------------- 1 | /// 2 | Class kutac.monitor.cubes.HistorySysDataDB Extends %DeepSee.CubeDefinition [ DependsOn = kutac.monitor.current.SysDataDB, ProcedureBlock ] 3 | { 4 | 5 | Parameter DOMAIN = "SYSMON"; 6 | 7 | /// Cube definition from Architect. 8 | XData Cube [ XMLNamespace = "http://www.intersystems.com/deepsee" ] 9 | { 10 | 11 | 17 | 25 | 33 | 34 | 35 | 36 | } 37 | 38 | } 39 | 40 | -------------------------------------------------------------------------------- /cls/kutac/monitor/history/PerfDataWD.cls: -------------------------------------------------------------------------------- 1 | Class kutac.monitor.history.PerfDataWD Extends %DeepSee.DataConnector 2 | { 3 | 4 | Parameter SUPPORTSIDLIST = 1; 5 | 6 | XData SourceQuery [ XMLNamespace = "http://www.intersystems.com/deepsee/connector/query" ] 7 | { 8 | SELECT wd.*,d.datetime FROM SYS_History.PerfData_WD wd, SYS_History.PerfData d WHERE wd.PerfData = d.id 9 | } 10 | 11 | XData Output [ XMLNamespace = "http://www.intersystems.com/deepsee/connector/output" ] 12 | { 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | } 30 | 31 | } 32 | 33 | -------------------------------------------------------------------------------- /dfi/dash-sys-history-Database_Files.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | bottom 9 | {legendVisible:'false',markersVisible:true,xAxis:{majorGridLines:false,_type:'axis'},yAxisList:[{_type:'axis'},{labelPosition:'right',_type:'axis'}],seriesTypes:'area,line,line',_type:'comboChart'} 10 | 11 | 12 | -------------------------------------------------------------------------------- /dfi/mobile-Current_Performance_Indicators_2.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | 10 | 11 | false 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /dfi/mobile-Current_Performance_Indicators.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | 10 | 11 | false 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /dfi/dash-sys-history-System_Dashboard_3.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | bottom 15 | 16 | 17 | -------------------------------------------------------------------------------- /dfi/dash-sys-history-System_Dashboard_2.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | bottom 15 | 16 | 17 | -------------------------------------------------------------------------------- /dfi/dash-actions-State_Info.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | {width:1050,cardSize:'big',columns:[{display:'label',_type:'scoreCardColumn'},{dataValue:'Monitor',display:'value',label:'Monitor status',_type:'scoreCardColumn'},{dataValue:'HealthControl',label:'Health Control',_type:'scoreCardColumn'},{dataValue:'LastCubeBuildStatus',display:'lamp',label:'Last Cubes Build Status',rangeLower:'0',rangeUpper:'1',_type:'scoreCardColumn'},{dataValue:'LastCubeBuildTime',label:'Last Cubes Build Time',_type:'scoreCardColumn'}],selectedIndex:'0',_type:'scoreCard'} 12 | 13 | 14 | -------------------------------------------------------------------------------- /dfi/dash-perf-history-ECP.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | bottom 15 | {legendVisible:'false',xAxis:{_type:'axis'},yAxisList:[{title:'Response Time (in msec.)',_type:'axis'}],_type:'lineChart'} 16 | 17 | 18 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-current-perf-KPI_Transform_WIJ.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /dfi/mobile-CPUUtilization.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /dfi/dash-sys-history-WD_Cycle_Timers.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | bottom 15 | {legendVisible:'false',textSize:'small',xAxis:{_type:'axis'},yAxisList:[{_type:'axis'}],_type:'lineChart'} 16 | 17 | 18 | -------------------------------------------------------------------------------- /dfi/dash-perf-history-Seizes.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | bottom 15 | {legendVisible:'false',textSize:'small',xAxis:{_type:'axis'},yAxisList:[{title:'Count',_type:'axis'}],_type:'lineChart'} 16 | 17 | 18 | -------------------------------------------------------------------------------- /dfi/dash-sys-history-CPU_Utilization.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | bottom 15 | {legendVisible:'false',xAxis:{_type:'axis'},yAxisList:[{_type:'axis'}],seriesTypes:'area,area,line',_type:'comboChart'} 16 | 17 | 18 | -------------------------------------------------------------------------------- /cls/kutac/monitor/kpi/Actions.cls: -------------------------------------------------------------------------------- 1 | /// kutac.monitor.kpi.Actions 2 | Class kutac.monitor.kpi.Actions Extends %DeepSee.KPI 3 | { 4 | 5 | Parameter DOMAIN = "SYSMON"; 6 | 7 | Parameter RESOURCE; 8 | 9 | /// This XData definition defines the KPI. 10 | XData KPI [ XMLNamespace = "http://www.intersystems.com/deepsee/kpi" ] 11 | { 12 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | } 27 | 28 | /// Notification that this KPI is being executed. 29 | /// This is a good place to override properties, such as range and threshold. 30 | Method %OnLoadKPI() As %Status 31 | { 32 | Quit $$$OK 33 | } 34 | 35 | /// Return an MDX statement to execute. 36 | Method %OnGetSQL(ByRef pSQL As %String) As %Status 37 | { 38 | 39 | Quit $$$OK 40 | } 41 | 42 | /// This callback is invoked from a dashboard when an action defined by this dashboard is invoked. 43 | ClassMethod %OnDashboardAction(pAction As %String, pContext As %ZEN.proxyObject) As %Status 44 | { 45 | // pAction is the name of the action (as defined in the XML list). 46 | // pContext contains information from the client 47 | // and can be used to return information. 48 | s tSC=$$$OK 49 | try { 50 | if pAction="SyncCubes" { 51 | set tTask=##class(kutac.monitor.task.Builder).%New() 52 | $$$THROWONERROR(tSC,tTask.OnTask()) 53 | } 54 | } catch (e) { 55 | set tSC=$$$ADDSC(tSC,e.AsStatus()) 56 | } 57 | Quit tSC 58 | } 59 | 60 | /// Get data for this KPI manually. 61 | /// This is implemented by subclasses that provide manual data. 62 | Method %OnExecute() As %Status 63 | { 64 | Set tSC = $$$OK 65 | #define D1 "|" 66 | #define D2 "^" 67 | Try { 68 | set ..%seriesCount=1 69 | set ..%seriesNames(1)="State Info" 70 | set tState=##class(%SYS.Monitor).State() 71 | set i=1 s ..%data(1,"Monitor")=$p($p(tState,$$$D2,i),$$$D1,2) 72 | set i=2 s ..%data(1,"Sensors")=$p($p(tState,$$$D2,i),$$$D1,2) 73 | set i=3 s ..%data(1,"AppMonSensor")=$s($p($p(tState,$$$D2,i),$$$D1,2)=" ":"none",1:$p($p(tState,$$$D2,i),$$$D1,2)) 74 | set i=4 s ..%data(1,"HealthControl")=$p($p(tState,$$$D2,i),$$$D1,2) 75 | set i=5 s ..%data(1,"Subscriber")=$p($p(tState,$$$D2,i),$$$D1,2) 76 | set i=6 s ..%data(1,"LastCubeBuildTime")=$s($lg(^kutac("SYSMON","LastCubeBuild"))="":"n/a",1:$zdt($lg(^kutac("SYSMON","LastCubeBuild"),2))) 77 | set i=7 s ..%data(1,"LastCubeBuildStatus")=$lg(^kutac("SYSMON","LastCubeBuild"),1) 78 | } 79 | Catch(ex) { 80 | Set tSC = ex.AsStatus() 81 | } 82 | Quit tSC 83 | } 84 | 85 | } 86 | 87 | -------------------------------------------------------------------------------- /dfi/dash-perf-history-History_WIJ.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | bottom 15 | {legendVisible:'false',textSize:'small',xAxis:{majorGridLines:false,_type:'axis'},yAxisList:[{_type:'axis'}],_type:'lineChart'} 16 | 17 | 18 | -------------------------------------------------------------------------------- /dfi/dash-perf-history-Performance_History_Objects.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | bottom 15 | {legendVisible:'false',textSize:'small',xAxis:{majorGridLines:false,_type:'axis'},yAxisList:[{_type:'axis'}],_type:'lineChart'} 16 | 17 | 18 | -------------------------------------------------------------------------------- /csp-data/csp/lib/js/angular-notify.min.js: -------------------------------------------------------------------------------- 1 | angular.module("cgNotify",[]).factory("notify",["$timeout","$http","$compile","$templateCache","$rootScope",function(a,b,c,d,e){var f=10,g=15,h=1e4,i="angular-notify.html",j="center",k=document.body,l=0,m=[],n=[],o=function(o){"object"!=typeof o&&(o={message:o}),o.duration=o.duration?o.duration:h,o.templateUrl=o.templateUrl?o.templateUrl:i,o.container=o.container?o.container:k,o.classes=o.classes?o.classes:"";var p=o.scope?o.scope.$new():e.$new();if(p.$position=o.position?o.position:j,p.$message=o.message,p.$classes=o.classes,p.$messageTemplate=o.messageTemplate,l>0)for(var q=n.length+1-l,r=0;q>r;r++)n[r].$close();b.get(o.templateUrl,{cache:d}).then(function(b){var d=c(b.data)(p);if(d.bind("webkitTransitionEnd oTransitionEnd otransitionend transitionend msTransitionEnd",function(a){("opacity"===a.propertyName||0===a.currentTarget.style.opacity||a.originalEvent&&"opacity"===a.originalEvent.propertyName)&&(d.remove(),m.splice(m.indexOf(d),1),n.splice(n.indexOf(p),1),i())}),o.messageTemplate){for(var e,h=0;h=0;c--){var d=10,e=m[c],h=e[0].offsetHeight,i=b+h+d;e.attr("data-closing")?i+=20:b+=h+g,e.css("top",i+"px").css("margin-top","-"+(h+d)+"px").css("visibility","visible"),a++}};a(function(){i()}),o.duration>0&&a(function(){p.$close()},o.duration)},function(a){throw new Error("Template specified for cgNotify ("+o.templateUrl+") could not be loaded. "+a)});var s={};return s.close=function(){p.$close&&p.$close()},Object.defineProperty(s,"message",{get:function(){return p.$message},set:function(a){p.$message=a}}),n.push(p),s};return o.config=function(a){f=angular.isUndefined(a.startTop)?f:a.startTop,g=angular.isUndefined(a.verticalSpacing)?g:a.verticalSpacing,h=angular.isUndefined(a.duration)?h:a.duration,i=a.templateUrl?a.templateUrl:i,j=angular.isUndefined(a.position)?j:a.position,k=a.container?a.container:k,l=a.maximumOpen?a.maximumOpen:l},o.closeAll=function(){for(var a=m.length-1;a>=0;a--){var b=m[a];b.css("opacity",0)}},o}]),angular.module("cgNotify").run(["$templateCache",function(a){"use strict";a.put("angular-notify.html","
\n\n
\n {{$message}}\n
\n\n"+'
\n \n
\n\n \n\n
')}]); -------------------------------------------------------------------------------- /dfi/mobile-GloPerf.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {legendVisible:'false',maxLabelLen:20,timeBased:true,xAxis:{_type:'axis'},yAxisList:[{_type:'axis'}],_type:'comboChart'} 6 | 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /dfi/dash-sys-history-WD_Cycle_Buffers.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | 15 | false 16 | 17 | bottom 18 | {legendVisible:'false',textSize:'small',xAxis:{_type:'axis'},yAxisList:[{_type:'axis'}],_type:'lineChart'} 19 | 20 | 21 | -------------------------------------------------------------------------------- /cls/kutac/REST/ConfigBroker.cls: -------------------------------------------------------------------------------- 1 | Import kutac.REST 2 | 3 | Include %ZEN.Utils 4 | 5 | Class kutac.REST.ConfigBroker Extends %CSP.REST 6 | { 7 | 8 | XData UrlMap 9 | { 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | } 24 | 25 | ClassMethod getClasses() As %Status 26 | { 27 | quit ##class(Utils).getClasses() 28 | } 29 | 30 | ClassMethod toggleClass() As %Status 31 | { 32 | do ..ConvertRequestBody() 33 | quit ##class(Utils).toggleClass(%request.Content.classname, %request.Content.check) 34 | } 35 | 36 | ClassMethod checkMon() As %Status 37 | { 38 | quit ##class(Utils).checkMon() 39 | } 40 | 41 | ClassMethod toggleMon() As %Status 42 | { 43 | do ..ConvertRequestBody() 44 | quit ##class(Utils).toggleMon(%request.Content.toggle) 45 | } 46 | 47 | ClassMethod getEmailSettings() 48 | { 49 | quit ##class(kutac.REST.Utils).getEmailSettings() 50 | } 51 | 52 | ClassMethod setEmailSettings() 53 | { 54 | do ..ConvertRequestBody() 55 | set obj = %request.Content 56 | 57 | quit ##class(Utils).setEmailSettings(obj) 58 | } 59 | 60 | ClassMethod toggleEmail() 61 | { 62 | do ..ConvertRequestBody() 63 | quit ##class(Utils).toggleEmail(%request.Content.toggle) 64 | } 65 | 66 | ClassMethod getRecipients() 67 | { 68 | quit ##class(Utils).getRecipients() 69 | } 70 | 71 | ClassMethod addRecipient() 72 | { 73 | do ..ConvertRequestBody() 74 | quit ##class(Utils).addRecipient(%request.Content.rec) 75 | } 76 | 77 | ClassMethod deleteRecipient() 78 | { 79 | do ..ConvertRequestBody() 80 | quit ##class(Utils).deleteRecipient(%request.Content.rec) 81 | } 82 | 83 | ClassMethod testMail() 84 | { 85 | quit ##class(Utils).testMail() 86 | } 87 | 88 | ClassMethod ConvertRequestBody() As %Status 89 | { 90 | #dim %request As %CSP.Request 91 | #dim obj As %ZEN.proxyObject 92 | 93 | return:'$isobject(%request.Content) $$$OK //empty request body - nothing to do 94 | 95 | // Convert request body into UTF8 proxyObject 96 | set content = %request.Content.Read($$$MaxStringLength) 97 | set content = $ZCVT(content,"I","UTF8") 98 | set st = ##class(%ZEN.Auxiliary.jsonProvider).%ConvertJSONToObject(content,,.obj,1) 99 | return:$$$ISERR(st) st 100 | return:'$IsObject(obj) $$$ERROR($$$ArgumentIsNotAnObject,"Body") 101 | 102 | set %request.Content = obj // obj here is a valid UTF8 proxyObject with required property 103 | return $$$OK 104 | } 105 | 106 | /// Specifies the default character set for the page. This can be overriden using the 107 | /// <CSP:CONTENT CHARSET=> tag, or by setting the %response.CharSet property 108 | /// in the OnPreHTTP method. If this parameter is not specified, then 109 | /// for the default charset is utf-8. 110 | Parameter CHARSET = "UTF-8"; 111 | 112 | } 113 | 114 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-fortc-JrnSizeTC.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-fortc-GloRefMinutes.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-current-DatabaseSizes.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-fortc-LicenseMinutes.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-fortc-PerfDataWIJMinutes.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-current-perf-KPI_Transform_Rtn.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-current-sys-KPI_Transform_Lic.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-current-sys-DatabaseSize.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-SysJournalDay.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-fortc-RtnPerfMinutes.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /dfi/dash-perf-history-Performance_History_Routines.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | bottom 15 | {legendVisible:'false',textSize:'small',xAxis:{majorGridLines:false,_type:'axis'},yAxisList:[{_type:'axis'}],_type:'lineChart'} 16 | 17 | 18 | bottom 19 | {legendVisible:'false',textSize:'small',xAxis:{majorGridLines:false,_type:'axis'},yAxisList:[{_type:'axis'}],_type:'lineChart'} 20 | 21 | 22 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-fortc-GloReadWriteMinutes.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-current-sys-KPI_Transform_CPU.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-current-perf-KPI_Transform_Globals.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /sc-list.txt: -------------------------------------------------------------------------------- 1 | /index.html 2 | /lib 3 | /src 4 | dash-actions-State Info.dashboard.dfi 5 | dash-perf-history-Dash1.dashboard.dfi 6 | dash-perf-history-ECP.dashboard.dfi 7 | dash-perf-history-History WIJ.dashboard.dfi 8 | dash-perf-history-Performance History Objects.dashboard.dfi 9 | dash-perf-history-Performance History Routines.dashboard.dfi 10 | dash-perf-history-Seizes.dashboard.dfi 11 | dash-sys-current-Databases.dashboard.dfi 12 | dash-sys-history-CPU Utilization.dashboard.dfi 13 | dash-sys-history-Database Files.dashboard.dfi 14 | dash-sys-history-System Dashboard 1.dashboard.dfi 15 | dash-sys-history-System Dashboard 2.dashboard.dfi 16 | dash-sys-history-System Dashboard 3.dashboard.dfi 17 | dash-sys-history-WD Cycle Buffers.dashboard.dfi 18 | dash-sys-history-WD Cycle Timers.dashboard.dfi 19 | kutac.REST.ConfigBroker.cls 20 | kutac.REST.Utils.cls 21 | kutac.monitor.cubes.CurrentSysDataDB.cls 22 | kutac.monitor.cubes.HistoryPerfData.cls 23 | kutac.monitor.cubes.HistoryPerfDataWD.cls 24 | kutac.monitor.cubes.HistorySysData.cls 25 | kutac.monitor.cubes.HistorySysDataDB.cls 26 | kutac.monitor.current.PerfData.cls 27 | kutac.monitor.current.SysData.cls 28 | kutac.monitor.current.SysDataDB.cls 29 | kutac.monitor.history.PerfData.cls 30 | kutac.monitor.history.PerfDataWD.cls 31 | kutac.monitor.history.SysData.cls 32 | kutac.monitor.history.SysDataDB.cls 33 | kutac.monitor.kpi.Actions.cls 34 | kutac.monitor.library.Dashboards.cls 35 | kutac.monitor.library.Mobile.cls 36 | kutac.monitor.library.Pivots.cls 37 | kutac.monitor.task.Builder.cls 38 | kutac.monitor.utils.CashLocale.cls 39 | kutac.monitor.utils.Installer.cls 40 | mobile-CPUUtilization.dashboard.dfi 41 | mobile-Current Performance Indicators.dashboard.dfi 42 | mobile-Current Performance Indicators 2.dashboard.dfi 43 | mobile-Current System Parameters.dashboard.dfi 44 | mobile-Current System Parameters 2.dashboard.dfi 45 | mobile-DBSizes.dashboard.dfi 46 | mobile-GloPerf.dashboard.dfi 47 | mobile-JrnSizeHistoryTC.dashboard.dfi 48 | mobile-LicenseHistory.dashboard.dfi 49 | mobile-ObjPerf.dashboard.dfi 50 | mobile-RoutinesPerf.dashboard.dfi 51 | mobile-SysCPUUtilizationMobile.pivot.dfi 52 | mobile-SysParamsPerf.dashboard.dfi 53 | mobile-WijPerf.dashboard.dfi 54 | pivots-monitor-current-DatabaseSizes.pivot.dfi 55 | pivots-monitor-current-perf-KPI Transform Globals.pivot.dfi 56 | pivots-monitor-current-perf-KPI Transform Obj.pivot.dfi 57 | pivots-monitor-current-perf-KPI Transform Rtn.pivot.dfi 58 | pivots-monitor-current-perf-KPI Transform WIJ.pivot.dfi 59 | pivots-monitor-current-sys-DatabaseSize.pivot.dfi 60 | pivots-monitor-current-sys-KPI Transform CPU.pivot.dfi 61 | pivots-monitor-current-sys-KPI Transform Lic.pivot.dfi 62 | pivots-monitor-history-DatabaseFilesHistory.pivot.dfi 63 | pivots-monitor-history-PerfDataGloPhysRW.pivot.dfi 64 | pivots-monitor-history-PerfDataGloRef.pivot.dfi 65 | pivots-monitor-history-PerfDataObjects.pivot.dfi 66 | pivots-monitor-history-PerfDataRoutines.pivot.dfi 67 | pivots-monitor-history-PerfDataRoutinesPhysLoads.pivot.dfi 68 | pivots-monitor-history-PerfDataSeize.pivot.dfi 69 | pivots-monitor-history-PerfDataWIJ.pivot.dfi 70 | pivots-monitor-history-SysCPUUtilization.pivot.dfi 71 | pivots-monitor-history-SysECP.pivot.dfi 72 | pivots-monitor-history-SysJournal.pivot.dfi 73 | pivots-monitor-history-SysJournalDay.pivot.dfi 74 | pivots-monitor-history-SysLicUsed.pivot.dfi 75 | pivots-monitor-history-SysVarious.pivot.dfi 76 | pivots-monitor-history-fortc-CPUUtilization.pivot.dfi 77 | pivots-monitor-history-fortc-CPUUtilization_Hours.pivot.dfi 78 | pivots-monitor-history-fortc-CPUUtilization Hours.pivot.dfi 79 | pivots-monitor-history-fortc-GloReadWriteMinutes.pivot.dfi 80 | pivots-monitor-history-fortc-GloRefMinutes.pivot.dfi 81 | pivots-monitor-history-fortc-JrnSizeTC.pivot.dfi 82 | pivots-monitor-history-fortc-LicenseMinutes.pivot.dfi 83 | pivots-monitor-history-fortc-ObjPerfMinutes.pivot.dfi 84 | pivots-monitor-history-fortc-ParamsMinutes.pivot.dfi 85 | pivots-monitor-history-fortc-PerfDataWIJMinutes.pivot.dfi 86 | pivots-monitor-history-fortc-RtnPerfMinutes.pivot.dfi 87 | -------------------------------------------------------------------------------- /dfi/dash-sys-history-System_Dashboard_1.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | bottom 15 | {legendVisible:'false',xAxis:{_type:'axis'},yAxisList:[{title:'Journal Size (in MB)',_type:'axis'}],_type:'lineChart'} 16 | 17 | 18 | bottom 19 | {legendLabels:'SysJrnSize',legendPosition:'right',orientation:'horizontal',_type:'chartLegend'} 20 | {legendVisible:'false',xAxis:{_type:'axis'},yAxisList:[{title:'Journal Size (in MB)',_type:'axis'}],_type:'lineChart'} 21 | 22 | 23 | -------------------------------------------------------------------------------- /cls/kutac/monitor/cubes/HistoryPerfDataWD.cls: -------------------------------------------------------------------------------- 1 | /// 2 | Class kutac.monitor.cubes.HistoryPerfDataWD Extends %DeepSee.CubeDefinition [ DependsOn = kutac.monitor.history.PerfDataWD, ProcedureBlock ] 3 | { 4 | 5 | /// Cube definition from Architect. 6 | XData Cube [ XMLNamespace = "http://www.intersystems.com/deepsee" ] 7 | { 8 | 9 | 15 | 23 | 31 | 33 | 35 | 37 | 39 | 41 | 43 | 45 | 47 | 49 | 51 | 52 | } 53 | 54 | Parameter DOMAIN = "SYSMON"; 55 | 56 | } 57 | 58 | -------------------------------------------------------------------------------- /dfi/dash-perf-history-Dash1.dashboard.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | false 7 | 8 | 9 | false 10 | 11 | 12 | false 13 | 14 | bottom 15 | {legendVisible:'false',plotToEdge:true,timeBased:true,xAxis:{majorGridLines:false,_type:'axis'},yAxisList:[{_type:'axis'}],seriesTypes:'line,line,line,line,line,line,line,line',_type:'comboChart'} 16 | {hasZoom:true,legendVisible:'false',maxLabelLen:21,textSize:'small',xAxis:{majorGridLines:false,_type:'axis'},yAxisList:[{_type:'axis'}],_type:'lineChart'} 17 | 18 | 19 | bottom 20 | {legendVisible:'false',maxLabelLen:25,textSize:'small',xAxis:{majorGridLines:false,_type:'axis'},yAxisList:[{_type:'axis'}],_type:'lineChart'} 21 | 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | deepsee-sysmon-dashboard 2 | ============== 3 | 4 | A small set of DeepSee dashboards for selected system monitor metrics - data collected by %SYSMONMGR utility. 5 | 6 | 7 | Installation 8 | ------------ 9 | 10 | 11 | 1. Download Installer.cls.xml (from cls/kutac/monitor/utils folder in repository or releases page) into Caché manager directory. 12 | 2. Run in terminal (any namespace) under user with %All role: 13 | 14 | do ##class(%Installer.Installer).InstallFromCommandLine(##class(%File).ManagerDirectory()_"Installer.cls.xml","Namespace={Namespace}") 15 | 16 | where: 17 | 18 | {Namespace} is a namespace you want to install to. If it does not exist it would be created automatically. If it does exist only kutac package would be overwritten. If {Namespace} is not defined, then SYSMON namespace will be created. 19 | On this step installer would create (if needed) Namespace and corresponding database, download source code from GitHub and compile it, create required web application (named /cls/{Namespace}) if one does not exist (skipping web application creation process if one does exist), and map globals,packages and routines to {Namespace}. 20 | 21 | 22 | Installation without fs access to server 23 | ----------- 24 | 1. Download Installer.cls.xml (from cls/kutac/monitor/utils folder in repository or releases page) into Caché Studio (any namespace) 25 | 2. Run in terminal (any namespace) under user with %All role: 26 | 27 | set pVars("Namespace")="{Namespace}" 28 | do ##class(kutac.monitor.utils.Installer).setup(.pVars) 29 | 30 | where: 31 | 32 | {Namespace} is a namespace you want to install to. If it does not exist it would be created automatically. If it does exist only kutac package would be overwritten. If {Namespace} is not defined, then SYSMON namespace will be created. 33 | On this step installer would create (if needed) Namespace and corresponding database, download source code from GitHub and compile it, create required web application (named /cls/{Namespace}) if one does not exist (skipping web application creation process if one does exist), and map globals,packages and routines to {Namespace}. 34 | 35 | Offline Installation 36 | ----------------- 37 | 38 | 1. Download zip and unpack it. 39 | 2. Run in terminal (any namespace) under user with %All role: 40 | 41 | do ##class(%Installer.Installer).InstallFromCommandLine("{SourceDir}\cls\kutac\monitor\utils\Installer.cls.xml","Namespace={Namespace},SourceDir={SourceDir}") 42 | 43 | On this step installer would create (if needed) Namespace and corresponding database, import source code and compile it, create required web application (named /cls/{Namespace}) if one does not exist (skipping web application creation process if one does exist), and map and map globals,packages and routines to {Namespace}. 44 | 45 | Default Settings 46 | ---------------- 47 | 48 | The installer activates in the namespace "%SYS" following monitor classes: 49 | 50 | * %Monitor.System.HistoryPerf 51 | * %Monitor.System.Diskspace 52 | * %Monitor.System.License 53 | * %Monitor.System.Processes 54 | * %Monitor.System.HistorySys 55 | * %Monitor.System.Freespace 56 | * %Monitor.System.LockTable 57 | * %Monitor.System.Routines 58 | 59 | The next step is starting monitor. Your namespace will appear in the list of accessible namespaces for DeepSee and you can see different dashboards there. However, if you open User Portal in the DeepSee immediately after installing, you will notice that all dashboards will be empty. You need to wait a little time, because the installer runs the task for rebuilding cubes in 1 minute after installing. This task will run every 1.5 hours for updating information for monitor dashboards. Also, this task is available in the Task Manager, so you can run the task whenever you want or change the task. 60 | 61 | In case of absense of new facts and notes, please, restart System Monitor using ^%SYSMONNGR utility. Run in Terminal: 62 | 63 | zn "%SYS" 64 | do ^%SYSMONMGR 65 | 66 | Restart your monitor using option "Start/Stop System Monitor". 67 | 68 | After that, check status using option "View System Monitor State". All states must be OK. In another case, please, restart Caché and start System Monitor. 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-fortc-CPUUtilization.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-fortc-CPUUtilization_Hours.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /cls/kutac/monitor/history/PerfData.cls: -------------------------------------------------------------------------------- 1 | Class kutac.monitor.history.PerfData Extends %DeepSee.DataConnector 2 | { 3 | 4 | Parameter SUPPORTSIDLIST = 1; 5 | 6 | XData SourceQuery [ XMLNamespace = "http://www.intersystems.com/deepsee/connector/query" ] 7 | { 8 | SELECT * FROM SYS_History.PerfData 9 | } 10 | 11 | XData Output [ XMLNamespace = "http://www.intersystems.com/deepsee/connector/output" ] 12 | { 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | } 56 | 57 | } 58 | 59 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-SysECP.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-SysJournal.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-current-perf-KPI_Transform_Obj.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-DatabaseFilesHistory.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /dfi/pivots-monitor-history-fortc-ObjPerfMinutes.pivot.dfi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | --------------------------------------------------------------------------------