Mise à jour octobre 2016.
Nouveau nom pour le projet "reed-alert"
Site web : https://dataswamp.org/~solene/reed-alert/
Récupérer le projet :
Code : Tout sélectionner
git clone https://dataswamp.org/~solene/reed-alert/reed-alert.gitCode : Tout sélectionner
(defvar *alerts*
  (list
   '(dont-use-it ("REMINDER" function params date hostname description level os newline _ space result))
   '(void nil)
   '(mail nil)
   '(sms ("echo -n '" date _ function " CRITICAL " hostname "' | curl http://somewebservice"))
   '(mail ("echo -n '" date _ hostname " had problem on " function newline params _ " values " result newline
	   description "' | mail -s '[Error] " function  " - " hostname "' foo@bar.com"))
   '(with-plus ("echo -n '" + date + _ + hostname + " had problem on " + function + newline + params + newline
		+ description + "' | mail -s '[Error] " + function +  " - " + hostname + "' foo@bar.com"))))
(load "functions.lisp")
;; check if used percent :path partition is more than :limit
(=> mail disk-usage   (:path "/"    :limit 90))
(=> mail disk-usage   (:path "/usr" :limit 85))
(=> mail disk-usage   (:path "/tmp" :limit 1)) ;; failure
;; check if :path file exists
(=> mail file-exists  (:path "/bsd.rd" :desc "OpenBSD kernel /bsd.rd"))
(=> void file-exists  (:path "/non-existant-file")) ;; failure file not found
;; check if :path file exists and has been updated since :limit minutes
(=> void file-updated (:path "/var/log/messages" :limit 400))
(=> mail file-updated (:path "/bsd.rd"           :limit 1 :desc "OpenBSD kernel")) ;; failure
;; check if :path pid file process is running
(=> mail pid-running  (:path "/var/run/xdm.pid" :desc "XDM pid"))
(=> mail pid-running  (:path "/home/user/test.pid")) ;; failure
;; check if number of processes on the system is more than :limit
(=> mail number-of-processes (:limit 200))
(=> mail number-of-processes (:limit 1)) ;; failure
;; check if load average on (1/5/15) minutes is more than :limit
(=> mail load-average-1  (:limit 4))
(=> mail load-average-5  (:limit 2))
(=> mail load-average-15 (:limit 1))
(=> mail load-average-1  (:limit 0.2)) ;; should trigger error
;; check if :host host is reachable
(=> mail ping (:host "8.8.8.8"      :desc "Google DNS"))
(=> void ping (:host "2.3.4.256"    :desc "Not valid ipv4 address")) ;; fail error
(=> void ping (:host "127.40.30.21" :desc "Certainly not used address")) ;; fail time out
;; check if :command command return 0 (success) or something else (error)
(=> void command (:command "echo hello")) ;; success
(=> void command (:command "ls /non-existent-file")) ;; fail
(quit)Suffit de lancer la commande
Code : Tout sélectionner
sbcl --load fichier_config.lispCode : Tout sélectionner
ecl -load fichier_config.lisp

 
 


 ) (ou un graph ascii avec des XXXXXXXXXXXX)
) (ou un graph ascii avec des XXXXXXXXXXXX)
 mais ce n'est qu'une idée pour être plus léger qu'avec une petite base de données
 mais ce n'est qu'une idée pour être plus léger qu'avec une petite base de données 
