Created
May 27, 2011 09:56
-
-
Save rbramley/994973 to your computer and use it in GitHub Desktop.
A service check groovy script to query a database for Opsview
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Copying and distribution of this file, with or without modification, | |
* are permitted in any medium without royalty provided the copyright | |
* notice and this notice are preserved. This file is offered as-is, | |
* without any warranty. | |
* | |
* Custom SQL check (invoked using check_by_ssh) to ensure app server can query | |
* the database. Used with Groovy 1.5.6 on Debian Lenny against SQL Server. | |
* | |
* Opsview users should use check_sql_advanced for MySQL/PostgreSQL/Oracle or | |
* consider check_sql as an alternative. | |
* | |
* @author Robin Bramley, Opsera Limited (c) 2010 | |
*/ | |
import java.sql.SQLException | |
// consts | |
final int OK = 0 | |
final int WARNING = 1 | |
final int CRITICAL = 2 | |
final int UNKNOWN = 3 | |
def retCode = UNKNOWN | |
try { | |
// requires JDBC driver in ~nagios/.groovy/lib (or an appropriate Grab) | |
// e.g. jtds-1.2.5.jar | |
def sql = groovy.sql.Sql.newInstance( | |
"jdbc:jtds:sqlserver://acmedb:1433/ACME", | |
"acme", | |
"password_goes_here", | |
"net.sourceforge.jtds.jdbc.Driver") | |
// check the Liquibase change log table | |
def query = "select count(*) from DATABASECHANGELOG" | |
// query list | |
def row = sql.firstRow(query) | |
if (!row) { | |
println "WARNING: Nothing came back" | |
retCode = WARNING | |
} else { | |
// we'll get an anonymous map [:9] | |
if (row.collect {k,v -> v }[0] < 1) { | |
println "WARNING: No results from ${query}" | |
retCode = WARNING | |
} else { | |
println "OK: Results from ${query} = ${row}" | |
retCode = OK | |
} | |
} | |
} catch (SQLException sqle) { | |
println "CRITICAL: Problem: ${sqle.message}" | |
retCode = CRITICAL | |
} | |
System.exit(retCode) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment