Derdack DE

Alarmierung und mobile Störfallreaktion für kritische Systeme

Derdack DE
  • Szenarien
    • Übersicht
    • IT-Rufbereitschaften alarmieren
    • Service-Alarmierung für IT-Outsourcing Anbieter
    • Mobile Alarmierung für Produktion & Industrie
    • Kritische IT-Alarmierung für Banken & Finanzunternehmen
    • Technischer Außendienst für Energie & Versorger
    • Andere Branchen
  • Produkte
    • Übersicht
    • Enterprise Alert®
      • Übersicht
      • Alarmieren
      • Rufbereitschaft
      • Zusammenarbeit
      • Fernwirken per App
      • Mobile App
      • Integration
      • Technischer Support
      • Online Wissensdatenbank
      • FAQ
    • SIGNL4® Cloud
    • Referenzen & Mehr
  • Kaufen
    • Übersicht
    • Derdack Vertrieb
    • Azure Marketplace
  • Über Derdack
    • Über Derdack
    • Jobs und Karriere
    • Strategische Partner
    • Derdack Podcast
    • Kontakt Derdack
  • News & Blog
  • Demo anfragen
    • en en
  • News & Blog

    • Home
    • News & Blog
    • Technical
    • Zwei-Wege-Integration mit Backend-Systemen mittels Scripting

    Zwei-Wege-Integration mit Backend-Systemen mittels Scripting

    • 17. August 2016
    • Technical
    Zwei-Wege-Integration mit Backend-Systemen mittels Scripting

    Enterprise Alert bietet „codeless“ Integration mit einer ganzen Reihe von Standard-Tools, zum Beispiel Microsoft System Center, HP Operations Manager, HP Service Manager, usw. Darüber hinaus gibt es offene Schnittstellen / API s, wie, Kommandozeile, Web Service, SMTP und mehr. Diese ermöglichen eine einfache Integration mit fast jedem Backend-System.

    Es gibt jedoch auch einen eleganten Weg zur Integration mittels Enterprise Alert Scripting Host. Das hat folgende Vorteile:

    • Scripting ist sehr flexibel und eine enge Integration in viele Backend-Systeme ist einfack möglich (zum Beispiel per Datenbank, Web Service, Dateien, usw.)
    • Verwendung dynamischer Event Parametern
    • Die Script Integration verhält sich wie das Web Service Interface in Enterprise Alert und es können Alarmierungsrichtlinien zur Auswertung verwendet werden
    • Zwei-Wege-Integration ist möglich, inklusive Updates und Reset Event
    • Einfach anzupassen, zum Beispiel Hinzufügen von Event Parametern oder Anpassung der Implementierung bei Änderungen im Backend System

    Das folgende Script ist ein Beispiel für das Lesen von Event-Daten aus einer Datenbank:

     

    /*
    =============================================================================
    CONFIGURATION
    =============================================================================
    */

    // The interval in milliseconds when the messages get read from the MMSEND database table
    var APPCONFIG_CHECK_MESSAGES_INTERVAL = 10000;

    // The script ID used for marking the field „EA_Status“. This is unique for each script running in a high-availability environment, e.g. 1001, 1002.
    // Must be greater than 1000
    var APPCONFIG_SCRIPT_ID = 1002;

    // Enterprise Alert database connection string
    var APPCONFIG_DBCONNECTIONSTRING = „Driver=SQL Server Native Client 11.0;Server=sqlserver;Trusted_Connection=Yes;Database=EnterpriseAlert2016;Connect Timeout=120;General Timeout=120“;

    /*
    =============================================================================
    Main functions
    =============================================================================
    */

    EAScriptHost.LogInfo(„Script Interface process started“);

    function CheckEvents()
    {

    while (true)
    {

    var oConn = null;
    var oRs = null;
    var bInTrans = false;

    try
    {

    //Open the db connection
    //
    oConn = new ActiveXObject(„ADODB.Connection“);
    oConn.IsolationLevel = 1048576; // Set the isolation level to Serializable
    oConn.Open(APPCONFIG_DBCONNECTIONSTRING);
    EAScriptHost.LogDebug(„Db Connection Opened“);

    oConn.BeginTrans();
    bInTrans = true;

    oConn.Execute(„UPDATE EnterpriseAlert_Central_EventSync SET EA_Status = “ + APPCONFIG_SCRIPT_ID + „WHERE EA_Status = 0“);

    // Get the details of the message
    //
    var iNumMessages = 0;
    oRs = DbGetRS(oConn, „SELECT * FROM EnterpriseAlert_Central_EventSync WHERE EA_Status = “ + APPCONFIG_SCRIPT_ID + “ ORDER BY intID ASC“);
    while (!oRs.EOF)
    {

    var iRecordId = oRs.Fields.Item(„intID“).Value;

    // Create new event
    EAScriptHost.LogDebug(„Script Interface: Create new event“);
    objevent = EAScriptHost.CreateEvent();
    objevent.SetEventType(„ConnectorEvent“);
    objevent.SetEventName(„NewAlert“);
    objevent.SetProperty(„serviceFrom“, „//q:mmwebservice/EventProviderAPI/Custom Script Interface/EnterpriseAlert_Central_EventSync“);

    // Set event parameters and values
    // objevent.SetProperty(„externalTicketId“, oRs.Fields.Item(„EventID“).Value == null ? „“ : oRs.Fields.Item(„EventID“).Value);
    objevent.SetEventParameter(„intID“, oRs.Fields.Item(„intID“).Value == null ? „“ : oRs.Fields.Item(„intID“).Value);

    objevent.SetEventParameter(„EventID“, oRs.Fields.Item(„EventID“).Value == null ? „“ : oRs.Fields.Item(„EventID“).Value);
    objevent.SetEventParameter(„Description“, oRs.Fields.Item(„Description“).Value == null ? „“ : oRs.Fields.Item(„Description“).Value);
    objevent.SetEventParameter(„MachineName“, oRs.Fields.Item(„MachineName“).Value == null ? „“ : oRs.Fields.Item(„MachineName“).Value);
    objevent.SetEventParameter(„EA_Status“, oRs.Fields.Item(„EA_Status“).Value == null ? „“ : oRs.Fields.Item(„EA_Status“).Value);

    // Send event
    objevent.Send();

    iNumMessages++;

    oRs.MoveNext();
    }

    // Update the processed records
    oConn.Execute(„UPDATE EnterpriseAlert_Central_EventSync SET EA_Status=1 WHERE EA_Status = “ + APPCONFIG_SCRIPT_ID);

    // Delete the processed records
    // oConn.Execute(„DELETE EnterpriseAlert_Central_EventSync WHERE EA_Status = “ + APPCONFIG_SCRIPT_ID);

    EAScriptHost.LogDebug(„Number of events processed: “ + iNumMessages.toString());

    oRs.Close();
    oRs = null;

    oConn.CommitTrans();

    } catch (e) { // catch all thrown errors

    try
    {

    EAScriptHost.LogError(„Error processing event. Error message (Exception): “ + e.message);

    if (bInTrans == true && oConn != null)
    {
    oConn.RollbackTrans();
    }

    }
    catch (e2)
    {
    EAScriptHost.LogError(„Error processing exception. “ + e2.message);
    }

    }
    finally
    {

    try
    {

    // Release all resources at the end of message processing
    //
    if (oRs != null)
    {
    oRs.Close();
    oRs = null;
    }

    if (oConn != null)
    {
    oConn.Close();
    oConn = null;
    }

    EAScriptHost.LogDebug(„Resources released.“);

    } catch (e3)
    {
    EAScriptHost.LogError(„Error releasing resources. “ + e3.message);
    }

    }

    Sleep(APPCONFIG_CHECK_MESSAGES_INTERVAL);

    }

    }

    // Returns an ADODB.Recordset object for the specified query
    function DbGetRS(oConn, strSQL)
    {

    //Set some constants
    var adOpenStatic = 3;
    var adUseClient = 3;
    var adLockBatchOptimistic = 4;

    //Declare our variables
    var oRS;

    // Create the Recordset object
    oRS = new ActiveXObject(„ADODB.Recordset“);

    // Populate the Recordset object with a SQL query
    oRS.Open(strSQL, oConn, adOpenStatic, adLockBatchOptimistic, 0);

    // Return the Recordset
    return oRS;

    }

    // Gets a date string for the date object
    //
    function GetDateString(date)
    {

    var strDate = date.getFullYear().toString() + „-“ + GetDoubleDigit((date.getMonth() + 1).toString()) + „-“ + GetDoubleDigit(date.getDate().toString()) + “ “ + GetDoubleDigit(date.getHours().toString()) + „:“ + GetDoubleDigit(date.getMinutes().toString()) + „:“ + GetDoubleDigit(date.getSeconds().toString());
    return strDate;

    }

    // Gets a double digit for the date
    //
    function GetDoubleDigit(strText)
    {

    var strOutput;
    if (strText.length == 1)
    strOutput = „0“ + strText;
    else
    strOutput = strText;
    return strOutput;

    }

    // Run
    CheckEvents();

     

    Zusätzlich zu dem Script ist es noch notwendig einen entsprechenden Event Provider in der Datenbank anzulegen. Das kann mit dem folgenden Beispiel SQL Script geschehen:

     

    BEGIN
    IF NOT EXISTS (SELECT * FROM [dbo].[EventProviders] WHERE Name = ‚Custom Script Interface‘)
    BEGIN
    INSERT INTO [dbo].[EventProviders] (Name, DisplayName, Description, DateCreated, Type, Options, UserID, ResponseAddress, LicenseName, ClientAddress)
    VALUES (‚Custom Script Interface‘, ‚Custom Script Interface‘, ‚Custom Script Interface‘, GETDATE(), 3, 2, 1, “, null, ‚::1‘)
    END
    BEGIN
    DECLARE @ProviderID AS INT
    SET @ProviderID = (SELECT ID FROM [dbo].[EventProviders] WHERE Name = ‚Custom NetIQ‘)

    INSERT INTO [dbo].[EventParameters] (ProviderID, Name, DisplayName, XPath, Description, Options, ForbiddenEvaluations) VALUES (@ProviderID, ‚intID‘, ‚intID‘, “, “, 0, 0)
    INSERT INTO [dbo].[EventParameters] (ProviderID, Name, DisplayName, XPath, Description, Options, ForbiddenEvaluations) VALUES (@ProviderID, ‚EventID‘, ‚EventID‘, “, “, 0, 0)
    INSERT INTO [dbo].[EventParameters] (ProviderID, Name, DisplayName, XPath, Description, Options, ForbiddenEvaluations) VALUES (@ProviderID, ‚Description‘, ‚Description‘, “, “, 0, 0)
    INSERT INTO [dbo].[EventParameters] (ProviderID, Name, DisplayName, XPath, Description, Options, ForbiddenEvaluations) VALUES (@ProviderID, ‚MachineName‘, ‚MachineName‘, “, “, 0, 0)
    INSERT INTO [dbo].[EventParameters] (ProviderID, Name, DisplayName, XPath, Description, Options, ForbiddenEvaluations) VALUES (@ProviderID, ‚EA_Status‘, ‚EA_Status‘, “, “, 0, 0)

    END
    END

     

    Datensätze, die aus der Datenbank ausgelesen werden, kommen dann in Enterprise Alert als Events an. Für die Zwei-Implementierung kann der entsprechende Code in den Event Handler aufgenommen werden, zum Beispiel in OnTicketStatus().

    Tagged

    backendIntegrationscripting

    Teilen

    Ähnliche Beiträge

    Enterprise Alert 9.4.1 enthält Fehlerkorrekturen und die überarbeitete Version der Sentinel Connector App

    31. Januar 2023

    Kritische System Alarme via SIGNL4

    29. Dezember 2022

    Enterprise Alert 9.4 Update führt Fernaktionen in hybriden Szenarien sowie Proxy-Unterstützung für MS Teams ein

    25. Oktober 2022

    Fernaktionen per mobiler App im hybriden Setup

    18. Oktober 2022

    Über uns

    Derdack ist einer der weltweit führenden Anbieter für die automatisierte Alarmierung von Rufbereitschaften und Wartungsteams direkt aus technischen Anlagen, IT-Systemen und kritischen Infrastrukturen.

    Meist gelesen

    • Enterprise Alert 2016 allows for an unlimited Number of Voice Lines Enterprise Alert 2016 allows for an unlimited Number of Voice Lines
    • Enterprise Alert 2019 ab sofort verfügbar
    • SIGNL4 gestartet- Entdecken Sie eine neue Ära der mobilen Alarmierung
    • Alarme an Microsoft Teams weiterleiten
    • SCOM Alarmierung mobil und zuverlässig machen
    • Derdack Background IT-Automatisierung am Beispiel der IT-Alarmierung
    • How to add additional Event Parameters in Enterprise Alert How to add additional Event Parameters in Enterprise Alert
    • Kid shouting through vintage phone. Verständliche Alarmierungen per Sprach-Anruf

    Kategorien

    • Banken & Versicherungen (5)
    • Beratung (2)
    • Business (18)
    • Cloud Services (2)
    • Energie & Versorgung (7)
    • Events (17)
    • IT Ops (13)
    • Kunden (17)
    • News (35)
    • Produktion & Industrie (7)
    • Software (5)
    • Technical (113)
    • Transport (1)

    Schlagwörter

    Active Directory Alarm Alarmierung Alarmierungsrichtlinie alert alert notification anruf Automatisierung Azure BMC Database derdack derdack Dienstplanung distribution lists enterprise alert Enterprise Alert Enterprise Alert 2016 Gartner HPE HPE ITOM Incident Management Industrie 4.0 Integration IT-Alarmierung IT-Betrieb IT-Sicherheit microsoft microsoft Mobile App monitoring Notfallalarmierung on-call Operative Alarmierung Partner Referenz release rest api Rufbereitschaft Schichtplanung SCOM security groups Störfallmanagement System Center update

    Folge uns

    • Twitter
    • Facebook
    • LinkedIn
    • XING
    • YouTube
    • Vimeo
    • Home
    • News & Blog
    • Technical
    • Zwei-Wege-Integration mit Backend-Systemen mittels Scripting

    KONTAKT:
    Intl: +49 331 29878-0

    CH: +41 (31) 539 19 90
    US: +1 (804) 570-2005

    KONTAKT VIA EMAIL:
    info@derdack.com

    FIRMENSITZ:
    US & Europa

    NEWSLETTER:
    Hier anmelden!

    KARRIERE:
    Aktuelle Jobangebote

    EVENTS

    • Keine Veranstaltungen
    • Wo wir helfen
    • Produkte
    • Kaufen
    • Über Derdack
    • News & Blog
    • Jetzt Testen
    • Cookie-Richtlinie (EU)
    • Twitter
    • LinkedIn
    • YouTube
    • Vimeo

     © 2025 Derdack GmbH – Impressum, Datenschutz

    • Szenarien
      • Übersicht
      • IT-Rufbereitschaften alarmieren
      • Service-Alarmierung für IT-Outsourcing Anbieter
      • Mobile Alarmierung für Produktion & Industrie
      • Kritische IT-Alarmierung für Banken & Finanzunternehmen
      • Technischer Außendienst für Energie & Versorger
      • Andere Branchen
    • Produkte
      • Übersicht
      • Enterprise Alert®
        • Übersicht
        • Alarmieren
        • Rufbereitschaft
        • Zusammenarbeit
        • Fernwirken per App
        • Mobile App
        • Integration
        • Technischer Support
        • Online Wissensdatenbank
        • FAQ
      • SIGNL4® Cloud
      • Referenzen & Mehr
    • Kaufen
      • Übersicht
      • Derdack Vertrieb
      • Azure Marketplace
    • Über Derdack
      • Über Derdack
      • Jobs und Karriere
      • Strategische Partner
      • Derdack Podcast
      • Kontakt Derdack
    • News & Blog
    • Demo anfragen
    Cookie-Zustimmung verwalten
    Wir verwenden Cookies, um unsere Website und unseren Service zu optimieren.
    Funktional Immer aktiv
    Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
    Vorlieben
    Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
    Statistiken
    Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
    Marketing
    Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
    Optionen verwalten Dienste verwalten Anbieter verwalten Lese mehr über diese Zwecke
    Cookie Einstellungen
    {title} {title} {title}