2016-10-07 10:25:49 +00:00
|
|
|
(create-probe
|
|
|
|
file-exists
|
|
|
|
(let ((result (probe-file (getf params :path))))
|
|
|
|
(if result
|
|
|
|
t
|
|
|
|
(list nil "file not found"))))
|
|
|
|
|
|
|
|
(create-probe
|
|
|
|
file-updated
|
|
|
|
(if (probe-file (getf params :path))
|
|
|
|
(with-open-file (file (getf params :path))
|
|
|
|
(let* ((write-date (file-write-date file))
|
|
|
|
(now (get-universal-time))
|
|
|
|
(result (floor (- now write-date) 60)))
|
|
|
|
(if (> (getf params :limit) result)
|
|
|
|
t
|
|
|
|
(list nil result))))
|
|
|
|
(list nil "file not found")))
|
|
|
|
|
|
|
|
(create-probe
|
|
|
|
pid-running
|
|
|
|
(if (probe-file (getf params :path))
|
|
|
|
(let ((pid-number (with-open-file (stream (getf params :path)) (read-line stream))))
|
|
|
|
(command-return-code (list "ps" "-p" pid-number)))
|
|
|
|
(list nil "file not found")))
|
|
|
|
|
|
|
|
(create-probe
|
|
|
|
disk-usage
|
|
|
|
(let* ((output (uiop:run-program (list "df" (getf params :path)) :output :lines)) (line (second output)))
|
|
|
|
(let ((percent-character-pos (position #\% line)))
|
|
|
|
(let ((used-disk
|
|
|
|
(parse-integer
|
|
|
|
(subseq line
|
|
|
|
(position #\Space line :end percent-character-pos :from-end t)
|
|
|
|
percent-character-pos))))
|
|
|
|
(if (< used-disk (getf params :limit))
|
|
|
|
t
|
2016-10-10 18:35:49 +00:00
|
|
|
(list nil used-disk))))))
|
2016-10-07 10:25:49 +00:00
|
|
|
|
|
|
|
(defun system-load(time)
|
|
|
|
(read-from-string
|
|
|
|
(let ((command (concatenate 'string
|
|
|
|
"uptime | awk '{ print $"
|
|
|
|
(princ-to-string time)
|
|
|
|
" }'")))
|
|
|
|
(uiop:run-program command :output :string))))
|
|
|
|
|
|
|
|
(create-probe
|
|
|
|
load-average-1
|
|
|
|
(let ((load (system-load 10)))
|
|
|
|
(if (< load (getf params :limit))
|
|
|
|
t
|
|
|
|
(list nil load))))
|
|
|
|
|
|
|
|
(create-probe
|
|
|
|
load-average-5
|
|
|
|
(let ((load (system-load 11)))
|
|
|
|
(if (< load (getf params :limit))
|
|
|
|
t
|
|
|
|
(list nil load))))
|
|
|
|
|
|
|
|
(create-probe
|
|
|
|
load-average-15
|
|
|
|
(let ((load (system-load 12)))
|
|
|
|
(if (< load (getf params :limit))
|
|
|
|
t
|
|
|
|
(list nil load))))
|
|
|
|
|
2016-10-10 18:35:49 +00:00
|
|
|
(create-probe
|
|
|
|
file-more-than
|
|
|
|
(if (probe-file (getf params :path))
|
|
|
|
(let ((result (get-file-size (getf params :path))))
|
|
|
|
(if (< result (getf params :limit))
|
|
|
|
t
|
|
|
|
(list nil result)))
|
|
|
|
"file not found"))
|
|
|
|
|
|
|
|
(create-probe
|
|
|
|
file-less-than
|
|
|
|
(if (probe-file (getf params :path))
|
|
|
|
(let ((result (get-file-size (getf params :path))))
|
|
|
|
(if (> result (getf params :limit))
|
|
|
|
t
|
|
|
|
(list nil result)))
|
|
|
|
"file not found"))
|
|
|
|
|
2016-10-07 10:25:49 +00:00
|
|
|
(create-probe
|
|
|
|
command
|
|
|
|
(command-return-code (getf params :command)))
|
|
|
|
|
|
|
|
(create-probe
|
|
|
|
ping
|
|
|
|
(command-return-code (list "ping" "-c2" (getf params :host))))
|
|
|
|
|
|
|
|
(create-probe
|
|
|
|
number-of-processes
|
|
|
|
(let* ((output (uiop:run-program (list "ps" "aux") :output :lines))
|
|
|
|
(result (length output)))
|
|
|
|
(if (> (getf params :limit) result)
|
|
|
|
t
|
|
|
|
(list nil result))))
|