monitでメモリとCPUのアラートがあがったときにプロセス一覧を記録する
monitでCPUの負荷やメモリの使用量で負荷があがったとき、一瞬で解決してしまい、何が理由だったかさっぱりわからないときがあります。そのため、記録するために細工をしてみました。
check system $HOST if loadavg (1min) > 4 then alert if loadavg (5min) > 2 then alert if cpu usage > 80% for 10 cycles then alert if memory usage > 75% then alert if swap usage > 25% then alert
おそらくデフォルトではこんな感じで、メールを受け取るしかないのですが、それだと負荷はわかっても理由がわかりません。
check system $HOST if loadavg (1min) > 4 then alert if loadavg (5min) > 2 then alert if cpu usage > 80% for 10 cycles then alert if cpu usage > 80% for 10 cycles then exec "/bin/bash -c 'ps aux --sort -%cpu | head -n 20 | logger -p syslog.info -t [monit]'" if memory usage > 75% then alert if memory usage > 75% then exec "/bin/bash -c 'ps aux --sort -rss | head -n 20 | logger -p syslog.info -t [monit]'" if swap usage > 25% then alert
こんな感じで、複数行書くことができるので、そこにsyslogにプロセス一覧を書き出すようにしてみました。
PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 22184 5.9 17.3 2777156 1416240 ? Sl 10:33 4:39 puma: cluster worker 4: 22168 [20201201013214] 22178 6.0 14.6 2514272 1198276 ? Sl 10:33 4:43 puma: cluster worker 2: 22168 [20201201013214] 22171 2.7 13.6 2579376 1113352 ? Sl 10:33 2:11 puma: cluster worker 0: 22168 [20201201013214] 22174 3.7 12.3 2251696 1010764 ? Sl 10:33 2:57 puma: cluster worker 1: 22168 [20201201013214] 22190 3.1 10.0 1863200 824036 ? Sl 10:33 2:27 puma: cluster worker 5: 22168 [20201201013214] 22181 3.9 6.9 1860052 567664 ? Sl 10:33 3:05 puma: cluster worker 3: 22168 [20201201013214] 270 0.0 3.4 507008 281108 ? S<s Nov12 12:07 /lib/systemd/systemd-journald 22168 0.0 0.2 101068 20488 ? Sl 10:33 0:00 puma 4.3.6 (tcp://0.0.0.0:9292) [20201201013214] 25723 0.0 0.1 90364 9760 ? S 11:51 0:00 smtpd -n smtp -t inet -u -c -o stress= -s 2 6969 0.0 0.1 100840 8352 ? Sl Nov27 0:14 puma 4.3.6 (tcp://0.0.0.0:9293) [20201127004807] 14253 0.0 0.0 321264 7804 ? S Nov16 0:24 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/m 24649 0.0 0.0 76644 7380 ? Ss 11:31 0:00 /lib/systemd/systemd --user 24647 0.0 0.0 107988 7216 ? Ss 11:31 0:00 sshd: rabbix [priv] 25728 0.0 0.0 89988 6344 ? S 11:51 0:00 smtp -t unix -u -c 1 0.0 0.0 225312 5588 ? Ss Nov12 2:53 /sbin/init 24726 0.0 0.0 23792 5164 pts/1 S+ 11:31 0:00 -su 25726 0.0 0.0 73928 5128 ? S 11:51 0:00 cleanup -z -t unix -u -c 24701 0.0 0.0 23660 5088 pts/1 Ss 11:31 0:00 -bash 25724 0.0 0.0 73820 4984 ? S 11:51 0:00 proxymap -t unix -u
こんな感じで見られます。調査が楽ですね。