NGINX Amplify – сервис для полноценного мониторинга NGINX и его рабочего окружения.
Умеет рисовать графики, отправлять уведомления о проблемах и даже подсказывать некорректные настройки хостов.
Суть работы весьма простая: регистрируемся на сайте сервиса, устанавливаем Amplify агент, получаем данные.
Бесплатен с определёнными ограничениями (5 агентов, 10 алертов и т.д.).
На момент написания был доступен для Amazon Linux, CentOS, Debian, Red Hat Linux и Ubuntu.
Домашняя страница – тут>>>.
Документация – тут>>>.
Начало работы – тут>>>.
Содержание
Компоненты
- NGINX Amplify Agent: агент на Python для установки на хостах, общается с бекендом по TLS/SSL, детальнее тут>>>
- NGINX Amplify Web UI: веб-интерфейс с отображением полученных данных
- NGINX Amplify Backend: корневой компоненты системы на стороне сервиса Amplify
Агент умеет собирать и передавать метрики о работе операционной системы, самого сервиса NGINX на хосте, метрики PHP-FMP (метрики MySQL в процессе добавления).
Регистрация
Для начала работы – прервым делом создаём аккаунт на странице регистрации проекта тут>>>:
На следующей странице сразу получаем все инструкции по установке и запуску:
Установка
Загружаем скрипт:
[simterm]
# curl -L -O https://github.com/nginxinc/nginx-amplify-agent/raw/master/packages/install.sh
[/simterm]
Передаём API ключ в переменных и запускаем скрипт:
[simterm]
# API_KEY='967***e31' sh ./install.sh --- This script will install the NGINX Amplify Agent package --- 1. Checking admin user ... root, ok. 2. Checking API key ... using 967***e31 3. Checking Python ... found python 2.7 4. Checking OS compatibility ... debian detected. 5. Adding public key ... done. 6. Adding repository ... added. 7. Updating repository ... Ign http://cloudfront.debian.net jessie InRelease Get:1 http://cloudfront.debian.net jessie-updates InRelease [145 kB] ... OK, everything went just fine! To start and stop the Amplify Agent type: service amplify-agent { start | stop } Amplify Agent log can be found here: /var/log/amplify-agent/agent.log After the agent is launched, it takes a couple of minutes for this system to appear in the Amplify user interface. PLEASE CHECK THE DOCUMENTATION HERE: https://github.com/nginxinc/nginx-amplify-doc Launching amplify-agent ... All done.
[/simterm]
Проверяем:
[simterm]
# systemctl status amplify-agent ● amplify-agent.service - LSB: Stop/start nginx-amplify-agent Loaded: loaded (/etc/init.d/amplify-agent) Active: active (running) since Mon 2018-01-22 12:31:12 UTC; 1min 32s ago Process: 2562 ExecStart=/etc/init.d/amplify-agent start (code=exited, status=0/SUCCESS) CGroup: /system.slice/amplify-agent.service └─2614 amplify-agent Jan 22 12:31:12 ip-172-31-43-63 systemd[1]: Started LSB: Stop/start nginx-amplify-agent.
[/simterm]
Добавляем в автозагрузку:
[simterm]
# systemctl enable amplify-agent Synchronizing state for amplify-agent.service with sysvinit using update-rc.d... Executing /usr/sbin/update-rc.d amplify-agent defaults Executing /usr/sbin/update-rc.d amplify-agent enable
[/simterm]
- настройки агента –
/etc/amplify-agent/agent.conf
- лог –
/var/log/amplify-agent/agent.log
Используемые порты:
[simterm]
# netstat -anp | grep amp tcp 32 0 127.0.0.1:59718 127.0.0.1:443 CLOSE_WAIT 2614/amplify-agent tcp 1 0 172.31.43.63:55972 169.254.169.254:80 CLOSE_WAIT 2614/amplify-agent tcp 0 0 172.31.43.63:48593 52.36.73.123:443 ESTABLISHED 2614/amplify-agent
[/simterm]
В дашборде уже появился сервис (слева):
Продолжаем настройку.
В каталоге /etc/nginx/conf.d
создаём файл настроек stub_status.conf
из примера:
server { listen 127.0.0.1:80; server_name 127.0.0.1; location /nginx_status { stub_status; allow 127.0.0.1; deny all; } }
Проверяем, перечитываем файлы настроек:
[simterm]
# nginx -t && service nginx reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
[/simterm]
Проверяем статус:
[simterm]
# curl http://127.0.0.1/nginx_status Active connections: 32 server accepts handled requests 9847 9847 54582 Reading: 0 Writing: 1 Waiting: 31
[/simterm]
Последняя подсказка по настройкам:
Метрики
Сразу же доступны метрики операционной системы и ресурсов хоста:
И на главной:
Справа внизу доступна быстрая ссылка для настройки компонентов:
Но почему Metrics unavailable, если stub_status
уже настроен?
Впрочем, после того как я сходил на обед – stub_status
в Amplify уже отображался как “Confugired” (или просто помог service amplify-agent restart
).
Добавим дополнительные метрики:
Документация – тут>>>.
В /etc/nginx/nginx.conf
добавляем новый формат лога:
... log_format main_ext '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" ' '"$host" sn="$server_name" ' 'rt=$request_time ' 'ua="$upstream_addr" us="$upstream_status" ' 'ut="$upstream_response_time" ul="$upstream_response_length" ' 'cs=$upstream_cache_status' ; ...
Указываем логи – для error лога ставим в уровень warn
, для access ставим тип main_ext
, который добавили выше:
... access_log /var/log/nginx/access.log main_ext; error_log /var/log/nginx/error.log warn; ...
Проверяем, перезагружаем конфиги:
[simterm]
# nginx -t && service nginx reload nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
[/simterm]
И по-прежнему ничего…
Проверяем доступ к каталогу /var/log/nginx
от пользователя nginx
:
[simterm]
# sudo -H -u nginx bash -c 'ls -l /var/log/nginx'
[/simterm]
Проверяем права:
[simterm]
# ls -l /var/log/ | grep nginx drwxr-xr-x 2 nginx root 4096 Jan 22 12:31 amplify-agent drwxr-x--- 3 www-data adm 4096 Jan 22 14:41 nginx
[/simterm]
Обновляем владельца каталога:
[simterm]
# chown nginx /var/log/nginx/
[/simterm]
Перезапускаем сервисы – проверяем:
[simterm]
# systemctl restart amplify-agent # systemctl restart amplify-agent
[/simterm]
Данные пошли:
Мониторинг PHP-FPM
Для мониторинг PHP-FMP – требуется опция pm.status_path
, если её нет – добавляем в файл настроек пула, например /etc/php5/fpm/pool.d/rtfm.co.ua.conf
:
... pm.status_path = /status ...
Перезапускаем сервис:
[simterm]
# service php5-fpm restart
[/simterm]
Для проверки – устанавливаем пакет libfcgi-dev
:
[simterm]
# apt -y install libfcgi-dev
[/simterm]
Проверяем:
[simterm]
# vim -p SCRIPT_NAME=/status SCRIPT_FILENAME=/status QUERY_STRING= REQUEST_METHOD=GET cgi-fcgi -bind -connect /var/run/rtfm-php-fpm.sock Expires: Thu, 01 Jan 1970 00:00:00 GMT Cache-Control: no-cache, no-store, must-revalidate, max-age=0 Content-type: text/plain;charset=UTF-8 pool: rtfm.co.ua process manager: dynamic start time: 22/Jan/2018:14:32:24 +0000 start since: 9 accepted conn: 7 listen queue: 0 max listen queue: 0 listen queue len: 0 idle processes: 2 active processes: 1 total processes: 3 max active processes: 3 max children reached: 0 slow requests: 0
[/simterm]
Ждём минуту-две, проверяем вкладку PHP-FPM:
Analizer
Документация – тут>>>.
Пример анализа:
Добавление dashboard
И соберём всё интересующее в одном месте.
Создаём дашборд:
Добавляем графики (New graph справа):
Либо из готовых наборов – кнопка New set:
В результате получаем такую картинку:
Alerts
И пример добавления уведомления, если использование диска будет выше 90%:
Его срабатывание:
Вообще у Amplify много чего ещё интересного, те же теги – смотрите документацию.