Systemmonitor (Admin)
Der Systemmonitor zeigt auf einen Blick, ob das System ordnungsgemäß arbeitet. Dafür werden Schnittstellen und Systemdaten ausgewertet und dargestellt. In EVI sind verschiedene Sanity Checks implementiert, die fachliche Bereiche des Systems regelmäßig auf Plausibilität und Konsistenz prüfen. Die Ergebnisse der Sanity Checks in EVI sind in der Kachel "Systemmonitor" einsehbar. Systemverantwortliche Administratoren können sich hier einen Überblick über den Systemstatus und das Ergebnis der jeweiligen Checks verschaffen.
Weiterführende Informationen zu diesem Thema finden Sie in der Dokumentation unter Sanity Checks.
Voraussetzungen
Die Modul-Lizenz EVI-BASIS liegt im System vor und ist aktiv
Update
Bei einem Update ist die Konfiguration der Kachel zu prüfen:
Wird weiterhin die CURSOR-Konfiguration verwendet?
Enthält die Konfiguration eigene Einträge, die eventuell angepasst werden müssen?
Im Fall eines Modulupdates muss die Konfiguration des Systemmonitors angepasst werden, falls das Board übersteuert wurde. Eigene Einträge sind nicht davon betroffen, sofern sie nicht die SC0InterfaceUtils verwenden. Eine Umstellung darauf ist empfohlen, da die Methoden SC12EVIBaseUtils.interfaceStarted und SC12EVIBaseUtils.interfaceEnded auf deprecated gesetzt wurden und perspektivisch deaktiviert werden.
Technische Dokumentation
Komponentenübersicht
Prozesse
C12SanityCheck
Beim Einspielen des Moduls werden die Prozesse automatisch veröffentlicht, dennoch ist eine Prüfung des Veröffentlichungsstatus empfehlenswert. Entsprechende Hinweise werden auch beim Import des Moduls ausgegeben.
Skriptbibliothek
SC12SystemTestUtils
Kacheln
C0Systemmonitor
Administrationsmöglichkeiten
Der Systemmonitor verwendet jqPlot zum Zeichnen des Donut Chart sowie eigene CSS-Definitionen für das Hierarchie-Diagramm. Der Status eines Blattes wird in die übergeordneten Knoten fortgeschrieben. D.h. ist ein Blatt im Status FEHLER, so ist der gesamte Strang bis zum Wurzelknoten im Status FEHLER. Der Status wird aus dem Feld "TechInfo.InterfaceOver" ermittelt. In diesem Feld wird die LogMap aus dem zuletzt ausgeführten SanityCheck eingetragen.
ERROR überschreibt WARNING und INFO
WARNING überschreibt INFO
INFO überschreibt nichts
Sollte das Feld "TechInfo.InterfaceOver" nicht gefüllt sein, wertet der Systemmonitor dies als WARNING
Der aktuelle Status "CurrentStatus.InterfaceOver" wird in die Bewertung einbezogen, wenn das Feld "TechInfo.InterfaceOver" leer ist. Ist das Feld "CurrentStatus.InterfaceOver" mit FEHLER befüllt, ist der Knoten im Status ERROR.
Falls ein anderer Status vorliegt, wird dem Knoten der Status WARNING vergeben und die Meldung "LogMap nicht gefüllt" im Systemmonitor angezeigt.
Für die Ermittlung der Schnittstellen-Datensätze wird die Suche "C12Systemmonitor_InterfaceOver_Pk" verwendet. Dort wird eine Liste von Primärschlüsseln eingegeben.
Verwendete Bibliotheken:
jQuery
jQuery UI
jQuery Easing
Moment
jqPlot Charts
Zur Systemüberwachung liefert CURSOR den Prozess "SanityCheck" aus. Dieser Prozess führt timergesteuerte Systemtests durch und speichert die Ergebnisse als Schnittstellendetails-Datensatz. In diesen Prozess können weitere Prüfungen aufgenommen werden. Diese werden als Skriptbibliotheksmethoden implementiert und in diesem Prozess aufgerufen. Die durch den Prozess erzeugten Schnittstellen-Datensätze werden über Ihren Primärschlüssel in den Systemmonitor eingebunden.
Übersteuerungsmöglichkeiten
Zur Vereinfachung des Schreibens von Logeinträgen wurde die Methode SC12EVIBaseUtils.logMap2InterfaceDetail implementiert. Diese schreibt alle Inhalte der übergebenen Logmap über die Methode SC0InterfaceUtils.infoLog1 in die ERROR-, WARNING- oder LOGGING-LIste, sodass eine Anzeige im Systemmonitor gewährleistet ist. Das Startdate wird nicht übernommen, da es bereits über die Methode SC0InterfaceUtils.startLog1 gesetzt sein muss.
Zudem erfolgte eine Anpassung der Konfiguration der Systemmonitor-Kachel. Da die SCInterfaceUtils-Methoden die ID des InterfaceOver-Satzes in Uppercase schreiben, musste dies in der Konfiguration angepasst werden. Das hat auch zur Folge, dass neue InterfaceOver-Datensätze angelegt werden.
JSON-Struktur
Die anzuzeigenden Schnittstellen und Systemfunktionen sind über JSON festgelegt. CURSOR Software AG liefert auch hier einen Standard aus, der beliebig erweiterbar ist.
Aufbau der Konfiguration
[
{
"name": "EVIBaseUtils",
"leafs": [
{
"name": "TimeSliceUtils",
"leafs": [
{
"name": "sanityCheck",
"id": "SC12TIMESLICEUTILS.SANITYCHECK"
}
]
},
{
"name": "RightUtils",
"leafs": [
{
"name": "sanityCheck",
"id": "SC12RIGHTUTILS.SANITYCHECK"
}
]
},
{
"name": "RegionalStructure",
"leafs": [
{
"name": "sanityCheck",
"id": "SC12REGIONALSTRUCTURE.SANITYCHECK"
}
]
},
{
"name": "SystemTestUtils",
"leafs": [
{
"name": "checkRenewStats",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKRENEWSTATS"
},
{
"name": "checkIndexCosts",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKINDEXCOSTS"
},
{
"name": "CheckDiskSpace",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKDISKSPACE"
},
{
"name": "SaveActivity",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKSAVEACTIVITYPERF1"
},
{
"name": "ModifyActivityList",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKMODIFYACTLISTPERF1"
},
{
"name": "SearchCustomer",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKSEARCHCUSTOMERPERF1"
},
{
"name": "SaveNewContactPerson",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKSAVECONTACTPERSONNEW"
},
{
"name": "SaveBlankoLetter",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKSAVEBLANKOLETTERACTNEWPERF1"
},
{
"name": "SaveNewCustomer",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKSAVECUSTOMERNEWPERF1"
},
{
"name": "SearchContactPerson",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKSEARCHCONTACTPERSONPERF1"
},
{
"name": "CopyActivity",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKCOPYACTPERF1"
},
{
"name": "UnindexedEntities",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKUNINDEXEDENTITIES"
},
{
"name": "CheckEmptyKeys",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKEMPTYKEYS"
},
{
"name": "CheckMandatoryFields",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKEMPTYMANDATORYFIELDS"
},
{
"name": "OldInterfaceOverMethods",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKOLDIOMETHODS"
},
{
"name": "UnchangedKeys",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKUNCHANGEDKEYS"
},
{
"name": "OnlyOneErpAddressPerCustomer",
"id": "SC12SYSTEMTESTUTILS.SANITYCHECKONLYONEERPADDRESSPERCUSTOMER"
}
]
},
{
"name": "I18nUtils",
"leafs": [
{
"name": "sanityCheck",
"id": "SC12I18NUTILS.SANITYCHECK"
}
]
},
{
"name": "SLPUtils",
"leafs": [
{
"name": "sanityCheck",
"id": "SC12SLPUTILS.SANITYCHECK"
}
]
}
]
},
{
"name": "Schnittstellen",
"leafs": [
{
"name": "powercloud",
"leafs": [
{
"name": "EVI -> powercloud Integration",
"id": "EVI2POWERCLOUD_WEBSERVICE"
},
{
"name": "powercloud -> EVI Integration",
"leafs": [
{
"name": "pc Event contract_annotation_created",
"id": "COM.POWERCLOUD.CONTRACTANNOTATIONCREATED"
},
{
"name": "pc Event contract_new_counter",
"id": "COM.POWERCLOUD.CONTRACTNEWCOUNTER"
},
{
"name": "pc Event contract_reading_saved",
"id": "COM.POWERCLOUD.CONTRACTREADINGSAVED"
},
{
"name": "pc Event contract_welcome_letter",
"id": "COM.POWERCLOUD.CONTRACTWELCOMELETTER"
},
{
"name": "pc Event contract_welcome_letter_deposit_changed",
"id": "COM.POWERCLOUD.CONTRACTWELCOMELETTERDEPOSITCHANGED"
},
{
"name": "pc Event customer_created",
"id": "COM.POWERCLOUD.CUSTOMERCREATED"
},
{
"name": "pc Event customer_data_changed",
"id": "COM.POWERCLOUD.CUSTOMERDATACHANGED"
},
{
"name": "pc Event market_partner_created",
"id": "COM.POWERCLOUD.MARKETPARTNERCREATED"
},
{
"name": "pc Event market_partner_updated",
"id": "COM.POWERCLOUD.MARKETPARTNERUPDATED"
},
{
"name": "pc Event product_changed",
"id": "COM.POWERCLOUD.PRODUCTCHANGED"
}
]
}
]
},
{
"name": "OSST",
"leafs": [
{
"name": "OSST_SAP2EVI_KEY",
"id": "OSST_SAP2EVI_KEY"
},
{
"name": "SAP2EVI_WORKER",
"id": "OSST_SAP2EVI_WORKER"
}
]
},
{
"name": "Schleupen",
"leafs": [
{
"name": "Schleupen2EVI",
"leafs": [
{
"name": "createOrUpdateBillingContract",
"id": "DE.SCHLEUPEN.CREATEORUPDATEBILLINGCONTRACT"
},
{
"name": "Event createOrUpdateBillingData ",
"id": "DE.SCHLEUPEN.CREATEORUPDATEBILLINGDATA"
},
{
"name": "Event deleteBillingData",
"id": "DE.SCHLEUPEN.DELETEBILLINGDATA"
},
{
"name": "Event createOrUpdateContractAccount",
"id": "DE.SCHLEUPEN.CREATEORUPDATECONTRACTACCOUNT"
},
{
"name": "Event deleteContractAccount",
"id": "DE.SCHLEUPEN.DELETECONTRACTACCOUNT"
},
{
"name": "Event createOrUpdateInstallationMalo",
"id": "DE.SCHLEUPEN.CREATEORUPDATEINSTALLATIONMALO"
},
{
"name": "Event createOrUpdateInstallationMelo",
"id": "DE.SCHLEUPEN.CREATEORUPDATEINSTALLATIONMELO"
},
{
"name": "Event createOrUpdateLocation",
"id": "DE.SCHLEUPEN.CREATEORUPDATELOCATION"
},
{
"name": "Event createOrUpdateMeasuringDevice",
"id": "DE.SCHLEUPEN.CREATEORUPDATEMEASURINGDEVICE"
},
{
"name": "Event createOrUpdateMeterread",
"id": "DE.SCHLEUPEN.CREATEORUPDATEMETERREAD"
},
{
"name": "Event deleteMeterread",
"id": "DE.SCHLEUPEN.DELETEMETERREAD"
},
{
"name": "Event createOrUpdatePerson",
"id": "DE.SCHLEUPEN.CREATEORUPDATEPERSON"
},
{
"name": "Event deletePerson",
"id": "DE.SCHLEUPEN.DELETEPERSON"
},
{
"name": "Event createOrUpdateRateType",
"id": "DE.SCHLEUPEN.CREATEORUPDATERATETYPE"
},
{
"name": "Event createOrUpdateServiceProvider",
"id": "DE.SCHLEUPEN.CREATEORUPDATESERVICEPROVIDER"
},
{
"name": "Event deleteServiceprovider",
"id": "DE.SCHLEUPEN.DELETESERVICEPROVIDER"
}
]
},
{
"name": "EVI2Schleupen",
"leafs": [
{
"name": "MASTERDATA_CHANGE_CUSTOMER",
"id": "EVI2SCHLEUPEN-MASTERDATA_CHANGE_CUSTOMER"
},
{
"name": "CHANGE_BILLINGPLAN",
"id": "EVI2SCHLEUPEN-CHANGE_BILLINGPLAN"
},
{
"name": "PC_CANCEL_BILLINGCONTRACT",
"id": "EVI2SCHLEUPEN-PC_CANCEL_BILLINGCONTRACT"
},
{
"name": "PC_CHANGE_PRODUCT",
"id": "EVI2SCHLEUPEN-PC_CHANGE_PRODUCT"
},
{
"name": "SLP_CREATE_METERREADING",
"id": "EVI2SCHLEUPEN-SLP_CREATE_METERREADING"
}
]
}
]
},
{
"name": "EASY",
"leafs": [
{
"name": "Archivierung",
"id": "EASY"
}
]
}
]
},
{
"name": "EnetUtils",
"leafs": [
{
"name": "Marktpartner-Import",
"id": "SC12ENETUTILS.IMPORTMARKETPARTNER"
}
]
}
]
Anzeigenamen
Die Konfiguration enthält Gruppen als obersten Element. Jede Gruppe hat einen beliebigen Anzeigenamen im Feld "name" und kann untergeordnete Elemente enthalten. Diese werden im Feld "leafs" wiederum als Liste aufgeführt.
Wenn eine Gruppe keine untergeordneten Elemente enthält, so darf auf kein Feld "leafs" aufgeführt werden.
Ein untergeordnetes Element kann wiederum selbst eine Gruppe sein. Ein untergeordnetes Element, das keine Gruppe ist, hat einen individuellen Anzeigenamen "name" sowie einen Primärschlüssel "pk" des zugehörigen Schnittstellen-Datensatzes. Aus diesem Satz werden Informationen wie der Status der Schnittstelle ermittelt.