Назад | Перейти на главную страницу

Мониторинг загрузки полосы пропускания сервера / сайта

Я много искал инструмент для отслеживания использования "пропускной способности" веб-сайта, и я говорю не о том, сколько МБ / данных загружается, а о фактической скорости вывода серверов, чтобы прояснить, что я имею в виду. воспользуюсь примером,

Мой сервер имеет подключение к Интернету на скорости 100 / МБ, я хочу иметь возможность отслеживать, сколько из этих 100 / МБ используется, и регистрировать его (как фоновый процесс).

Я пробовал разные инструменты, такие как Zabbix, Nagios и ntopng (ntop), все полезные инструменты, но ни один из них не кажется кабелем для регистрации фактической скорости сервера / использования скорости. В настоящее время у меня все еще установлен Ntop (ng), но я не могу заставить его делать то, что я хочу. (крайне важно, чтобы данные регистрировались 24/7)

Причина этого в том, что из-за того, что я размещаю файлы, которые люди могут загружать, у меня слабое подключение к Интернету, иногда это ограничение, и я хочу иметь возможность отслеживать, когда / насколько я нарушаю это ограничение.

Мой сервер - это Ubuntu 12.04, работающий с Apache 2.2, я не знаю, нужен ли он, но на всякий случай: Мои домены настроены с виртуальными хостами для каждого домена.

Я ценю любую помощь и подсказки, которые могу получить.

Похоже, вы пытаетесь контролировать полную пропускную способность сети, измеряя выходные данные веб-сервера, как указано в его журналах - этого было бы недостаточно, поскольку это не включает в себя какие-либо накладные расходы протокола TCP / IP или другой трафик (любой SSH, FTP, база данных или другой трафик, в котором может принимать участие сервер).

Вам нужно смотреть статистика интерфейса. Любой инструмент мониторинга сервера, такой как Zabbix и Nagios, будет иметь функцию для этого, например, с collectd вы должны использовать либо модуль интерфейсов (https://collectd.org/wiki/index.php/Plugin:Interface) для мониторинга всего трафика на данном интерфейсе или модуле iptables (https://collectd.org/wiki/index.php/Plugin:IPTables) для отслеживания трафика, соответствующего определенным правилам фильтрации (чтобы вы могли более подробно анализировать используемую полосу пропускания).

Я бы использовал сценарий (моим любимым был бы python с модулем re) для анализа журнала доступа Apache.

Например:

127.0.0.1 - откровенный [10 / Oct / 2000: 13: 55: 36 -0700] "GET /apache_pb.gif HTTP / 1.0" 200 2326

Последний элемент - это байты, переданные клиенту. Вам нужно продолжать добавлять это число и печатать или регистрировать с регулярной частотой, чтобы получить общее количество байтов, переданных клиенту с последнего запуска до этого момента.

Дополнительные сведения о журнале доступа Apache см. Здесь: http://httpd.apache.org/docs/2.2/logs.html

#!/bin/env python
import time, sys, re

regex = re.compile(r'\s+([0-9]+)$')


def fetch_bytes(file, bytes):
        for line in file:
                match = regex.search(line)
                if match:
                        bytes = int(match.group(1))
                        yield bytes


def main():
        Access_File = "apache_access_log"
        try:
                with open(Access_File) as file:
                        gen = None
                        while True:
                                for i in range(1001):
                                        gen = fetch_bytes(file, bytes)
                                #bytes += sum(gen)
                                #prints how much KB has been transferred in the time duration
                                print "%s\t%dKB" % (time.strftime("%H:%M:%S"), (sum(gen)/1024))
                                time.sleep(120)

        except IOError:
                print "Could not locate the apache log file"
                sys.exit(1)

if __name__ == '__main__':
        main()