Все о Linux. LinuxRSP.Ru


Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

 Новые статьи :

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

Решение проблем при использовании "1c предприятие" 8.2 в Linux

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки







Rambler's Top100





 
 

Мониторинг нагрузки http-сервера Apache 2

Автор: Alex <alexey_com@ukr.net>
Вступление

Уже написано немало постов на просторах интернета, о мониторинге
веб-сервера Apache. При вводе такой фразы, как "мониторинг нагрузки
apache" в строке поиска Google, результаты указывают на полезнейший
модуль mod_status. А также о еще большей полезности этого модуля в
сочетании с perl-расширениями. А если еще и немного пропатчить эти
perl-расширения - то вообще супер система получается. Но настроив
такую систему - системный администратор на этом, как правило, не
останавливается, ему уже необходимо история нагрузки по серверу в целом,
потом по каждому хосту, а далее и с точностью до скрипта. И чтоб потом
сравнить можно было, а как раньше было, а как теперь нагрузка
распределяется.

И вот здесь на помощь может прийти модуль для веб-сервера Apache -
mod_performance.

И так, приступим к рассмотрению что этот модуль собой представляет. Это
обычный модуль Apache 2.x для Linux. Из документации к нему:

Модуль предназначен для сбора и накопления статистики по    
использованию ресурсов(CPU и memory, время выполнения скрипта)    
веб-сервером Apache 2.2. Модуль позволяет провести анализ собранных данных.

Что все это значит? А то, что он позволяет отслеживать сколько
ресурсов потребляет поступивший веб-серверу запрос. Каждый раз сохраняя
следующую информацию:

  • виртуальный хост, которому поступил запрос;
  • файл, который запрашивается;
  • URI запроса;
  • CPU нагрузка в %;
  • использование памяти в %;
  • время обработки запроса. А накопившуюся статистику - позволяет анализировать. В качестве базы данных для сохранения и анализа используется SQLite. В качестве анализатора использования ресурсов, используется не scoreboard, как в mod_status и расширениях perl, а glibtop. Модуль позволяет отслеживать как абсолютно все запросы, так и конкретные, отфильтрованные по правилу с помощью регулярных выражений. Точнее будет сказано, что модуль ВСЕГДА обрабатывает только те запросы, которые соответствуют фильтру, содержащему регулярное выражение. Как просмотреть накопленные данные Модуль предоставляет два интерфейса для просмотра и анализа данных: 1) глобальный; 2) так называемый per-host. Каждый интерфейс прикреплен к хендлеру: user-status - per-host performance-status - глобальный Доступ к интерфейсам настраивается как и в модуле mod_status, т.е.: <Location /perf-status> Order allow,deny SetHandler performance-status Allow from 1.1.1.1 </Location> Глобальный интерфейс позволяет просматривать и анализировать накопленные данные по всем виртуальным хостам, per-host интерфейс же отображает и анализирует только информацию по хосту, к которому интерфейс прикреплен, например, если вызвать хост http://test.test.test/user-status, то вся выводимая статистика будет касаться только этого хоста. Статистика по другим хостам отображаться не будет. Глобальный интерфейс управления модулем выглядит, как приведено на рисунке ниже: На рисунке можно увидеть поля: Mode - режим отображения данных. Period - дней, период отображения или анализа данных, начиная от начала текущего дня. Period begin - начало периода, заданного в формате YYYY-MM-DD hh:mm:ss Period end - конец периода, заданного в формате YYYY-MM-DD hh:mm:ss Если заданы Period begin, Period end - в таком случае отображаются данные ограниченные этими параметрами, а поле Period - игнорируется. В противном случае анализируемый участок задается параметром Period. Hostname(SQL) - фильтр, выводить данные только по указанному хосту. Синтаксис вызова подобно конструкции like в SQL. Т.е. если задать "%test", то будут выбраны все хосты заканчивающиеся на "test". Script name(SQL) - подобно предыдущему параметру, только анализируется имя вызываемого скрипта. URI(SQL) - подобно предыдущему параметру, только анализируется URI запроса. Graph Mode(Y/N) - отображать графикой или текстом. Примерный вывод данных выглядит так: Хост приведенный в примере на картинке - абсолютно тестовый, если он совпадает с реальным - приношу извинения. А графический режим отображения приведен на рисунке ниже: Режимы анализа Show output without analytics - вывести собранную информацию без анализа, отфильтрованную по хосту, скрипту и URI(графический и текстовый режим). Maximal %CPU - вывести только записи с максимальным значением %CPU (с учетом фильтрации). Maximal memory % - вывести только записи с максимальным значением %memory(с учетом фильтрации). Maximal execution request time - вывести самыйдолго выполняющийся скрипт. Host requests statistics - вывести статистику обращений к хостам с сортировкой по убыванию (в % от общего числа с учетом фильтров). Execution history screen(use Period begin) - позволяет вычислять список выполняющихся запросов на указанное время Number of requests per domain - вывести статистику обращений к хостам с сортировкой по убыванию(не в процентах а количество). Average usage per host - вывести среднюю загрузку сервера каждым хостом(сумма % CPU, сумма % MEMORY, сумма выполнения скриптов, средний % CPU за период, средний % использования памяти, среднее время выполнения скриптов). Не буду вдаваться в подробности и некоторые режимы оставлю без внимания. Как установить модуль Здесь я привожу пример установки для rpm-систем. Все действия необходимо проводить под пользователем root. 1) установим необходимые пакеты для сборки: yum install httpd-devel apr-devel libgtop2-devel sqlite-devel gd-devel 2) создадим временную паку для исходных кодов: mkdir ~/my_tmp cd ~/my_tmp 3) скачиваем исходные коды модуля и распаковываем архив и переходим в распакованную папку: wget http://lexvit.dn.ua/utils/getfile.php?file_name=mod_performance_tar201104233487.gz -O mod_performance.tar.gz tar zxvf mod_performance.tar.gz cd mod_performance/ 4) собираем модуль: make 5) на warning не обращаем внимания. Главное, чтоб не было error. Если все собралось нормально, то: make install или cp .libs/mod_performance.so <путь куда копировать> Конфигурация Apache Конфигурация будет осуществляться для стандартной установки Apache, т.е модули располагаются в каталоге /etc/httpd/modules, существует каталог /etc/httpd/conf.d/ и он подключен в /ect/httpd/conf/httpd.conf. 1) создать файл конфигурации модуля: touch /etc/httpd/conf.d/mod_performance.conf 2) вставить в него: LoadModule performance_module modules/mod_performance.so <IfModule mod_performance.c> PerformanceHistory 5 PerformanceEnabled On PerformanceMaxThreads 80 PerformanceScript \.php PerformanceStackSize 1 PerformanceUseCanonical On <Location /admin-status> Order allow,deny SetHandler performance-status Allow from 1.1.1.1 </Location> </IfModule> 3) сохранить файл и перезапустить Apache: service httpd restart Файл конфигурации выступает лишь как пример. Все параметры должны быть подобраны под конкретный сервер. Вышеприведенная конфигурация модуля позволяет отслеживать запросы к php скриптам. Описание всех параметров конфигурации можно прочитать в документации модуля. Внимание, на текущий момент модуль не может отслеживать запросы для конфигурации сервера Apache+mod_fcgid, Apache+mod_cgid, Apache+suphp или конфигурации, где запрос обрабатывает отдельный демон.

  • Иcтoчник
          

    Связь | О проекте LinuxRSP | Реклама | О Linux
    © 1999-2017 LinuxRSP