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

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

Nginx Amplify нуждается в Python2. Его можно установить из обычного репозитория CentOS.
sudo dnf install python2
Загрузите скрипт для установки.

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

После установки агент будет запущен автоматически. Для проверки его статуса используйте:
systemctl status amplify-agent
●amplify-agent.service - Агент NGINX Amplify загружен: активен (/usr/lib/systemd/system/amplify-agent.service; включен; предустановлено поставщиком: отключено) Статус:действует (функционирует) с пт 2020-06-12 02:38:09 EDT; 2 мин 49 сек назад Документация: https://amplify. nginx.com/docs/ Процесс: 13768 ExecStart=/etc/init. d/amplify-agent start (код=вышел, статус=0/УСПЕХ) Основной PID: 13820 (amplify-agent) Задачи: 2 (лимит: 5059) Память: 48.0M CGroup: /system. slice/amplify-agent.service └─13820 amplify-agent
Совет: если предыдущая команда не выполнилась сразу, нажмите Q, чтобы вернуть управление терминалом.
Чтобы активировать автозапуск при старте системы, выполните следующие шаги.
sudo systemctl enable amplify-agent
Конфигурация Stub_status в Nginx
Агент Amplify способен автоматически собирать системные метрики. Для сбора метрик Nginx потребуется настроить параметр stub_status. Начните с создания конфигурационного файла.
sudo nano /etc/nginx/conf.d/stub_status.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.<. >Перед директивами включения мы разрабатываем индивидуальный формат логов для 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
В рамках сервера<. >Добавьте следующие две строки для активации журнала доступа и журнала ошибок. Журнал доступа будет использовать формат apm, а журнал ошибок настроен на уровень логирования warn.
access_log /var/log/nginx/linux16.ru.access.log apm; error_log /var/log/nginx/
Если агент Amplify не передает метрики Nginx, убедитесь, что он запущен под тем же пользователем, что и процесс worker Nginx. Также стоит ознакомиться с журналом агента Amplify, который находится по пути /var/log/amplify-agent/agent.log.
Как убрать свой IP-адрес из логов доступа Nginx.
Ваша активность может иногда искажать данные метрик Nginx. Чтобы этого избежать, можно исключить свой IP-адрес из журнала доступа. Для начала добавьте следующие строки в файл конфигурации Nginx в контексте http. Замените 12.34.56.78 на свой фактический IP-адрес. Если HTTP-запрос будет поступать с вашего 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
Способы отслеживания состояния сервера баз данных MariaDB/MySQL.
Для начала необходимо зарегистрировать пользователя в MariaDB/MySQL, который будет отвечать за сбор метрик. Авторизуйтесь в системе мониторинга MariaDB/MySQL.
mysql - u root - p
Создайте учетную запись для агента 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] найдите строку, которая следует за этим.
unix_socket = /var/run/mysqld/mysqld. sock password = amplify-agent
Пакет MariaDB в системе CentOS использует Unix-сокет по адресу /var/lib/mysql/mysql. sock. В связи с этим необходимо изменить параметр unix_socket на
unix_socket = /var/lib/mysql/mysql. sock
Затем смените стандартный пароль на тот, который вы назначили для пользователя amplify-agent. После этого сохраните изменения и закройте файл. Далее перезапустите агент Amplify, чтобы изменения начали действовать.
sudo systemctl restart amplify-agent
Агент Amplify теперь начинает сбор метрик для MariaDB/MySQL. (Возможно, вам потребуется подождать некоторое время.)

Как активировать журнал медленных запросов в MariaDB
Журнал медленных запросов позволяет выявить запросы, которые требуют значительного времени для обработки. Этот инструмент крайне полезен для улучшения производительности MariaDB. Для активации журнала медленных запросов необходимо внести изменения в конфигурационный файл сервера.
sudo nano /etc/my. cnf. d/mariadb-server. cnf
Включите указанные строки в раздел [mysqld].
slow_query_log = 1 slow_query_log_file = /var/log/mariadb/mariadb-slow.log long_query_time = 1 log_slow_rate_limit = 1000 log_slow_verbosity = query_plan log-queries-not-using-indexes
Я установил параметр long_query_time на минимальное значение в 1 секунду. Вы можете задать и еще более низкое значение, например, 0,5 секунды. Не забудьте сохранить и закрыть файл. После этого перезапустите MariaDB, чтобы изменения начали действовать.
sudo systemctl restart mariadb
Теперь Nginx Amplify способен отображать медленные запросы на графиках.

Способы мониторинга PHP-FPM
По умолчанию плагин PHP-FPM агента Amplify активирован, однако необходимо включить статус PHP-FPM для сбора метрик. Для этого отредактируйте файл конфигурации пула PHP-FPM.
sudo nano /etc/php-fpm.d/www.conf
Найдите следующую строку и удалите точку с запятой, чтобы активировать статус PHP-FPM.
;pm. status_path = /status
По умолчанию активирован медленный лог PHP, что указано в следующей строке.
slowlog = /var/log/php-fpm/www-slow.log
После этого найдите следующую строку.
;request_slowlog_timeout = 0
Удалите точку с запятой и задайте время ожидания в 1 секунду.
request_slowlog_timeout = 1s
Закройте файл и сохраните изменения. Затем создайте папку для логов PHP-FPM.
sudo mkdir - p /var/log/php-fpm/
Перезапустите PHP-FPM, чтобы изменения начали действовать.
sudo systemctl restart php-fpm
Агент Amplify теперь начинает сбор метрик PHP-FPM, включая журнал медленных запросов.

Обзорная страница Amplify
На странице с обзором представлены общий рейтинг состояния приложения и пять основных метрик вашей системы.
- Общее число запросов
- Ошибки HTTP 5xx
- Время обработки запроса (необходимо разработать индивидуальный формат журнала, как упоминалось ранее, для отображения данной метрики.)
- Какое количество полосы пропускания потребляет Nginx?
- Использование процессора

Здоровье приложения определяется количеством ошибок HTTP 5xx. При отсутствии таких ошибок оценка составит 100%.
Графики
На вкладке Графики представлены предустановленные метрики для системы, Nginx, MariaDB/MySQL и PHP-FPM.

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

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

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

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

Когда оперативная память вашего сервера исчерпается, это может вызвать остановку работы MySQL или MariaDB. Чтобы предотвратить это, вы можете настроить правило для уведомления о состоянии работы MySQL/MariaDB. Например, если время работы за последние 2 минуты составляет менее 120 секунд, отправьте уведомление на электронную почту.

Деятельность агента Amplify приостановлена.
Я не раз обращал внимание, что агент Amplify неожиданно прекращает отправлять данные о производительности. В результате я настроил задачу Cron, которая перезапускает агент Amplify ежедневно, чтобы устранить эту проблему.
sudo crontab - e
Включите следующую запись в файл crontab.
@daily systemctl restart amplify-agent
Сохраните изменения и закройте документ.
Заключение
Надеюсь, данная статья оказалась полезной для вас в процессе установки и использования Nginx Amplify для мониторинга производительности приложений на Nginx или LEMP стеке на CentOS 8/RHEL 8. Если вы нашли этот материал информативным, не забудьте подписаться на нашу бесплатную рассылку, чтобы получать больше полезных советов и рекомендаций.

