I know this is not exactly what you asked for but a whole proof of concept
as to how to use monit for a heartbeat check can be found in
http://thinkinginsoftware.blogspot.com/2012/09/monitor-your-mysql-or-mssql-servers.html
So considering you already have a query that returns a unique number (the
elapsed time) you can parse such a number with something like the below
(note I don't know your query but the idea is basically to concat with a
well known string to be able to parse the number later on):
mysql -u user -ppassword -e "select CONCAT('delta', 1)" | grep -v CONCAT |
sed 's/\(delta\)\([^ ]*\).*/\2/'
The above will return "1".
Now all you need to do is save that into a variable:
myvar=`the above statement here`
Then exit a different than 0 code (standard in shell scripts to denote
there was an error:
if [ $myvar -gt 12 ] then;
exit 1
fi
I recommend to start your script with:
#!/bin/bash -e
The -e option will make the script fail with exit status != 0 if any
command inside the script fails.
On Tue, Sep 11, 2012 at 8:11 AM, Charles Pino <[email protected]>wrote:
> sorry the db is MySQL
> and i am trying to read the difference between the last written record
> and the current time.
> if its been 12 hours already. it should send an alert via monit.
>
> problem is i am not really sure how to grep or an sql result that has
> different values (not just 1 or 0)
>
> if status != 0 then alert -- should i still use status?
>
> sorry im completely new to monit.
>
> ------------------------------
> Date: Mon, 10 Sep 2012 14:51:42 -0400
>
> Subject: Re: Monit and SQL query
> From: [email protected]
> To: [email protected]
>
>
> Build a shell script that:
> 1. will issue the command to your server (you did not say what kind of sql
> server you have)
> 2. will parse the result from the server using for example grep and regex
> 3. If the result is unexpected use 'exit 1'
> 4. Set in monit as Martin said
>
> On Mon, Sep 10, 2012 at 6:34 AM, Charles Pino <[email protected]>wrote:
>
> sql statement is supposed to evaluate if the result is >= to 12 , if true
> then alert.
>
> how do i put that in place of " PROCESS OUTPUT AND RETURN 1 IF FAILED
> OTHERWISE 0" ??
>
> thanks
>
> ------------------------------
> From: [email protected]
> Subject: Re: Monit and SQL query
> Date: Mon, 10 Sep 2012 09:06:11 +0200
> To: [email protected]
>
>
> Hello,
>
> you can use the "check program" to test the exit value of custom script.
> In this case the script can execute the SQL statement and return error if
> problem is found.
>
> Script skeleton:
> --8<--
> #!/bin/bash
> /ur/bin/mysql -e "SQL STATEMENT" ... | PROCESS OUTPUT AND RETURN 1 IF
> FAILED OTHERWISE 0
> --8<--
>
> Connection of the script with monit:
> --8<--
> check program myscript with path "/usr/local/bin/myscript.sh"
> if status != 0 then alert
> --8<--
>
> Regards,
> Martin
>
>
> On Sep 9, 2012, at 4:58 PM, Charles Pino <[email protected]> wrote:
>
> Hello all,
> is it possible to execute and SQL query and have monit execute and alert
> or something else depending on its response?
>
> i have a sql query that queries a specific table. of something hasnt been
> updated in that table for 12 hours. i need to send an alert or whatever.
> that the table/field hasnt been updated.
>
> please help.
>
> thanks
>
> --
> To unsubscribe:
> https://lists.nongnu.org/mailman/listinfo/monit-general
>
>
>
> -- To unsubscribe: https://lists.nongnu.org/mailman/listinfo/monit-general
>
> --
> To unsubscribe:
> https://lists.nongnu.org/mailman/listinfo/monit-general
>
>
>
> -- To unsubscribe: https://lists.nongnu.org/mailman/listinfo/monit-general
>
> --
> To unsubscribe:
> https://lists.nongnu.org/mailman/listinfo/monit-general
>
--
To unsubscribe:
https://lists.nongnu.org/mailman/listinfo/monit-general