
"너무 많은" 연결이 열려 있을 때 경고를 보낼 수 있도록 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