Beschreibung

check_mssql_health ist ein Plugin, mit dem unterschiedliche Parameter eines MS SQL-Servers überprüft werden können.

Dokumentation

Kommandozeilenparameter

  • –hostname <hostname>
    Der Datenbankserver
  • –username <username>
    Der Datenbankuser
  • –password <password>
    Dessen Passwort
  • –port <port>
    Der Port, auf dem der Server lauscht (Default: 1433)
  • –server <server>
    Alternative zu Hostname+Port. <server> wird in der Datei freetds.conf gesucht.
  • –mode <modus>
    Mit dem mode-Parameter teilt man dem Plugin mit, was es tun soll. Siehe Liste der möglichen Werte weiter unten.
  • –name <objektname>
    Hier kann die Prüfung auf ein einziges Objekt begrenzt werden. (Momentan wird dieser Parameter nur für mode=sql verwendet)
  • –name2 <string>
    Verwendet man –mode=sql, dann erscheint das SQL-Statement in der Ausgabe und den Performancedaten. Mit dem Parameter name2 kann man dafür einen eigenen String vergeben.
  • –warning <range>
    Ermittelte Werte außerhalb dieses Bereichs lösen ein WARNING aus.
  • –critical <range>
    Ermittelte Werte außerhalb dieses Bereichs lösen ein CRITICAL aus.
  • –environment <variable>=<wert>
    Damit kann man dem Script Environmentvariablen mitgeben. Mehrfachnennungen sind möglich.
  • –method <connectmethode>
    Mit diesem Parameter teilt man dem Plugin mit, wie es sich zur Datenbank verbinden soll. (dbi für Verbindung per DBD::Sybase (default), derzeit keine Alternativen).
  • –units <%|KB|MB|GB>
    Die Angabe von Einheiten dient der “Verschönerung” von Ausgaben des mode=sql
  • –dbthresholds
    Dieser Parameter sorgt dafür, daß Schwellwerte aus der Datenbanktabelle check_mssql_health_thresholds gelesen werden

Um dem Plugin mitzuteilen, welche Werte es ermitteln und prüfen soll, benutzt man die Option –mode mit verschiedenen Schlüsselwörtern.

Modi

Schlüsselwort Bedeutung Wertebereich
connection-time Misst, wie lange Verbindungsaufbau und Login dauern 0..n Sekunden (1, 5)
connected-users Anzahl der verbundenen Benutzer 0..n (50, 80)
cpu-busy CPU Busy Time 0%..100% (80, 90)
io-busy IO Busy Time 0%..100% (80, 90)
full-scans Anzahl von Full Table Scans pro Sekunde 0..n (100, 500)
transactions Anzahl der Transactionen pro Sekunde 0..n (10000, 50000)
batch-requests Anzahl der Batch Requests pro Sekunde 0..n (100, 200)
latches-waits Anzahl der Latch-Anforderungen pro Sekunde, die nicht befriedigt werden konnten 0..n (10, 50)
latches-wait-time Durchschnittliche Zeit, die nach einer abgewiesenen Latch-Anforderung gewartet werden muss 0..n ms (1, 5)
locks-waits Anzahl der Lock-Anforderungen pro Sekunde, die nicht befriedigt werden konnten 0..n (100, 500)
locks-timeouts Anzahl der Lock-Anforderungen pro Sekunde, die auf Timeout gelaufen sind 0..n (1, 5)
locks-deadlocks Anzahl der Deadlocks pro Sekunde 0..n (1, 5)
sql-recompilations Anzahl der Re-Compilations pro Sekunde 0..n (1, 10)
sql-initcompilations Anzahl der Initial Compilations pro Sekunde 0..n (100, 200)
total-server-memory Der Hauptspeicher, den der SQL Server für sich reserviert hat 0..n (nearly1G, 1G)
mem-pool-data-buffer-hit-ratio Data Buffer Cache Hit Ratio 0%..100% (90, 80:)
lazy-writes Anzahl der Lazy Writes pro Sekunde 0..n (20, 40)
page-life-expectancy Durchschnittliche Verweildauer einer Page im Hauptspeicher 0..n (300:, 180:)
free-list-stalls Free List Stalls pro Sekunde 0..n (4, 10)
checkpoint-pages Anzahl der dirty Pages, die pro Sekunde geflushed werden 0..n ()
database-online Prüft, ob eine Datenbank online ist und Verbindungen akzeptiert -
database-free Freier Speicherplatz in einer Datenbank 0%..100% (5%, 2%)
database-backup-age Verstrichene Zeit seit dem letzten Backup einer Datenbank (in Stunden). Die Performancedaten beinhalten auch die Dauer des Backups (in Minuten). 0..n
database-logbackup-age Verstrichene Zeit seit dem letzten Backup der Logs einer Datenbank (in Stunden). Die Performancedaten beinhalten auch die Dauer des Backups (in Minuten). 0..n
database-file-auto-growths Anzahl der File Auto Grow Events (Data oder Log) während der letzten <n> Minuten (–lookback) 0..n (1, 5)
database-logfile-auto-growths Anzahl der Data File Auto Grow Events während der letzten <n> Minuten (–lookback) 0..n (1, 5)
database-datafile-auto-growths Anzahl der Log File Auto Grow Events während der letzten <n> Minuten (–lookback) 0..n (1, 5)
database-file-auto-shrinks Anzahl der File Auto Shrink Events (Data oder Log) während der letzten <n> Minuten (–lookback) 0..n (1, 5)
database-logfile-auto-shrinks Anzahl der Data File Auto Shrink Events während der letzten <n> Minuten (–lookback) 0..n (1, 5)
database-datafile-auto-shrinks Anzahl der Log File Auto Shrink Events während der letzten <n> Minuten (–lookback) 0..n (1, 5)
database-file-dbcc-shrinks Anzahl der DBCC File Shrink Events (Data oder Log) während der letzten <n> Minuten (–lookback) 0..n (1, 5)
failed-jobs Anzahl der fehlgeschlagenen Jobs während der letzten <n> Minuten (–lookback) 0..n (1, 5)
sql Ergebnis eines beliebigen SQL-Befehls, der eine Zahl zurückliefert. Der Befehl selbst wird mit dem Parameter –name übergeben. Ein Label für Performncedaten kann mit dem Parameter –name2 übergeben werden. Mit dem Parameter –units kann die Ausgabe um Einheiten ergänzt werden (%, c, s, MB, GB,.. Wenn der SQL-Befehl Sonder- und Leerzeichen enthält, kann er mit dem mode encode zuerst encodiert werden. 0..n
sql-runtime Laufzeit eines beliebigen SQL-Befehls in Sekunden. Der Befehl selbst wird mit dem Parameter –name übergeben. 0..n (1, 5)
list-databases Gibt eine Liste aller Datenbanken aus -
list-locks Gibt eine Liste aller Locks aus -

Es ist zu beachten, daß Schwellwerte entsprechend den Nagios Developer Guidelines anzugeben sind.

  • “10” bedeutet demzufolge “Alarm, wenn > 10” und
  • “90:” bedeutet “Alarm, wenn < 90”

Vorbereitung der Datenbank

Damit sich das Plugin die benötigten Informationen aus der Datenbank holen kann, muss ein Benutzer angelegt werden, der über gewisse Privilegien verfügt.

Am einfachsten ist es, dem Nagios-Benutzer die Rolle “serveradmin” zuzuweisen. Alternativ kann man sich auch gleich als Benutzer “sa” an der Datenbank anmelden. Allerdings stellt diese Methode ein grosses Sicherheitsrisiko dar, da in den Konfigurationsdateien von Nagios das Administratorpasswort des SQL Servers im Klartext vorliegt.

Von Birk Bohne stammt das folgende Script, mit dem die Einrichtung eines minimal, aber ausreichend privilegierten Monitoring-Users automatisiert werden kann.

declare @dbname varchar(255)
declare @check_mssql_health_USER varchar(255)
declare @check_mssql_health_PASS varchar(255)
declare @check_mssql_health_ROLE varchar(255)
declare @source varchar(255)
declare @options varchar(255)
declare @backslash int

/*******************************************************************/
SET @check_mssql_health_USER = '"[Servername|Domainname]\Username"'
SET @check_mssql_health_PASS = 'Password'
SET @check_mssql_health_ROLE = 'Rolename'
/******************************************************************

PLEASE CHANGE THE ABOVE VALUES ACCORDING TO YOUR REQUIREMENTS

- Example for Windows authentication:
  SET @check_mssql_health_USER = '"[Servername|Domainname]\Username"'
  SET @check_mssql_health_ROLE = 'Rolename'

- Example for SQL Server authentication:
  SET @check_mssql_health_USER = 'Username'
  SET @check_mssql_health_PASS = 'Password'
  SET @check_mssql_health_ROLE = 'Rolename'

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
It is strongly recommended to use Windows authentication. Otherwise
you will get no reliable results for database usage.
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

*********** NO NEED TO CHANGE ANYTHING BELOW THIS LINE *************/

SET @options = 'DEFAULT_DATABASE=MASTER, DEFAULT_LANGUAGE=English'
SET @backslash = (SELECT CHARINDEX('\', @check_mssql_health_USER))
IF @backslash > 0
  BEGIN
    SET @source = ' FROM WINDOWS'
    SET @options = ' WITH ' + @options
  END
ELSE
  BEGIN
    SET @source = ''
    SET @options = ' WITH PASSWORD=''' + @check_mssql_health_PASS + ''',' + @options
  END

PRINT 'create Nagios plugin user ' + @check_mssql_health_USER
EXEC ('CREATE LOGIN ' + @check_mssql_health_USER + @source + @options)
EXEC ('USE MASTER GRANT VIEW SERVER STATE TO ' + @check_mssql_health_USER)
EXEC ('USE MASTER GRANT ALTER trace TO ' + @check_mssql_health_USER)
EXEC ('USE MSDB CREATE USER ' + @check_mssql_health_USER + ' FOR LOGIN ' + @check_mssql_health_USER)
EXEC ('USE MSDB GRANT SELECT ON sysjobhistory TO ' + @check_mssql_health_USER)
EXEC ('USE MSDB GRANT SELECT ON sysjobschedules TO ' + @check_mssql_health_USER)
EXEC ('USE MSDB GRANT SELECT ON sysjobs TO ' + @check_mssql_health_USER)
PRINT 'User ' + @check_mssql_health_USER + ' created.'
PRINT ''

declare dblist cursor for
  select name from sysdatabases WHERE name NOT IN ('master', 'tempdb', 'msdb') open dblist
    fetch next from dblist into @dbname
    while @@fetch_status = 0 begin
      EXEC ('USE [' + @dbname + '] print ''GRANT permissions IN the db '' + ''"'' + DB_NAME() + ''"''')
      EXEC ('USE [' + @dbname + '] CREATE ROLE ' + @check_mssql_health_ROLE)
      EXEC ('USE [' + @dbname + '] GRANT EXECUTE TO ' + @check_mssql_health_ROLE)
      EXEC ('USE [' + @dbname + '] GRANT VIEW DATABASE STATE TO ' + @check_mssql_health_ROLE)
      EXEC ('USE [' + @dbname + '] GRANT VIEW DEFINITION TO ' + @check_mssql_health_ROLE)
      EXEC ('USE [' + @dbname + '] CREATE USER ' + @check_mssql_health_USER + ' FOR LOGIN ' + @check_mssql_health_USER)
      EXEC ('USE [' + @dbname + '] EXEC sp_addrolemember ' + @check_mssql_health_ROLE + ' , ' + @check_mssql_health_USER)
      EXEC ('USE [' + @dbname + '] print ''Permissions IN the db '' + ''"'' + DB_NAME() + ''" GRANTED.''')
      fetch next from dblist into @dbname
    end
close dblist
deallocate dblist

Es ist zu beachten, dass bei Verwendung von “SQL Server authentication” check_mssql_health nur noch eingeschränkt verwendet werden kann. Von dieser Authentifizierungsmethode wird daher dringend abgeraten. Üblicherweise gibt es auf dem Datenbankserver sowieso einen Nagios-(Windows-)Benutzer (z.B. für die Installation von NSClient++ o.ä.), so dass man diesen für die “Windows authentication” verwenden kann.

Ein weiteres Script vom selben Autor entfernt den Monitoring-User wieder aus der Datenbank.

declare @dbname varchar(255)
declare @check_mssql_health_USER varchar(255)
declare @check_mssql_health_ROLE varchar(255)

SET @check_mssql_health_USER = '"[Servername|Domainname]\Username"'
SET @check_mssql_health_ROLE = 'Rolename'

declare dblist cursor for
  select name from sysdatabases WHERE name NOT IN ('master', 'tempdb', 'msdb') open dblist
    fetch next from dblist into @dbname
    while @@fetch_status = 0 begin
      EXEC ('USE [' + @dbname + '] print ''Revoke permissions in the db '' + ''"'' + DB_NAME() + ''"''')
      EXEC ('USE [' + @dbname + '] EXEC sp_droprolemember ' + @check_mssql_health_ROLE + ' , ' + @check_mssql_health_USER)
      EXEC ('USE [' + @dbname + '] DROP USER ' + @check_mssql_health_USER)
      EXEC ('USE [' + @dbname + '] REVOKE VIEW DEFINITION TO ' + @check_mssql_health_ROLE)
      EXEC ('USE [' + @dbname + '] REVOKE VIEW DATABASE STATE TO ' + @check_mssql_health_ROLE)
      EXEC ('USE [' + @dbname + '] REVOKE EXECUTE TO ' + @check_mssql_health_ROLE)
      EXEC ('USE [' + @dbname + '] DROP ROLE ' + @check_mssql_health_ROLE)
      EXEC ('USE [' + @dbname + '] print ''Permissions in the db '' + ''"'' + DB_NAME() + ''" revoked.''')
      fetch next from dblist into @dbname
    end
close dblist
deallocate dblist

PRINT ''
PRINT 'drop Nagios plugin user ' + @check_mssql_health_USER
EXEC ('USE MSDB DROP USER ' + @check_mssql_health_USER)
EXEC ('USE MASTER REVOKE VIEW SERVER STATE TO ' + @check_mssql_health_USER)
EXEC ('DROP LOGIN ' + @check_mssql_health_USER)

PRINT 'User ' + @check_mssql_health_USER + ' dropped.'

An dieser Stelle nochmals herzlichen Dank an Birk Bohne für diese praktischen Scripts.

Beispiele

nagsrv$ check_mssql_health --mode mem-pool-data-buffer-hit-ratio
CRITICAL - buffer cache hit ratio is 71.21% | buffer_cache_hit_ratio=71.21%;90:;80:

nagsrv$ check_mssql_health --mode batch-requests
OK - 9.00 batch requests / sec | batch_requests_per_sec=9.00;100;200

nagsrv$ check_mssql_health --mode full-scans
OK - 6.14 full table scans / sec | full_scans_per_sec=6.14;100;500

nagsrv$ check_mssql_health --mode cpu-busy
OK - CPU busy 55.00% | cpu_busy=55.00;80;90

nagsrv$ check_mssql_health --mode database-free --name AdventureWorks
OK - database AdventureWorks has 21.59% free space left | 'db_adventureworks_free_pct'=21.59%;5:;2: 'db_adventureworks_free'=703MB;4768371582.03:;1907348632.81:;0;95367431640.62

nagsrv$ check_mssql_health --mode database-free --name AdventureWorks \
--warning 700: --critical 200: --units MB
WARNING - database AdventureWorks has 694.12MB free space left | 'db_adventureworks_free_pct'=21.31%;0.00:;0.00: 'db_adventureworks_free'=694.12MB;700.00:;200.00:;0;95367431640.62

nagsrv$ check_mssql_health --mode page-life-expectancy
OK - page life expectancy is 8950 seconds | page_life_expectancy=8950;300:;180:

nagsrv$ check_mssql_health --mode database-backup-age --name AHLE_WORSCHT \
--warning 72 --critical 120
WARNING - AHLE_WORSCHT backupped 102h ago | 'AHLE_WORSCHT_bck_age'=102;72;120 'AHLE_WORSCHT_bck_time'=12

Verwendung von Environmentvariablen

Man kann die Parameter –hostname, –port (oder die Alternative –server), –username und –password ganz weglassen, wenn man die entsprechenden Daten in Environmentvariablen bereitstellt. Seit der Version 3.x kann man Servicedefinitionen in Nagios um eigene Attribute (custom object variables) erweitern. Diese tauchen dann bei der Ausführung des Checkcommands im Environment auf.

Die Environmentvariablen heissen:

  • NAGIOS__SERVICEMSSQL_HOST (_mssql_host in der Servicedefinition)
  • NAGIOS__SERVICEMSSQL_USER (_mssql_user in der Servicedefinition)
  • NAGIOS__SERVICEMSSQL_PASS (_mssql_pass in der Servicedefinition)
  • NAGIOS__SERVICEMSSQL_PORT (_mssql_port in der Servicedefinition)
  • NAGIOS__SERVICEMSSQL_SERVER (_mssql_server in der Servicedefinition)

Installation

Dieses Plugin setzt die Installation des Perl-Moduls DBD::Sybase voraus.
Nach dem Auspacken des Archivs wird ./configure aufgerufen. Mit ./configure –help können Optionen angezeigt werden, die für den Bau des Plugins einige Defaulteinstellungen liefern.

  • –prefix=BASEDIRECTORY - Geben Sie hier das Verzeichnis an, in dem check_mssql_health liegen soll. (default: /usr/local/nagios)
  • –with-nagios-user=SOMEUSER - Dieser User wird der Eigentümer der Datei check_mssql_health sein. (default: nagios)
  • –with-nagios-group=SOMEGROUP - Die Gruppe des check_mssql_health Binaries. (default: nagios)
  • –with-perl=PATHTOPERL - Geben sie hier den Pfad zum Perl-Interpreter an, den sie benutzen möchten. (default: perl im PATH)

Sicherheitshinweis

Das Perl-Modul DBD::Sybase setzt auf einer Installation von FreeTDS auf. Dieses Paket wickelt die Kommunikation mit dem Datenbankserver ab. In der Defaulteinstellung wird dabei leider eine Protokolversion 4.x benutzt, bei der Passwörter im Klartext über das Netzwerk geschickt werden. Bitte ändern sie daher unbedingt folgenden Parameter in der Datei /etc/freetds.conf

[global]
# TDS protocol version
# tds version = 4.2
tds version = 8.0

Instanzen

Befinden sich mehrere named instances auf demselben Port eines Datenbankservers, so muss man diese in der /etc/freetds.conf einzeln registrieren.

[dbsrv1instance01]
        host = 192.168.1.19
        port = 1433
        instance = instance01

[dbsrv1instance02]
        host = 192.168.1.19
        port = 1433
        instance = instance02

Danach adressiert man die Instanzen z.B. mit --server dbsrv1instance02. Ansonsten würde man mit --host 192.168.1.19 --port 1433 die Defaultinstanz erreichen.

Neuerdings kann man sich den Weg über die freetds.conf sparen. Mit --server <FQDN>\<Instanz> sollte die Verbindung auch klappen. Voraussetzung ist ein laufender Service Browser auf dem DB-Server.

Download

check_mssql_health-2.7.6.1.tar.gz

Changelog

  • 2024-01-08 2.7.6.1
    fix the url in the help text
  • 2024-01-08 2.7.6
    add mode uptime
  • 2023-09-22 2.7.5
    update version&changelog for PR#52, thanks tectumopticum
  • 2022-08-31 2.7.4
    detect recovering mirror databases (requires sa privilege)
  • 2022-04-20 2.7.3
    leave some time for the first backup of new databases (–mitigation ok=24)
  • 2021-08-05 2.7.2.2
    bugfix in database-free perfdata
  • 2020-12-10 2.7.2.1
    Merge pull request #45 from GalipoliX/patch-1, improve a query in availability-mode
  • 2020-11-25 2.7.2
    database-online is more strict now, restoring is a bad state
  • 2020-11-11 2.7.1.2
    write a message if no availability groups were found
  • 2020-11-10 2.7.1.1
    bugfix in availability-group-health
  • 2020-11-02 2.7.1
    improve availability-group-health, check synchronization_state+health
  • 2020-10-26 2.7
    Update GLPlugin, commandline parameters can be set as environment variables
  • 2020-07-17 2.6.4.17
    Merge pull request #42 from ulikl/fix_long_running_jobs
  • 2020-04-04 2.6.4.16
    fix a bug in is_online()
  • 2019-07-17 2.6.4.15
    apply filter –nooffline and –notemp to the backup-modes
    encrypt password
  • 2018-03-22 2.6.4.14
    fix a bug in password decoding
  • 2018-03-16 2.6.4.13
    add db max size as threshold in database-size
  • 2017-07-29 2.6.4.12
    fix currentdb with a - in the database name
  • 2017-05-29 2.6.4.11
    update glplugin
  • 2017-04-18 2.6.4.10
    the same, forgotten to fix it in database-online
  • 2017-04-12 2.6.4.9
    fix a bug in database-*, is_primary_replica does not exist in sqlsrv 2012
  • 2017-02-08 2.6.4.8
    ignore alwayson replicas in database-free
  • 2016-11-03 2.6.4.7
    bugfix in database-free with zero-size filestreams. (Thanks Ivo)
  • 2016-09-20 2.6.4.6
    ignore database snapshots in database-free
  • 2016-08-12 2.6.4.5
    fix a bug in database-free (was introduced in 2.6.4.2)
  • 2016-08-10 2.6.4.4
    added Extraopts to the dist
  • 2016-08-05 2.6.4.3
    availability-group-health only for primary replica
  • 2016-08-03 2.6.4.2
    Remove a uninitialized-message in database-free&db-user
  • 2016-07-29 2.6.4.1
    availability-group-health only for versions >= 11.x
  • 2016-07-26 2.6.4
    add –mode availability-group-health
  • 2016-06-23 2.6.3.1
    use AlwaysOn tables only if enabled
  • 2016-06-23 2.6.3
    fix create-database-user, fix execute error handling
  • 2016-06-20 2.6.2.4
    update GLPlugin (encode)
    cleanup deprecated files
  • 2016-06-03 2.6.2.3
    update GLPlugin
  • 2016-05-11 2.6.2.2
    unset syb_flush_finish
    use NOLOCK for msdb.dbo.backupset, otherwise selects during backups take too long
  • 2016-05-02 2.6.2.1
    set syb_flush_finish
  • 2016-04-19 2.6.2
    let sql statements run into their private timeouts
    fix create-monitoring-user
  • 2016-04-04 2.6.1
    improve backup-age runtime for large number of databases
  • 2016-03-23 2.6
    add modes database-*free-details, database-filegroup-free, database-file-free
    improved calculation of free space
  • 2016-02-09 2.5
    add glplugin submodule
  • 2016-01-27 2.3.1.1
    bugfix in backup-age (The multi-part identifier “ar.replica_id” could not be bound). Korinthenkacker!
  • 2016-01-27 2.3.1
    bugfix in database-modes (“-“ in database name)
  • 2016-01-24 2.3
    add method sqsh and sqlrelay (to redesign)
  • 2016-01-24 2.2.2
    add sybase database* (to redesign)
  • 2016-01-19 2.2.1
    fix aps detection
  • 2016-01-15 2.2
    add aps modes
  • 2015-08-10 2.1
    add more modes
  • 2015-07-13 2.0.3
    new directory layout, standalone
  • 2015-04-23 2.0.2.1
    update GLPlugin[SNMP]
  • 2.0.2 2015-01-08
    mitigation of stderr and sql errors in sql-runtime is possible
  • 2.0.1 2014-10-01
    update GLPlugin
  • 2.0 2014-07
    complete redesign, based on GLPlugin.pm
  • 1.5.20.5 2014-06-06
    allow mitigation for failed-jobs if no jobs were run
  • 1.5.20.4 2014-06-03
    add –commit which forces auto-commit on
  • 1.5.20.3 2014-04-01
    implement –negate old_level=new_level
    output also ok-messages for my-modes
    allow floating point numbers in thresholds
  • 1.5.20.2 2014-02-28
    bugfix in transactions. handles databases with auto-close
  • 1.5.20.1 2014-01-07
    update configure.ac
    add mode jobs-enabled (Thanks Thomas Gelf)
  • 1.5.20 2013-12-06
    handle wrong io_busy and cpu_busy values (hickups of 500% caused by counter overflows
    are replaced by the last valid value. if the error persists dirung 5 plugin runs
    the obviously wrong value is reported)
  • 1.5.19.3 2013-09-11
    fix an uninitialized state_desc
  • 1.5.19.2 2013-09-06
    parameter –notemp is now usable for many modes
  • 1.5.19.1 2013-05-27
    fixed a bug in batch-requests, which affected case sensitive colletion systems like SAP (Thanks Andreas Seemueller)
  • 1.5.19 2013-02-28
    rewrote database-free for sybase
  • 1.5.18.1 2013-01-22
    fixed a bug in sybase database-free
  • 1.5.18 2012-01-03
    added asciidoc
  • 1.5.17 2012-12-20
    fixed a bug in database-free for sybase (many thanks to siemens audiologische technik gmbh!!)
  • 1.5.16 2012-11-29
    fixed a bug in database-free (where the offline state of 1 db was propagated to some others)
    implemented all sorts of thresholds
    add mode sql-runtime
  • 1.5.15.2 2012-11-22
    catch generic error-messages
  • 1.5.15.1 2012-11-19
    catch a “insufficient-rights”-error-message
  • 1.5.15 2012-11-16
    add parameter mitigation (which can reduce errorlevels for offline databases or dbs which were never backed up)
    tracedebug ouputs a bit more information now
  • 1.5.14 2012-11-07
    database-free can now handle offline databases
    add –offlineok
    exclude dbs with recovery model simple from database-logbackup-age
  • 1.5.13 2012-10-25
    add failed-jobs
    add database-online
  • 1.5.12 2012-10-24
    add database-file-auto-growths (and database-logfile-auto-growths, database-datafile-auto-growths)
    add database-file-auto-shrinks (and database-logfile-auto-growths, database-datafile-auto-growths)
    add database-file-dbcc-shrinks
  • 1.5.11 2012-07-05
    add selects for cpu-busy to see the return values with -v
    add some enhancements writen by Pall Sigurdsson
  • 1.5.10 2012-06-27
    split database-backup-age to database-backup-age and database-logbackup-age (Thanks Simon Meggle)
    fix warnings for newer Perl versions
    fix cpu-busy & io-busy
  • 1.5.9.3 2012-04-12
    fix warnings for newer Perl versions (Thanks Stephan Classen)
  • 1.5.9.2 2012-03-15
    bugfix in timeout-alarm handling under windows
  • 1.5.9.1 2011-09-19
    fix a bug in –currentdb (with a “-“ in the database name”). (Thanks Markus Stollwerk)
    single ticks around the –name argument under Windows CMD will be removed auto matically
  • 1.5.9 2011-08-12
    fix a bug in save_state for statefilesdirs with capial letters
  • 1.5.8.4 2011-06-29
    fix a bug in sybase chained transaction handling
  • 1.5.8.3 2011-06-03
    sites in an OMD (http://omdistro.org) environment have now private statefile directories
    fix a bug in extra-opts
    conection-time, connected-users, database-free and backup-age can be used with sybase ase 15.x servers
  • 1.5.8.2 2011-01-19
    output a nicer error message if a sqlrelay connection fails
  • 1.5.8.1 2011-01-03
    bugfix in –mode sql (numeric vs. regexp result)
  • 1.5.8 2010-12-20
    mode sql can now have a non-numerical output which is compared to a string/regexp
    new parameter –dbthresholds
    new mode report can be used to output only the bad news (short,long,html)
  • 1.5.7 2010-09-10
    fixed a bug in database-free (too much free space was calculated when more than one datafile of a database was on the same filesystem). (Thanks Juergen Essberger)
    new parameter extra-opts
  • 1.5.6 2010-08-12
    new parameter –dbthresholds. thresholds can now also be deposited in the table check_mssql_health_thresholds
    added –currentdb so that the plugin can connect to a non-default database
    –with-mymodules-dyn-dir on the commandline overrides the configure-option of the same name
  • 1.5.5
    backup-age is now an alias for the “official” database-backup-age
    catch the “can’t change context to database” error
    –mode sqlcmd
  • 1.5.3 2009-11-02
    fixed a bug in mode database-free (results are more accurate now)
    added new mode backup-age which checks the age (in hours) of the last backup
  • 1.5.2
    fixed a bug where database names with special characters showed errors. (Thanks Hugh Ranalli)
  • 1.5.1 2009-05-26
    added –server which can be used instead of –hostname/port (Thanks Mark Monaghan)
    lots of fixes. sql server 2000 should now be fully supported. (Thanks Mereghetti Stefano)
    –warning/–critical were ignored for memory-pool-related modes (Thanks Mereghetti Stefano)
  • 1.5.0.2 2009-05-05
    fixed a bug which led to error messages when using the plugin with sql server 2000 (Thanks Christian Mies)
    fixed a bug so sql server 2000 can list-databases (Thanks Mereghetti Stefano)
  • 1.5.0.1 2009-04-29
    added a security advice to the README (Thanks Mathieu Barret)
    fixed a bug in database-free (Thanks Michael Luebben)
    fixed a typo (Thanks Bernd Staudacher)
  • 1.5 - 2009-03-20
    rewrote database-free so that unrestricted growth is taken into account (limit is disk)
    added support for SQLRelay
  • 1.2 - 2009-03-19
    added support for object_name <> SQLServer:… (this caused “unable to aquire”-errors sometimes)
    fixed a bug in the PNP template
  • 1.1 - 2009-03-11
    added modes: transactions, latches-wait-time, locks-waits, locks-timeouts,
    locks-deadlocks, sql-recompilations, total-server-memory
    beautified the PNP template
    fixed counter rollovers after database restart
  • 1.0 - 2009-03-10
    —————
    Initial release

2011-3000 Gerhard Laußer
Check_nwc_health wird unter der GNU General Public License zur Verfügung gestellt. GPL

Autor

Gerhard Laußer (gerhard.lausser@consol.de) stellt dieses Plugin kostenlos zur Verfügung. Gratis Consulting hingegen gibt’s nur im Märchen, in der realen Welt hält der Laußer die Hand auf. Es gibt Leute, die finden das unverschämt, weil das ist doch Open Source und Open Source ist gratis. Solchen Leuten schenkt man ein Auto und die wollen noch den Führerschein spendiert bekommen. Tut man sowas? Nein!