Monit을 사용하여 설정된 소켓 수를 모니터링하시겠습니까?

Monit을 사용하여 설정된 소켓 수를 모니터링하시겠습니까?

"너무 많은" 연결이 열려 있을 때 경고를 보낼 수 있도록 Monit이 서버에서 열려 있거나 설정된 TCP/IP 연결 수를 모니터링하도록 하는 방법을 알 수 없습니다. 이것이 어떻게 설정될 수 있는지 아시나요?

답변1

여기 또 다른 해결책이 있습니다

다음 구성 monit을 정의하십시오.

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

직접적으로 지원되지 않는 것 같지만 해킹을 생각해 냈습니다.

매분 ESTABLISHED 연결 수를 확인하고 동일한 수의 0바이트로 파일을 작성합니다.

그런 다음 Monit을 설정하여 이 0 파일의 파일 크기를 확인하세요. "너무 크면" 경고가 표시됩니다.

일부 사용자의 경우 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

관련 정보