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
    • Derdack Partner finden
    • Azure Marketplace
  • Über Derdack
    • Über Derdack
    • Jobs und Karriere
    • Partnerprogramm
    • Strategische Partner
    • Derdack Podcast
    • Kontakt Derdack
  • News & Blog
  • Demo anfragen
    • en en
  • News & Blog

    • Home
    • News & Blog
    • Technical
    • Automatische Maintenance für Datenbank und Log-Files von Enterprise Alert

    Automatische Maintenance für Datenbank und Log-Files von Enterprise Alert

    • 23. Juni 2016
    • Technical
    Automatische Maintenance für Datenbank und Log-Files von Enterprise Alert

    Enterprise Alert generiert im Laufe der Zeit einige Datenbank-Einträge und Log-Files. Viele davon sind sehr hilfreich für Reporting-Zwecke aber nach einer gewissen Zeit wird immer mehr Speicherplatz verbrauche und das System kann dadurch Performance einbüßen.

    Es ist daher empfehlenswert historische Datenbank-Einträge und alte Log-Files von Zeit zu Zeit zu löschen. Um dies komfortable zu ermöglichen, stellt Derdack ein Maintenance Script in PowerShell bereit. Dieses kann manuell oder automatisiert ausgeführt werden. Zum Beispiel kann das vom Windows Task Scheduler aus in bestimmten Intervallen (zum Beispiel wöchentlich oder monatlich)  geschehen. Wir empfehlen das Script zu Zeiten mit möglichst geringer Last auszuführen, da das Script selber die Datenbank zusätzlich belastet.

    Am Anfang des Scripts findet sich eine Sektion mit der Konfiguration. Diese kann entsprechend dem jeweiligen Szenario angepasst werden.

    Das PowerShell Script sieht wie folgt aus:
    <#
    This script deletes Log messages from Enterprise Alert
    from Folders and Tables older than configured in $keeplogdays.

    To set up this script, please configure settings below in the CONFIGURATION section.

    Works with Enterprise Alert 2012, 2015, 2016

    © 2008-2016 Derdack GmbH, www.derdack.com, Enterprise Alert is a registered trademark of Derdack GmbH
    #>

    # History:
    # 22.06.2015 HF – Delete Version and Logging revised for EA 2015
    # 14.04.2015 HF – Tables added [EmergencyCalloutAlerts], [RemoteActionsHistory], [RemoteJobsHistory]
    # 17.04.2014 HF – Connection String
    # 16.04.2014 HF – add writes Log File
    # 07.04.2014 HF – First Version

    #requires -version 3
    #endregion – Header

    #region – Configuration
    #=============================================================================
    #CONFIGURATION
    #=============================================================================

    # Database connection String
    $dbConnectionString = „Server=sqlserver;Trusted_Connection=No;UID=SA;PWD=Derdack!;Database=EnterpriseAlert;“
    # „Server=localhost\SQLEXPRESS;Database=MMEA;Trusted_Connection=True;“

    #keep all logs from the last xx days
    $keeplogdays = „60“

    #Main log Folder
    $logFolders = @(„C:\Program Files (x86)\Enterprise Alert\Logs“,“C:\Program Files (x86)\Enterprise Alert\ScriptingHost\Logs“)

    #Tables to truncate Log Tables (tablename,columnname of time to compare)
    $DBlogTables = @(@(„MMEVENTS“,“MSGTIMESTAMP“) ,@(„EAEvents“,“Timestamp“))

    #Tables to truncate Message and Tickt Tables
    $DBMsgTables = @(@(„MMINBOUND“,“MSGTIMESTAMP“),@(„MMOUTBOUND“,“MSGTIMESTAMP“),@(„MMTICKETS“,“CREATIONTIME“),@(„MMTICKETMESSAGES“,“SENDINGTIME“),@(„PolicyExecutionJournal“,“Timestamp“), @(„EmergencyCalloutAlerts“,“CreationTime“),@(„EmergencyCalloutInstances“,“LastTimestamp“), @(„RemoteActionsHistory“,“Created“), @(„RemoteJobsHistory“,“CreationTime“))

    #logMessage for E-mail
    $emailMessage = „Run Log Message“

    #Name of log File for this Script
    $LogfileNameFQDN = $logFolders[0] + „\LOG_DELETE\{0:yyyy-MM-dd}_{1}_{2}.log“ -f (Get-Date),$env:COMPUTERNAME,““

    #static variables
    $crlf = „`r`n“

    #endregion – Configuration

    #region – Function

    #truncates Tables from MMEA Database
    function .runSQL
    {
    param( [String]$dbConnectionString,
    [String]$SQLStatement

    )
    try {
    $conn = New-Object System.Data.SqlClient.SqlConnection
    $conn.ConnectionString = $dbConnectionString
    $conn.Open()
    $emailMessage = $emailMessage + $crlf + „Run SQL “ + $SQLStatement
    $cmd = New-Object System.Data.SqlClient.SqlCommand($SQLStatement,$conn)
    $rdr = $cmd.ExecuteNonQuery()
    $emailMessage = $emailMessage + $crlf + „Run SQL “ + $rdr

    }
    catch{
    return „Error running: “ + $SQLStatement
    }
    return [string]$rdr
    $conn.close()

    }

    function .checkTableCount
    {
    param( [String]$dbConnectionString,
    [String]$SQLStatement
    )

    #Write-output „IDcounter is: “ $SQLStatement
    $connectionString = $dbConnectionString

    $connection = New-Object System.Data.SqlClient.SqlConnection
    $connection.ConnectionString = $connectionString
    $connection.Open()
    $command = $connection.CreateCommand()
    $command.CommandText = $SQLStatement
    $ID = $command.ExecuteScalar()
    $connection.Close()

    return $ID
    }

    # Thank you goes to: http://blog.danskingdom.com/powershell-functions-to-delete-old-files-and-empty-directories/

    # Function to remove all empty directories under the given path.
    # If -DeletePathIfEmpty is provided the given Path directory will also be deleted if it is empty.
    # If -OnlyDeleteDirectoriesCreatedBeforeDate is provided, empty folders will only be deleted if they were created before the given date.
    # If -OnlyDeleteDirectoriesNotModifiedAfterDate is provided, empty folders will only be deleted if they have not been written to after the given date.
    function Remove-EmptyDirectories([parameter(Mandatory)][ValidateScript({Test-Path $_})][string] $Path, [switch] $DeletePathIfEmpty, [DateTime] $OnlyDeleteDirectoriesCreatedBeforeDate = [DateTime]::MaxValue, [DateTime] $OnlyDeleteDirectoriesNotModifiedAfterDate = [DateTime]::MaxValue)
    {
    Get-ChildItem -Path $Path -Recurse -Force -Directory | Where-Object { (Get-ChildItem -Path $_.FullName -Recurse -Force -File) -eq $null } |
    Where-Object { $_.CreationTime -lt $OnlyDeleteDirectoriesCreatedBeforeDate -and $_.LastWriteTime -lt $OnlyDeleteDirectoriesNotModifiedAfterDate } |
    Remove-Item -Force -Recurse

    # If we should delete the given path when it is empty, and it is a directory, and it is empty, and it meets the date requirements, then delete it.
    if ($DeletePathIfEmpty -and (Test-Path -Path $Path -PathType Container) -and (Get-ChildItem -Path $Path -Force) -eq $null -and
    ((Get-Item $Path).CreationTime -lt $OnlyDeleteDirectoriesCreatedBeforeDate) -and ((Get-Item $Path).LastWriteTime -lt $OnlyDeleteDirectoriesNotModifiedAfterDate))
    { Remove-Item -Path $Path -Force }
    }

    # Thank you goes to: http://blog.danskingdom.com/powershell-functions-to-delete-old-files-and-empty-directories/
    # Function to remove all files in the given Path that were created before the given date, as well as any empty directories that may be left behind.
    function Remove-FilesCreatedBeforeDate([parameter(Mandatory)][ValidateScript({Test-Path $_})][string] $Path, [parameter(Mandatory)][DateTime] $DateTime, [switch] $DeletePathIfEmpty)
    {
    Get-ChildItem -Path $Path -Recurse -Force -File | Where-Object { $_.CreationTime -lt $DateTime } | Remove-Item -Force
    Remove-EmptyDirectories -Path $Path -DeletePathIfEmpty:$DeletePathIfEmpty -OnlyDeleteDirectoriesCreatedBeforeDate $DateTime
    }

    # Funktion send a E-mail to the SMTP Server
    function sendSmtpMail
    {
    param( [String]$Smtpserver,
    [String]$MessageBody
    )

    $from = „mmea-check-{0}@XXX.net“ -f $env:COMPUTERNAME
    $to = „mmea-smtp-check@XXX.net“
    $Subject = „MMEA-SMTPCHECK-{0}“ -f $env:COMPUTERNAME
    $Body = $MessageBody
    Send-MailMessage -From $from -To $to -SmtpServer $Smtpserver -Body $Body -Subject $Subject -ErrorAction SilentlyContinue
    #return $?,$null

    }

    # Function writes a Log File
    function writeLogFile
    {
    param(
    [String]$Message,
    [String]$LogfileName
    )

    if ((Test-Path $LogfileName) -eq $false)
    {
    New-Item $LogfileName -ItemType file -Force | Out-Null
    }
    $Message | Out-File $LogfileName -Append

    }

    function .deleteDBLogEntries{
    param(
    $DBTables
    )

    # Delete all DB Logs
    foreach ($Tables in $DBTables) {

    #getlast ID
    $IDcounter = 100
    $Iterations = 0
    #Write-output „IDcounter Start is: “ $IDcounter
    while ($IDcounter -ne 0) {
    $sqlstaementCounter = „Select Top(1000) CAST(id as int) as lastID FROM “ + $Tables[0] +“ WHERE DATEDIFF(dd,“ + $Tables[1] + “ , GETDATE()) >= „+ $keeplogdays + “ order by ID desc“
    $LastID = .checkTableCount -dbConnectionString $dbConnectionString -SQLStatement $sqlstaementCounter

    if ($LastID -le 0 ){
    $IDcounter = 0
    break
    }
    #now delete first part
    $sqlstaement = „DELETE top(1000) FROM “ + $Tables[0] + “ WHERE ID < “ + $LastID
    $Iterations = $Iterations + 1
    $Success = (.runSQL -dbConnectionString $dbConnectionString -SQLStatement $sqlstaement)

    $RestNumbersStaetment = „Select CAST(count(id) as int) as Maxnumbers FROM “ + $Tables[0] + “ WHERE ID < “ + $LastID
    $IDcounter = .checkTableCount -dbConnectionString $dbConnectionString -SQLStatement $RestNumbersStaetment

    }
    $Message = $Message + $crlf + „Cleanup for: “ + $Tables[0] + “ Iterations: “ + $Iterations
    }
    return $Message
    }

    #endregion – Function

    #region – Main
    $emailMessage = „Start “ + (Get-Date)
    $emailMessage = $emailMessage + $crlf + „Cleanup Days from “ + ((Get-Date).AddDays(-$keeplogdays))

    # Delete all files
    foreach ($logFolder in $logFolders) {
    $emailMessage = $emailMessage + $crlf + „Cleanup “ + $logFolder
    Remove-FilesCreatedBeforeDate -Path $logFolder -DateTime ((Get-Date).AddDays(-$keeplogdays)) -DeletePathIfEmpty

    }

    # Delete all DB Logs
    $emailMessage = $emailMessage + $crlf + [string](.deleteDBLogEntries -DBTables $DBlogTables)
    $emailMessage = $emailMessage + $crlf + [string](.deleteDBLogEntries -DBTables $DBMsgTables)

    $emailMessage = $emailMessage + $crlf + „Log End “ + (Get-Date)
    #sendSmtpMail -Smtpserver $env:COMPUTERNAME + -MessageBody $emailMessage
    writeLogFile -Message $emailMessage -LogfileName $LogfileNameFQDN

    #endregion – Main

    Tagged

    DatenbankLog-FilesMaintenancePowerShellPurge

    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
    • 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
    • SCOM Alarmierung mobil und zuverlässig machen
    • 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
    • Automatische Maintenance für Datenbank und Log-Files von Enterprise Alert

    KONTAKT:
    Intl: +49 331 29878-0

    CH: +41 (31) 539 19 90
    US: +1 (202) 4 70-0885
    UK: +44 (20) 88167095

    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
    • XING
    • YouTube
    • Vimeo

     © 2022 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
      • Derdack Partner finden
      • Azure Marketplace
    • Über Derdack
      • Über Derdack
      • Jobs und Karriere
      • Partnerprogramm
      • 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 Verwalten von Dienstleistungen Anbieter verwalten Lese mehr über diese Zwecke
    Cookie Einstellungen
    {title} {title} {title}