Глава 13. Современный активный мониторинг

Введение

Чтобы гарантировать оптимальную производтельность и правильность вашего приложения, вам требуется быть в курсе отслеживания измерений его активности. NGINX Plus предоставляет некие современную инструментальную панель и снабжение JSON для предоставления глубокого мониторинга относительно всех запросов, которые поступают через самую сердцевину вашего приложения. Мониторинг активности NGINX Plus предоставляет внутреннюю информацию о запросах, пулах восходящих серверов, кэшировании, жизнеспособности и многом другом. Данная глава датализирует мощность и возможности имеющейся инструментальной панели NGINX Plus, API NGINX Plus и модуль stub status с открытым исходным кодом.

Включение Stub Status NGINX с открытым исходным кодом

Задача

Вам требуется включить основной мониторинг NGINX.

Решение

В блоке location внутри некого сервера HTTP NGINX включите модуль stub_status:


location /stub_status {
    stub_status;
    allow 127.0.0.1;
    deny all;
    # Set IP restrictions as appropriate
}
 	   

Проверьте свои настройки выполнив запрос состояния:


$ curl localhost/stub_status
Active connections: 1
server accepts handled requests
 1 1 1
Reading: 0 Writing: 1 Waiting: 0
		

Обсуждение

Обсуждаемый модуль stub_status включает базовые возможности мониторинга сервера NGINX с Открытым исходным кодом. Вся возвращаемая им информация предоставляет внутренние сведения относительно значения числа активных соединений, а также общее число полученных подключений, обработанных подключений и обслуженных запросов. Также отображается текущее значение числа подлежащих чтению, записи или пребывающих в состоянии ожидания соединений. Данная предоставляемая информация является глобальной и не специфичной для того родительского server, в котором определена данная директива stub_status. Это означает, что вы можете размещать это состояние в неком защищённом server. Этот модуль предоставляет счётчики активных соединений в виде встроенных переменных для применения при регистрации и где- либо ещё. Этими переменными являются $connections_active, $connections_reading, $connections_writing и $connections_waiting.

Включение Инструментальной панели мониторинга NGINX Plus

Задача

Вам требуются более глубокие замеры относительно протекающего через ваш сервер NGINX Plus обмена.

Решение

Воспользуйтесь инструментальной панелью мониторинга активности в реальном масштабе времени:


server {
# ...
    location /api {
        api [write=on];
        # Directives limiting access to the API
        # See chapter 7
    }

    location = /dashboard.html {
        root /usr/share/nginx/html;
    }
}
 	   

Данная конфигурация NGINX Plus обслуживает все состояния инструментальной панели NGINX Plus. Эта конфигурация настраивает сервер HTTP для обслуживания соответствующего API и самого состояния инструментальной панели. Эта инструментальная панель обслуживается в виде выводимого статического содержания соответствующего каталога /usr/share/nginx/html. Данная инструментальная панель выполняет запросы к имеющемуся API через /api/ чтобы выполнять выборку значения состояния и его отображения в реальном масштабе времени.

Обсуждение

NGINX Plus предоставляет некую современную инструментальную панель мониторинга состояния. Эта инструментальная панель состояния предоставляет подробное состояние системы NGINX, например, число активных подключений, время работы, информацию о пуле серверов восходящего потока и многое другое. Для беглого знакомства с её консолью посмотрите на Рисунок 13-1.

 

Рисунок 13-1


Инструментальная панель состояния NGINX Plus

Загрузочная страница вашей инструментальной панели состояния предоставляет некий обзор всей имеющейся системы. Кликнув по закладке Server Zones вы перечисляете подробности всех настроенных в вашей конфигурации серверов HTTP, с детализацией значений числа откликов от 1XX до 5XX и общее итоговое значение, а также число запросов в секунду и текущая пропускная способность обмена. Закладка Upstream выводит подробности состояний серверов восходящего потока, а если какие- либо из них пребывают в отказавшем состоянии, сколько запросов было обслужено и общее число обслуженных запросов для состояния кода, а также иные статистические данные, такие как сколько проверок жизнеспособности были пройдены успешно, или завершились провалом. Закладка TCP/UDP Zones отображает подробности объёма обмена, проходящего через потоки TCP или UDP, а также значение числа соединений. Закладка TCP/UDP Upstream показывает информацию относительно того сколько обслуживает каждый сервер из имеющихся пулов восходящего потока TCP/ UDP, а также детализацию и времена откликов прохождения и отказов проверок жизнеспособности. Закаладка Caches отображает информацию относительно используемого для кэширования пространства; объём обслуживаемого обмена, записей и обходов; а также соотношение попаданий в кэш. Данная инструментальная панель NGINX является бесценной при мониторинге всей сердцевины ваших приложений и потока обмена.

Также ознакомьтесь

NGINX Plus Status Dashboard Demo

Сбор измерений при помощи API NGINX Plus

Задача

Вам необходим API доступ для детализации измерений, производимых инструментальной панелью состояния NGINX Plus.

Решение

Для сбора измерений воспользуйтесь API RESTful. Вот примеры конвейера получаемого через json_pp для более простого прочтения вывода:


> 
		


$ curl "demo.nginx.com/api/3/" | json_pp
[
    "nginx",
    "processes",
    "connections",
    "ssl",
    "slabs",
    "http",
    "stream"
]
		

Данные вызовы curl запрашивают самый верхний уровень API, который отображает прочие порции имеющегося API.

Для получения информации о самом сервере NGINX Plus воспользуйтесь URI /api/{version}/nginx:


$ curl "demo.nginx.com/api/3/nginx" | json_pp
{
    "version" : "1.15.2",
    "ppid" : 79909,
    "build" : "nginx-plus-r16",
    "pid" : 77242,
    "address" : "206.251.255.64",
    "timestamp" : "2018-09-29T23:12:20.525Z",
    "load_timestamp" : "2018-09-29T10:00:00.404Z",
    "generation" : 2
}
		

Для ограничения возвращаемой применяемым API информации применяйте параметры:


$ curl "demo.nginx.com/api/3/nginx?fields=version,build" \
  | json_pp
{
    "build" : "nginx-plus-r16",
    "version" : "1.15.2"
}
		

Вы можете запросить статистические данные из URI /api/{version}/connections:


$ curl "demo.nginx.com/api/3/connections" | json_pp
{
    "active" : 3,
    "idle" : 34,
    "dropped" : 0,
    "accepted" : 33614951
}
		

У вас имеется возможность собирать статистику запросов из URI запросов /api/{version}/http/:


$ curl "demo.nginx.com/api/3/http/requests" | json_pp
{
    "total" : 52107833,
    "current" : 2
}
		

Для получения выборки статистических данных относительно определённой зоны серверов воспользуйтесь URI /api/{version}/http/server_zones/{httpServerZoneName}:


$ curl "demo.nginx.com/api/3/http/server_zones/hg.nginx.org" \
  | json_pp
{
    "responses" : {
        "1xx" : 0,
        "5xx" : 0,
        "3xx" : 938,
        "4xx" : 341,
        "total" : 25245,
        "2xx" : 23966
    },
    "requests" : 25252,
    "discarded" : 7,
    "received" : 5758103,
    "processing" : 0,
    "sent" : 359428196
}
   

Данный API способен предоставлять абсолютно все данные, которые вы можете обнаружить в своей инструментальной панели. Он имеет глубину и следует некому логическому шаблону. Вы можете отыскать ссылки на ресурсы в самом конце данного рецепта.

Обсуждение

Обсуждаемый API NGINX Plus способен возвращать статистические данные относительно множества частей вашего сервера NGINX Plus. Вы можете выбирать информацию относительно самого сервера NGINX Plus, его процессов, соединений и слоёв. Вы также может отыскивать информацию относительно запускаемых внутри NGINX серверов http и stream, включая серверы, восходящие потоки, серверы восходящего потока и хранилища ключ- значение, помимо информации и статистических сведений относительно зон кэширования HTTP. Это предоставляет для вас или для сторонних специалистов агрегаторы измерений с глубоким представлением того что выполняет ваш сервер NGINX Plus.

Также ознакомьтесь

NGINX HTTP API Module Documentation

NGINX API Swagger UI