Контролировать количество установленных сокетов с помощью Monit?

Контролировать количество установленных сокетов с помощью Monit?

Я не могу понять, как заставить Monit отслеживать количество открытых/установленных соединений TCP/IP на сервере, чтобы отправлять оповещение, когда их открыто "слишком много". Знаете, как это можно настроить?

решение1

вот еще одно решение

определить следующую конфигурацию монитора:

check program OpenSocket with path "/bin/checkn_socket.sh"
    if status > 0 then alert
                group admin

Скрипт: checkn_socket.sh

#!/bin/bash

Threshold=4 # Set Threshold

TotalEstSocket=$(netstat -t | awk '{/ESTABLISHED/ && n++} END{ print n }')

if (( TotalEstSocket >= Threshold ))
then
        echo >&2 "Too Many OpenSocket"
        exit $TotalEstSocket
else
        exit 0
fi

Журналы мониторинга

[IST Sep 12 22:32:14] error    : 'OpenSocket' status failed (4) for /bin/checkn_socket.sh. Error: Too Many OpenSocket
..
[IST Sep 12 22:32:17] info     : 'OpenSocket' status succeeded
[IST Sep 12 22:32:26] error    : 'OpenSocket' status failed (4) for /bin/checkn_socket.sh. Error: Too Many OpenSocket
..
[IST Sep 12 22:32:29] error    : 'OpenSocket' status failed (4) for /bin/checkn_socket.sh. Error: Too Many OpenSocket
..
[IST Sep 12 22:32:32] error    : 'OpenSocket' status failed (4) for /bin/checkn_socket.sh. Error: Too Many OpenSocket
..
[IST Sep 12 22:32:35] info     : 'OpenSocket' status succeeded

решение2

Похоже, это не поддерживается напрямую, но я придумал способ обойти это.

Определите количество УСТАНОВЛЕННЫХ соединений каждую минуту и ​​запишите файл с равным количеством нулевых байтов.

Затем настройте Monit для проверки размера этого нулевого файла. Если он становится "слишком большим", выдается предупреждение.

В crontab для некоторого пользователя:

* * * * * /bin/sh -c '/bin/dd if=/dev/zero of=/tmp/tcp_connections.monit count=$(/bin/netstat -t | /bin/grep ESTABLISHED | /usr/bin/wc -l) bs=1 >/dev/null 2>&1'

В конфигурации Monit:

check file tcp_connections with path /tmp/tcp_connections.monit
    if size > 16KB then alert

Связанный контент