Skip to content

Latest commit

 

History

History
60 lines (44 loc) · 3.29 KB

File metadata and controls

60 lines (44 loc) · 3.29 KB

Default check (all databases healthy):

check_mssql_databases
OK: All 4 databases are ONLINE

Size perfdata per database (size keywords accept units):

check_mssql_databases "warning=data_size > 100G"
OK: All 4 databases are ONLINE|'master_data'=4456448B;107374182400;0 'model_data'=8388608B;107374182400;0 'msdb_data'=15925248B;107374182400;0 'tempdb_data'=67108864B;107374182400;0

Report state, recovery model and log usage for every database:

check_mssql_databases "top-syntax=${status}: ${list}" "detail-syntax=${name}: ${state} ${recovery_model} log used ${log_used_pct}%" "warning=none" "critical=none" show-all
OK: appdb: ONLINE FULL log used 5%, master: ONLINE SIMPLE log used 30%, model: ONLINE FULL log used 12%, msdb: ONLINE SIMPLE log used 66%, tempdb: ONLINE SIMPLE log used 7%

Alert on log usage in FULL-recovery databases:

check_mssql_databases "filter=recovery_model = 'FULL'" "warning=log_used_pct > 80" "critical=log_used_pct > 90"
OK: All 2 databases are ONLINE|'appdb_log_used_pct'=6%;80;90 'model_log_used_pct'=12%;80;90

Ignore an intentionally offline database:

check_mssql_databases "filter=name != 'archive2019'"
OK: All 5 databases are ONLINE

Alert before a file hits its max_size or fills its volume (>= 0 excludes the -1 unknown sentinel):

check_mssql_databases "warning=data_headroom < 1K and data_headroom >= 0" "critical=log_headroom < 1K and log_headroom >= 0"
OK: All 5 databases are ONLINE|'appdb_data_headroom'=96468992B;1024;0 'appdb_log_headroom'=2199014866944B;0;1024 'master_data_headroom'=991358509056B;1024;0 'master_log_headroom'=991358509056B;0;1024 'model_data_headroom'=991358509056B;1024;0 'model_log_headroom'=991358509056B;0;1024 'msdb_data_headroom'=991358509056B;1024;0 'msdb_log_headroom'=2199021944832B;0;1024 'tempdb_data_headroom'=991358509056B;1024;0 'tempdb_log_headroom'=991358509056B;0;1024

Uncapped autogrow files report the volume's free space; files capped by max_size report the distance to the cap (appdb here is capped at 100MB with ~92MB of room; the ~2TB log values are the engine's default log cap).

A database approaching its size cap trips the threshold:

check_mssql_databases "warning=data_headroom < 200M and data_headroom >= 0" "critical=none" "top-syntax=${status}: ${list}" "detail-syntax=${name}: data headroom ${data_headroom}B, log headroom ${log_headroom}B"
WARNING: appdb: data headroom 96468992B, log headroom 2199014866944B, master: data headroom 991358509056B, log headroom 991358509056B, model: data headroom 991358509056B, log headroom 991358509056B, msdb: data headroom 991358509056B, log headroom 2199021944832B, tempdb: data headroom 991358509056B, log headroom 991358509056B|'appdb_data_headroom'=96468992B;209715200;0 'master_data_headroom'=991358509056B;209715200;0 'model_data_headroom'=991358509056B;209715200;0 'msdb_data_headroom'=991358509056B;209715200;0 'tempdb_data_headroom'=991358509056B;209715200;0

Flag hosts where headroom cannot be determined at all:

check_mssql_databases "warning=data_headroom = -1" "critical=none"
OK: All 5 databases are ONLINE|'appdb_data_headroom'=96468992B;-1;0 'master_data_headroom'=991358509056B;-1;0 'model_data_headroom'=991358509056B;-1;0 'msdb_data_headroom'=991358509056B;-1;0 'tempdb_data_headroom'=991358509056B;-1;0