JDBCQueryMonitor
The JDBCQueryMonitor runs an SQL query against a database and is able to verify the result of the query. A read-only connection is made, preventing the monitor from being able to alter data. It is based on the JDBC technology to connect and communicate with the database.
Configuration and use
Parameter | Description | Default |
---|---|---|
Required |
||
driver |
JDBC driver class to use. |
org.postgresql.Driver |
url {} |
JDBC URL to connect to. |
jdbc:postgresql://OPENNMS_JDBC_HOSTNAME/opennms |
user {} |
Database user |
postgres |
password {} |
Database password |
empty string |
query |
The SQL query to run. |
n/a |
action |
The evaluation action to perform. |
row_count |
column |
The result column to evaluate against when using compare_string method. |
n/a |
operator |
Operator to use for the evaluation. |
>= |
operand |
The operand to compare against the SQL query result. |
depends on the action |
Optional |
||
message |
The message to use if the service is down. Both operands and the operator are added to the message. |
generic message, depending on the action |
retries |
How many retries to perform before failing the test. |
0 |
{} indicates the parameter supports placeholder substitution.
The OPENNMS_JDBC_HOSTNAME is replaced in the url parameter with the IP or resolved hostname of the interface the monitored service is assigned to. |
This monitor implements the Common Configuration Parameters.
Parameter | Description | Default operand |
---|---|---|
row_count |
Compares the number of returned rows, not a value of the resulting rows. |
1 |
compare_string |
Always checks strings for equality with the operand. |
n/a |
compare_int |
Compares an integer from a column of the first result row. |
1 |
Parameter | XML entity to use in XML configs |
---|---|
= |
= |
< |
< |
> |
> |
!= |
!= |
⇐ |
<= |
>= |
>= |
Evaluate the action - operator - operand
Evaluates only the first result row the SQL query returns. The evaluation can be against the value of one column or the number of rows the SQL query returns.
Provide the database driver
The JDBCQueryMonitor is based on JDBC and requires a JDBC driver to communicate with any database.
Since Meridian itself uses a PostgreSQL database, the PostgreSQL JDBC driver is available out of the box.
For all other database systems, you must provide a compatible JDBC driver to Meridian as a JAR file.
To provide a JDBC driver, place the driver-jar in your $OPENNMS_HOME/lib
folder.
For instructions on how to provide JDBC drivers on Minion, see Install JDBC driver.
Examples
Row count
The following example checks if the number of events in the Meridian database is fewer than 250,000.
<service name="OpenNMS-DB-Event-Limit" interval="30000" user-defined="true" status="on">
<parameter key="driver" value="org.postgresql.Driver"/>
<parameter key="url" value="jdbc:postgresql://OPENNMS_JDBC_HOSTNAME:5432/opennms"/>
<parameter key="user" value="opennms"/>
<parameter key="password" value="opennms"/>
<parameter key="query" value="select eventid from events" />
<parameter key="action" value="row_count" />
<parameter key="operand" value="250000" />
<parameter key="operator" value="<" />
<parameter key="message" value="too many events in OpenNMS database" />
</service>
<monitor service="OpenNMS-DB-Event-Limit" class-name="org.opennms.netmgt.poller.monitors.JDBCQueryMonitor" />
String comparison
The following example checks if the queried string matches against a defined operand.
<service name="MariaDB-Galera" interval="300000" user-defined="false" status="on">
<parameter key="driver" value="org.mariadb.jdbc.Driver"/>
<parameter key="user" value="opennms"/>
<parameter key="password" value="********"/>
<parameter key="url" value="jdbc:mysql://OPENNMS_JDBC_HOSTNAME"/>
<parameter key="query" value="SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'wsrep_cluster_status'"/>
<parameter key="column" value="VARIABLE_VALUE"/>
<parameter key="action" value="compare_string"/>
<parameter key="operator" value="="/>
<parameter key="operand" value="Primary"/>
<parameter key="message" value="Galera Node is not in primary component"/>
</service>
<monitor service="MariaDB-Galera" class-name="org.opennms.netmgt.poller.monitors.JDBCQueryMonitor" />