diff options
| author | Masaya Tojo <masaya@tojo.tokyo> | 2021-09-11 01:44:07 +0900 | 
|---|---|---|
| committer | Masaya Tojo <masaya@tojo.tokyo> | 2021-09-11 01:44:07 +0900 | 
| commit | cbe0eca3c4d99cf8f5517beab103bdd66d0f4a27 (patch) | |
| tree | c43ddfa6f9fecd68ce60ced4ae5ae9003196fe55 | |
| parent | aefb1d36a95b7f42441cb1a7a657596d17825cbe (diff) | |
monitoring: Add inode monitoring procedure.
| -rw-r--r-- | tojo-tokyo/monitoring.scm | 25 | 
1 files changed, 25 insertions, 0 deletions
diff --git a/tojo-tokyo/monitoring.scm b/tojo-tokyo/monitoring.scm index b46f0a2..4f8ecf7 100644 --- a/tojo-tokyo/monitoring.scm +++ b/tojo-tokyo/monitoring.scm @@ -55,6 +55,31 @@                          (string=? (substring fs 0 5) "/dev/"))))                 (df)))) +(define (df-i) +  (let ((port (open-input-pipe "df -i"))) +    (get-line port) +    (let f ((line (get-line port))) +      (cond ((eof-object? line) +             (close-pipe port) +             '()) +            (else +             (cons (map cons +                        '(filesystem inodes iused ifree iuse% mounted-on) +                        (map match:substring (list-matches "[^ ]+" line))) +                   (f (get-line port)))))))) + +(define-public (disk-iuse%-over? threshold) +  (any (lambda (x) +         (let ((iuse% (string->number (string-delete #\% (assoc-ref x 'iuse%))))) +           (and iuse% +                (< threshold iuse%)))) +       (filter (lambda (x) +                 (let ((fs (assoc-ref x 'filesystem))) +                   (and fs +                        (<= 5 (string-length fs)) +                        (string=? (substring fs 0 5) "/dev/")))) +               (df-i)))) +  (define-syntax-rule (heartbeat (p? body ...) ...)    (let ((heartbeat-cancel? #f))      (when p? body ... (set! heartbeat-cancel? #t)) ...  | 
