저는 한 달 동안 나가는 트래픽을 제한하고 트래픽이 초과되면 요금이 청구되는 가상 서버 요금제를 연구하고 있습니다.
나가는 트래픽을 자동으로 추적하여 서비스가 한도에 가까워지면 자동으로 중지할 수 있도록 하고 싶습니다.
Linux에서 이를 달성하기 위해 어떤 도구를 사용할 수 있습니까?
감사해요!
답변1
글쎄요, 제한 사항이 무엇인지, 스크립팅 능력이 무엇인지 모르더라도 여기에 제안 사항이 있습니다.
설치 vnstat
- Ubuntu에서는 포함된 악마 프로세스가 자동으로 시작되어 네트워크 모니터링이 즉시 시작됩니다(컨텐츠 스누핑이 아닌 트래픽 통계에만 해당).
다음과 같이 대화형으로 볼 수 있습니다.
vnstat
Database updated: 2023-09-30 09:40:00
enp0s31f6 since 2023-09-30
rx: 7.85 GiB tx: 93.23 MiB total: 7.94 GiB
monthly
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
2023-09 7.85 GiB | 93.23 MiB | 7.94 GiB | 26.88 kbit/s
------------------------+-------------+-------------+---------------
estimated 8.02 GiB | 93.93 MiB | 8.11 GiB |
daily
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
today 7.85 GiB | 93.23 MiB | 7.94 GiB | 1.96 Mbit/s
------------------------+-------------+-------------+---------------
estimated 19.48 GiB | 231.46 MiB | 19.71 GiB |
명령줄 스위치를 사용하여 전송된 데이터만 추출할 수도 있습니다(예: awk
. 아래 예에서는 전송되는 111MB의 데이터를 살펴봅니다.
vnstat --oneline b |awk -F';' '{print $10/1024/1024}'
111.726
이것을 cron에서 실행하는 쉘 스크립트에 붙여넣고 5분마다 전송 볼륨을 임계값과 비교한 다음 스크립트가 서비스를 중지하도록 할 수 있습니다. 한 달 동안 5GB의 발신 트래픽을 허용한다고 가정해 보겠습니다.
#!/bin/bash
[ $(/usr/bin/vnstat --oneline b |/usr/bin/awk -F';' '{printf "%d", $10/1024/1024}') -gt 5000 ] && /usr/bin/systemctl stop service
넣어 root
두면 crontab
웃을 것입니다.
답변2
그라파나 + 프로메테우스.
시스템/서버에 이를 설정하고 클라이언트 시스템에 prometheus-node-exporter를 설치하십시오. 그런 다음 Grafana에서는 유출되는 데이터 양과 같은 특정 임계값에 도달하면 사용자 지정 경고를 작성할 수 있습니다.