Nginx Amplify — это бесплатный и мощный инструмент для анализа нагрузки и производительности веб-серверов Nginx и Nginx Plus. Он прост в настройке и эксплуатации. Кроме того, Nginx Amplify включает плагины для MySQL/MariaDB и PHP-FPM, что позволяет осуществлять мониторинг полноценного LEMP-приложения (LEMP включает в себя Linux, Nginx, MySQL/MariaDB и PHP).
Nginx Amplify — это продукт, созданный компанией Nginx, Inc., которая также разработала веб-сервер Nginx. Это решение работает на базе SaaS. Вам необходимо установить агент Nginx Amplify на своем сервере, который будет собирать и отправлять метрики в облачный сервис. Агент Nginx Amplify обладает открытым и легковесным характером. Он собирает разнообразные метрики, в том числе:
- Метрики системы (загрузка процессора, использование оперативной памяти, объем сетевого трафика, нагрузка на диск, операции ввода-вывода, время задержки диска и прочие показатели).
- Метрики Nginx включают в себя такие показатели, как количество соединений, количество запросов, статусы HTTP, время отклика, объем переданного трафика и другие параметры.
- Метрики MySQL/MariaDB включают в себя соединения, выборочные запросы, запросы на вставку, обновление, медленные запросы и другие показатели.
- Метрики PHP-FPM, такие как количество соединений, очередь соединений, медленные запросы и другие параметры.
Nginx Amplify обладает возможностями, позволяющими…
- Применить статический анализатор для оптимизации настроек Nginx.
- Сообщать вам о необычном поведении.
Содержание статьи
- 1 Установка Nginx Amplify на сервер с операционной системой Linux Ubuntu версии 18.04 или 20.04.
- 2 Конфигурация Stub_status в Nginx
- 3 Разработка индивидуального формата логирования для Nginx
- 4 Как удалить свой IP-адрес из логов доступа Nginx.
- 5 Способы контроля за сервером баз данных MariaDB/MySQL.
- 6 Как активировать запись медленных запросов в MariaDB
- 7 Активирование журнала медленных запросов в MySQL 8.
- 8 Способы отслеживания работы PHP-FPM.
- 9 Обзорная страница Amplify
- 10 Графики
- 11 Панели мониторинга Nginx Amplify
- 12 Анализатор
- 13 Оповещения
- 14 Агент Amplify прекращает свою деятельность.
- 15 Наблюдение за MariaDB в окружении Galera Cluster
- 16 Наблюдение за эффективностью серверов на базе Linux.
- 17 Заключение
Установка Nginx Amplify на сервер с операционной системой Linux Ubuntu версии 18.04 или 20.04.
Агент Nginx Amplify доступен в открытом формате, и вы можете воспользоваться установочным скриптом для инсталляции Nginx Amplify на различных дистрибутивах Linux:
- Дебиан 10, Дебиан 11
- Ubuntu 20.04 и Ubuntu 18.04
- RHEL/CentOS 8 — это операционная система, основанная на Red Hat Enterprise Linux, которая предлагает стабильную и надежную платформу для серверных и корпоративных приложений.

Пожалуйста, подтвердите свой адрес электронной почты. Затем вам потребуется установить Nginx Amplify Agent на сервер с Linux. Подключитесь к серверу через SSH и войдите в систему как root. На сайте Nginx Amplify вы найдете удобные команды для установки, просто скопируйте их и выполните на своем сервере.
Учтите, что данные команды следует выполнять с правами пользователя root.

Загрузите установочный скрипт.

Запустите установочный скрипт. (Каждый аккаунт Amplify обладает собственным API-ключом.)

После установки агент запустится автоматически. Вы можете проверить его статус с помощью:
systemctl status amplify-agent
●amplify-agent.service - LSB: Запуск и остановка nginx-amplify-agent Загружено: загружено (/etc/init. d/amplify-agent; создано автоматически) Статус:действует с ср 2019-02-27 03:37:05 UTC; 1 мин 17 с назад Документы: man:systemd-sysv-generator(8) Процесс: 9306 ExecStop=/etc/init. d/amplify-agent stop (код=завершен, статус=0/SU Процесс: 9341 ExecStart=/etc/init. d/amplify-agent start (код=завершен, статус=0/ Задачи: 3 (лимит: 2361) CGroup: /system. slice/amplify-agent.service └─9407 amplify-agent
Совет: нажмите клавишу Q, чтобы вернуть управление терминалом после выполнения указанной команды.
Чтобы активировать автозапуск при старте системы, выполните следующие действия:
sudo systemctl enable amplify-agent
Конфигурация Stub_status в Nginx
Агент Amplify способен автоматически собирать системные метрики. Для получения метрик Nginx необходимо настроить параметр stub_status в конфигурации Nginx. Для этого откройте файл nginx.conf.
sudo nano /etc/nginx/nginx.conf
Вставьте данный серверный блок в контекст HTTP.<. >.
server < listen 127.0.0.1:80; server_name 127.0.0.1; location /nginx_status < stub_status on; allow 127.0.0.1; deny all; >>
Сохраните файл и закройте его. После этого перезапустите Nginx, чтобы изменения начали действовать.
sudo systemctl reload nginx
Теперь агент Amplify готов к сбору метрик Nginx.

Разработка индивидуального формата логирования для Nginx
Агент Nginx Amplify способен извлекать данные из лог-файлов Nginx. Однако стандартный формат журналов предлагает лишь ограниченные сведения. Если вы хотите улучшить производительность вашего приложения, рекомендуется разработать индивидуальный формат журнала, который будет включать такие параметры, как время запроса, время ответа от upstream, кэширование и прочее.
Откройте документ nginx.conf.
sudo nano /etc/nginx/nginx.conf
Включите следующие строки в контекст HTTP.<. >Выше директивы include мы настраиваем собственный формат журнала Nginx, который назвали apm (мониторинг производительности приложения). Этот формат включает такие параметры, как request_time, upstream_response_time, upstream_connect_time и upstream_header_time. Все значения фиксируются в секундах с точностью до миллисекунд.
log_format apm '"$time_local" client=$remote_addr ' 'method=$request_method request="$request" ' 'request_length=$request_length ' 'status=$status bytes_sent=$bytes_sent ' 'body_bytes_sent=$body_bytes_sent ' 'referer=$http_referer ' 'user_agent="$http_user_agent" ' 'upstream_addr=$upstream_addr ' 'upstream_status=$upstream_status ' 'request_time=$request_time ' 'upstream_cache_status="$upstream_cache_status" ' 'upstream_response_time=$upstream_response_time ' 'upstream_connect_time=$upstream_connect_time ' 'upstream_header_time=$upstream_header_time';
Сохраните изменения и закройте документ. После этого откройте файл конфигурации для вашего виртуального хоста Nginx. Например,
sudo nano /etc/nginx/conf.d/linux16.ru.conf
Файл конфигурации виртуального хоста Nginx обычно располагается в папке /etc/nginx/sites-enabled/. Я предпочитаю применять папку /etc/nginx/conf.d/.
В рамках сервера<. >Добавьте две строки для активации журнала доступа и журнала ошибок. Журнал доступа будет использовать формат apm, в то время как журнал ошибок настроен на уровень предупреждений.
access_log /var/log/nginx/linux16.ru.access.log apm; error_log /var/log/nginx/linux16.ru.error.log warn;
Сохраните изменения и закройте файл. После этого выполните перезагрузку Nginx.
sudo systemctl reload nginx
Теперь я имею возможность отслеживать время отклика upstream и другие показатели производительности в графиках Amplify. Оптимальное время отклика для upstream составляет менее 0,5 секунды. Если этот показатель выше, пользователи могут ощутить медлительность вашего сайта. При правильной настройке сервера, если время отклика upstream будет меньше 0,2 секунды, ваш сайт станет значительно более отзывчивым.

Как определить, какие HTTP-запросы требуют много времени? Проверьте журнал доступа Nginx на наличие термина «request_time=1», который укажет на запросы, длительность которых превышает 1 секунду. Обратите внимание: если вы настроили кэширование FastCGI в Nginx, то для кэшированных страниц значение request_time будет отображаться как 0 секунд.
Вероятные факторы, способствующие длительному времени обработки запроса:
- База данных MySQL/MariaDB функционирует с низкой скоростью.
- Сервер испытывает значительную нагрузку. (Для мониторинга средних значений нагрузки воспользуйтесь командой htop.)
Если агент Amplify не передает метрики Nginx, убедитесь, что он запущен от того же пользователя, что и Nginx. Также стоит проверить наличие обновленной версии агента Amplify.
Как удалить свой IP-адрес из логов доступа Nginx.
Иногда ваша активность может искажать статистику Nginx. Чтобы избежать этого, вы можете исключить свой IP-адрес из журнала доступа. Сначала добавьте указанные строки в секцию http конфигурационного файла Nginx. Не забудьте заменить 12.34.56.78 на ваш фактический IP-адрес. Если запрос поступит с вашего IP, Nginx установит переменную $log_ip в 0.
map $remote_addr $log_ip < "12.34.56.78" 0; default 1; >
После этого модифицируйте директиву access_log следующим образом.
access_log /var/log/nginx/linux16.ru.access.log apm if=$log_ip;
Сохраните изменения в файле и закройте его. После этого проверьте настройки nginx и выполните перезагрузку.
sudo nginx - t sudo systemctl reload nginx
Примечание : Если вы используете плагин WordPress Popular Posts на своем сайте WordPress, то будет много HTTP POST-запросов, отправляемых из браузеров посетителей на ваш веб-сервер, и это также может искажать request_time в Nginx Amplify. Чтобы минимизировать это влияние, вы можете перейти в Настройки -> WordPress Popular Posts ->Настройте инструменты и активируйте логирование просмотров исключительно для зарегистрированных пользователей. Это также поможет снизить нагрузку на сервер.
Способы контроля за сервером баз данных MariaDB/MySQL.
В первую очередь необходимо создать учетную запись пользователя в MariaDB/MySQL для сбора метрик. Зайдите в интерфейс мониторинга MariaDB/MySQL.
sudo mysql - u root
Создайте нового пользователя для агента Amplify. Убедитесь, что вместо your_password вы вводите свой желаемый пароль. Рекомендуется использовать пароль, который отличается от пароля root для MariaDB/MySQL.
create user 'amplify-agent'@'localhost' identified by 'your_password';
Покиньте сервер MariaDB/MySQL.
exit;
После этого необходимо активировать плагин Amplify для MariaDB/MySQL в конфигурационном файле Amplify.
sudo nano /etc/amplify-agent/agent.conf
В разделе [extensions] вы заметите, что плагин mysql изначально выключен.
[extensions] phpfpm = True mysql = False
Замените False на True, чтобы активировать данный плагин.
[extensions] phpfpm = True mysql = True
После этого в разделе [mysql] locate the following line.
password = amplify-agent
Смените стандартный пароль на тот, который вы задали для пользователя amplify-agent. После этого сохраните изменения и закройте файл. Затем перезапустите агент Amplify, чтобы изменения были применены.
sudo systemctl restart amplify-agent
Теперь агент Amplify приступает к сбору метрик для MariaDB/MySQL.

Как активировать запись медленных запросов в MariaDB
Журнал медленных запросов позволяет выявить запросы, которые занимают продолжительное время для получения ответа. Этот инструмент играет ключевую роль в улучшении производительности MariaDB. Для активации журнала медленных запросов необходимо внести изменения в конфигурационный файл сервера.
sudo nano /etc/mysql/mariadb.conf.d/50-server. cnf
Отметьте следующие четыре строки:
#slow_query_log_file = /var/log/mysql/mariadb-slow.log #long_query_time = 10 #log_slow_verbosity = query_plan, explain #log-queries-not-using-indexes
Удалите символ # и установите значение long_query_time на низкое значение, например, 1 секунду. Можно указать и еще меньшее, к примеру, 0.5.
slow_query_log_file = /var/log/mysql/mariadb-slow.log long_query_time = 1 log_slow_verbosity = query_plan, explain log-queries-not-using-indexes
Добавьте следующую строку, чтобы активировать журнал медленных запросов.
slow_query_log = 1
Сохраните файл и закройте его. Перезапустите MariaDB для применения изменений.
sudo systemctl restart mariadb
sudo systemctl restart mysql
Теперь Nginx Amplify предоставляет возможность отображать медленные запросы в виде графиков.

Если ваша MySQL или MariaDB функционирует с замедлением, в первую очередь стоит проанализировать QPS (количество запросов в секунду), что является показателем нагрузки на базу данных. На следующем скриншоте видно, что один из моих серверов MariaDB испытывает значительное давление, достигая около 1000 запросов в секунду.

Вы можете также узнать QPS через командную строку.
sudo mysqladmin status
Время работы: 405276 Потоки: 11 Вопросы: 389965946 Медленные запросы: 4536289 Открытия: 103692 Сброс таблиц: 3 Открытые таблицы: 3999 Запросы в секунду (в среднем): 962.223
Активирование журнала медленных запросов в MySQL 8.
Если вы применяете MySQL 8 вместо MariaDB, необходимо внести изменения в конфигурационный файл сервера.
sudo nano /etc/mysql/mysql.conf.d/mysqld. cnf
Вставьте указанные строки в конце данного файла.
slow_query_log_file = /var/log/mysql/slow-query.log long_query_time = 1 log-queries-not-using-indexes = ON slow_query_log = 1
Сохраните изменения в файле и закройте его. Затем перезапустите сервер MySQL для применения новых настроек.
sudo systemctl restart mysql
Способы отслеживания работы PHP-FPM.
Плагин PHP-FPM для агента Amplify активен по умолчанию, однако необходимо активировать статус PHP-FPM для сбора метрик. Измените конфигурационный файл пула PHP-FPM.
sudo nano /etc/php/7.4/fpm/pool. d/www.conf
Найдите следующую строку и удалите точку с запятой, чтобы активировать статус PHP-FPM.
;pm. status_path = /status
Будет полезно активировать медленный журнал PHP, который поможет определить, какие запросы требуют слишком много времени. Найдите строку ниже:
;slowlog = log/$pool.log. slow
Уберите знак препинания и укажите адрес для журнала.
slowlog = /var/log/php-fpm/slow.log
После этого обнаружьте следующую строку.
;request_slowlog_timeout = 0
Измените настройки: удалите точку с запятой и установите время ожидания в секундах, например, 1s.
request_slowlog_timeout = 1s
Сохраните файл и закройте его. Организуйте папку для логов PHP-FPM.
sudo mkdir - p /var/log/php-fpm/
Перезапустите PHP-FPM, чтобы применить изменения.
sudo systemctl restart php7.4-fpm
Теперь агент Amplify приступает к сбору метрик PHP-FPM, включая запись медленных запросов.

Имейте в виду, что при установке новой версии PHP-FPM, например PHP8.0-FPM, потребуется повторно настроить параметры в файле /etc/php/8.0/fpm/pool. d/www.conf.
Обзорная страница Amplify
На странице с обзором вы найдете общую оценку состояния приложения, а также 5 основных показателей для вашей системы.
- Общее число обращений
- Ошибки HTTP с кодами 5xx
- Запрос времени (Для отображения этой метрики необходимо настроить собственный формат логов, как было описано ранее.)
- Какое количество трафика обрабатывает Nginx
- Применение процессора

Количество ошибок HTTP 5xx оказывает влияние на состояние приложения. При отсутствии таких ошибок оценка составит 100%.
Нажав на значок сервера, вы сможете просмотреть, сколько процессорных и оперативных ресурсов используется вашей системой, а также сколько ресурсов потребляет Nginx.

Графики
На странице «Графики» представлены встроенные системные метрики, а также показатели Nginx, MariaDB/MySQL и PHP-FPM.

Панели мониторинга Nginx Amplify
Дашборды Amplify предоставляют возможность создавать индивидуальные графики и диаграммы, а также объединять их на одной странице. К примеру, можно собрать все графики, отражающие показатели производительности, на одной странице, либо настроить отображение всех метрик для определённого URL.

После настройки кеширования Nginx FastCGI у вас есть возможность создавать графики, отображающие коэффициент попаданий в кеш Nginx и время истечения срока действия кеша на вашей панели управления.
Анализатор
Одним из ценных средств в анализаторе выступает статический анализ. Amplify способен просматривать ваш файл конфигурации Nginx и предоставлять советы по вопросам производительности, безопасности и надежности. Этот инструмент поможет вам обнаружить ошибки и оптимизировать настройки.

На моем сервере Nginx отображается 5 предупреждений, поэтому я кликаю на ссылку «Открыть», чтобы узнать, как правильно настроить конфигурацию Nginx.

После того как вы внесете изменения, подождите несколько минут, и уведомление пропадет.
Оповещения
Если агент Amplify перестанет функционировать, на ваш электронный адрес поступит уведомление по умолчанию. На странице уведомлений есть возможность настроить различные предупреждения для вашего сервера. К примеру, можно настроить Amplify так, чтобы он отправлял мне письмо, если время отклика от upstream превышает 1 секунду на протяжении последних 2 минут.

Если на вашем сервере иссякнет оперативная память, это может привести к остановке работы MySQL/MariaDB. Вы можете настроить правило оповещения для отслеживания времени работы MySQL/MariaDB, как указано ниже. Если время работы составляет менее 120 секунд в течение последних 2 минут, отправьте уведомление по электронной почте.

Вы можете настроить получение уведомлений на электронную почту в случае возникновения ошибки 5xx на вашем сервере.

Агент Amplify прекращает свою деятельность.
Я часто сталкивался с тем, что агент Amplify внезапно перестает передавать метрики производительности. Чтобы устранить эту проблему, я настроил задачу Cron, которая перезапускает агент Amplify ежедневно.
sudo crontab - e
Включите следующую строку.
@daily systemctl restart amplify-agent
Наблюдение за MariaDB в окружении Galera Cluster
Агент Amplify, похоже, прекратит передачу метрик MariaDB при работе в кластере Galera.
Наблюдение за эффективностью серверов на базе Linux.
Nginx Amplify отлично подходит для отслеживания производительности Nginx, MySQL/MariaDB и PHP. Однако что насчет аппаратного обеспечения и операционной системы? Как определить, работают ли ваши диски медленно? Для этого можно воспользоваться Netdata, который предоставляет детальную информацию о состоянии системы.
- Отслеживание эффективности серверов Linux с использованием Netdata.
Заключение
Надеюсь, данная статья была полезной для вас в процессе установки и использования Nginx Amplify для отслеживания производительности приложений, основанных на Nginx, или стека LEMP на Ubuntu 18.04 или 20.04. Возможно, вас также заинтересуют следующие материалы:
- Установка нескольких версий PHP на Ubuntu.
Если вам понравился этот пост, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать ещё больше полезных советов и хитростей.

