Monit is a free open source utility for managing and monitoring, processes, programs, files, directories and filesystems on a UNIX system. Monit conducts automatic maintenance and repair and can execute meaningful causal actions in error situations.
Monit Tildeslash official website
Simple golang agent API for Monit. Can be used to perform some simple action on Monit daemon :
- retrieve current status,
- start a service,
- stop a service
- activate / deactivate monitoring on a service
go get http://github.com/Axili39/gomonit
Activate http in /etc/monit/monitrc config file :
- specify a bind address,
- specify admin/password credential
set httpd port 2812 and
use address 127.0.0.1
allow admin:monit
Note: see /etc/monit/monitrc config file instructions, for more informations
package main
import (
"fmt"
"encoding/json"
"github.com/Axili39/gomonit"
)
func main() {
agent, err := gomonit.NewMonitAgent("http://127.0.0.1:2812", "admin:monit")
if err != nil {
fmt.Printf("%v\n",err)
return
}
// Show current status
out,_ := json.Marshal(&agent.Status)
fmt.Printf("%s\n",string(out))
// Do an action on service
err = agent.StartService("foo")
if err != nil {
fmt.Printf("%v\n",err)
return
}
// Request Status
err = agent.RequestStatus()
if err != nil {
fmt.Printf("%v\n",err)
return
}
out,_ = json.Marshal(&agent.Status)
fmt.Printf("%s\n",string(out))
}