У меня есть сеть статических серверов обслуживания файлов. Я использую nginx для обслуживания файлов и munin для контроля сетевого трафика. Я хочу знать выходную пропускную способность сервера, который переходит к каждому IP-адресу, загружающему файл для оценки пропускной способности, которую каждый Интернет-провайдер в моей стране загружает с моих серверов. Средняя выходная пропускная способность серверов о 700MB/s (9 серверов, у большинства из них есть 4 1Gbits/s связанные порта). Как я могу сделать это?
Первый подход, который приходит на ум, заключается в том, чтобы ваши веб-серверы просто записывали в журнал обрабатываемые ими запросы и использовали лог-парсер для генерации статистики использования. Комбинированный формат лог-файлов является стандартом, обычно поддерживаемым программным обеспечением для веб-аналитики.
access_log /path/to/log combined;
Если ваши веб-серверы работают как кластеры, а не каждый сервер поддерживает свои собственные лог-файлы, которые вам нужно будет объединить для получения агрегированных результатов, вы можете использовать протокол syslog, чтобы все узлы передавали свои записи лог-файлов на центральный лог-хост и генерировали там статистику использования.
access_log syslog:server=address combined;
Соответствующие настройки описаны в руководстве nginx.
В этом старом вопросе упоминается некоторое программное обеспечение для веб-аналитики, также как и в Википедии
В большинстве репозиториев есть инструмент под названием iftop
. Он будет отображать график и данные о пропускной способности на каждом сервере. Вы можете использовать его следующим образом:
# iftop -nNPi eno1 -f "port 443"
-n
отключит разрешение имен для IP-адресов-N
отключит преобразование портов в сервисы-P
покажет порты используется для трафика-i
выберет интерфейс для прослушивания-f
определит выражение bpf
для фильтрации трафика, которое я определил как порт 443 как основное предложениеВы не указываете, где именно вы хотите/можете слушать, или какой трафик куда идет, и какой именно трафик вы хотите, поэтому этот ответ не пытается охватить это. Также имейте в виду, что это может не сработать, если вы используете нулевое копирование или другие «экзотические» конфигурации.