Jared Beguelin
Jared Beguelin

Reputation: 21

Trouble running a custom monit check, stderr maybe?

Trying to run this check from monit, but it doesn't work. The gravity program sends its output to stderr. Could it be that monit doesn't handle this properly because of the way it exec's the check?

contents of system.monitrc:

check program gravityStatus with path  /usr/local/bin/check.sh
with timeout 10 seconds
if status !=0 then alert

check.sh: root@tiki:~# cat /usr/local/bin/check.sh

#!/bin/bash

#This will return zero if all good

/usr/bin/gravity status  |& /usr/bin/jq .SyncInfo.catching_up  | grep -q 'false'

Output:

Program 'gravityStatus'
  status                       Status failed
  monitoring status            Monitored
  monitoring mode              active
  on reboot                    start
  last exit value              1
  last output                  parse error: Invalid numeric literal at line 1, column 6
  data collected               Tue, 01 Feb 2022 19:52:37

If I execute the contents of check.sh on the command line, the script works:

root@tiki:~# /usr/bin/gravity status  |& /usr/bin/jq .SyncInfo.catching_up  | grep -q 'false'
root@tiki:~# echo $?
0

Upvotes: 1

Views: 166

Answers (1)

Jared Beguelin
Jared Beguelin

Reputation: 21

I figured it out. I want to thank @boppy for his comment, it was very helpful. Here's what I did:

I changed the check.sh to just run 'gravity status' and then looked at the monit status. It says this:

Program 'gravityStatus'
status Status failed
monitoring status Monitored
monitoring mode active
on reboot start
last exit value 2
last output panic: $HOME is not defined

goroutine 1 [running]:
                           github.com/cosmos/cosmos-sdk/simapp.init.0()
                            /go/pkg/mod/github.com/cosmos/[email protected]/simapp/app.go:182 +0x189

The problem was that gravity status would die before it could send output to the jq process. gravity is a command that has to look at $HOME/.gravity were a bunch of configs are located. So the solution was to set $HOME to /root which is where all the gravity stuff is setup.

Upvotes: 1

Related Questions