Files
tspu-docs/chapters/18.md
Daniel Lavrushin 10fb7f4e18 Добавлены новые разделы:
- Раздел 22: Балансировщик: мониторинг и диагностика
- Раздел 23: Распознавание протоколов (DPI Engine)
- Раздел 24: Траблшутинг

Каждый раздел включает команды, описания и практические примеры для диагностики и мониторинга работы балансировщика и системы фильтрации.
2026-02-20 13:59:30 +01:00

327 lines
28 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 18. Фильтр: мониторинг и диагностика
[← Оглавление](../README.md) · [← Раздел 17: Фильтр: настройка DPI](17.md)
---
Фильтр предоставляет обширный набор команд мониторинга и диагностики, позволяющих оценить состояние аппаратной части, загрузку ресурсов, статистику обработки трафика и работу модуля DPI. Все команды мониторинга выполняются в **операционном режиме** (приглашение `>`), за исключением ping и traceroute, которые доступны из **конфигурационного режима**.
## 18.1. `show version` — версия ПО, серийный номер (= MAC management)
Команда `show version` отображает информацию о текущей версии программного обеспечения фильтра:
| Параметр | Описание |
| --------------------- | ----------------------------------------------------------- |
| **Версия ПО** | Основной номер версии (например, `3.14.040 BP`) |
| **Серийный номер** | Серийный номер платформы — необходим при обращении в техподдержку |
Команда `show version detail` дополнительно выводит хэши сборки, указывающие на конкретный коммит в сборочной системе (полезно для разработчиков).
> **Важно:** серийный номер платформы **совпадает** с MAC-адресом management-интерфейса. Это можно проверить через команду `show ip if`.
## 18.2. `show ip if` — параметры management-интерфейса
Команда отображает параметры management-интерфейса:
- **MAC-адрес** (совпадает с серийным номером);
- **IP-адрес**;
- **Маска подсети**;
- **Default gateway**.
## 18.3. `show time` — текущее время (UTC / local)
Команда выводит текущее время в двух форматах:
- **UTC** — всемирное координированное время;
- **Local** — локальное время (с учётом настроенного сдвига).
Оба значения отображаются всегда, даже если они совпадают.
## 18.4. `show uptime` — время работы платформы и процесса EcoNAT
Команда показывает **два значения** времени работы:
| Параметр | Описание |
| ----------------------- | --------------------------------------------------------- |
| **Uptime платформы** | Время с момента включения/перезагрузки аппаратной платформы |
| **Uptime EcoNAT** | Время с момента запуска процесса обработки трафика |
Эти два значения могут отличаться на **небольшую величину** (обычно до 1 минуты): сначала стартует платформа, затем — процесс EcoNAT, который инициализирует интерфейсы и начинает обработку трафика.
> **Примечание:** после старта EcoNAT обновляет время по NTP. В некоторых случаях это приводит к тому, что в выводе `show uptime` отображаются **некорректные значения**. Например, если в BIOS было установлено неверное время, после синхронизации по NTP вывод uptime может показывать аномальные цифры. Это нормальная ситуация — значения восстановятся после следующей перезагрузки. Тем не менее, подобные аномалии следует исследовать.
## 18.5. Аппаратная часть: `show power`, `show fan`, `show temperature`
### show power
Отображает состояние **источников питания**: `OK` или `FAIL`. В будущих версиях прошивки планируется более подробный вывод — напряжение на входе, мощность блоков питания, внутренние параметры (вольты, ватты, амперы).
### show fan
Отображает **скорость вращения вентиляторов**:
- **Системные вентиляторы** — обычно 4 штуки, каждый с двумя датчиками;
- **Вентиляторы на сетевых картах** — отдельные показания.
### show temperature
Отображает **температуру ядер процессора** (не крышки и не внешнего сенсора):
| Диапазон | Оценка |
| ------------- | --------------------------------------------------------- |
| **4050 °C** | Нормальные значения |
| **~70 °C** | Платформа начинает перегреваться — необходимо проверить условия охлаждения на площадке |
При обнаружении повышенной температуры следует запросить у оператора информацию о состоянии окружающей среды на площадке (кондиционирование, вентиляция).
## 18.6. Интерфейсы: `show interface brief`, traffic monitor, трансиверы (DDM)
### show interface brief
Выводит **краткую информацию** по всем интерфейсам:
| Поле | Описание |
| --------------- | ----------------------------------------------- |
| **Состояние** | Up / Down |
| **MTU** | Текущее значение MTU на интерфейсе |
| **MAC** | MAC-адрес интерфейса |
| **Скорость** | Скорость линка |
| **Loading** | Условная загрузка интерфейса в процентах |
| **Description** | Описание интерфейса (если задано) |
### Traffic monitor
Команда `show interface <имя|all> traffic monitor` выводит **ежесекундно обновляемую таблицу** с текущей нагрузкой на интерфейсы:
- Количество **байт** — принятых и переданных за последнюю секунду;
- Количество **пакетов** — на вход и на выход;
- **Ошибки** — всегда должны быть нулевыми.
Для выхода из режима мониторинга — `Ctrl+C`.
Команда `show interface all traffic` (без слова `monitor`) показывает **суммарные счётчики** в байтах и пакетах с момента последней очистки или перезагрузки.
### Трансиверы (DDM)
Фильтр позволяет просмотреть информацию о подключённых **трансиверах** и уровни оптических сигналов (**DDM** — Digital Diagnostic Monitoring):
- Информация доступна для **оптических модулей**;
- Для **медных модулей** и **direct-attach кабелей** DDM не поддерживается;
- Поддерживаются трансиверы **любых производителей**, совместимых с чипами Intel на сетевых картах фильтра. Программных ограничений на вендора нет, однако совместимость может быть ограничена самим чипом Intel.
## 18.7. Ресурсы: `show resources`
Команда `show resources`**основная команда** для оценки загрузки фильтра. Выводит загрузку процессора, ресурсных таблиц и DPI.
### 18.7.1. Таблицы сессий/трансляций: не более 20% загрузки
Загрузка ресурсных таблиц (сессий, трансляций, IPv6-сессий) отображается в **процентах** от максимального объёма. Критический порог — **20%**.
| Загрузка | Оценка |
| ------------ | ----------------------------------------------------------- |
| **< 20%** | Нормальная работа |
| **> 20%** | Превышена оптимальная загрузка — поиск по таблице замедляется |
Превышение порога в 20% приводит к **существенному росту задержек** при обработке трафика. Это связано с внутренней архитектурой хэш-таблиц: при высокой заполненности поиск по ним становится значительно дольше, и часть трафика может не успевать обрабатываться.
**Что делать при превышении 20%:**
- Обратиться в техподдержку;
- Вероятная причина — на фильтр попало **больше трафика**, чем планировалось (таблицы рассчитаны на определённую полосу пропускания);
- Возможная причина — **DDoS-атака**: маленькие пакеты генерируют огромное количество сессий при небольшом объёме трафика;
- Запросить у оператора информацию о состоянии трафика.
> **Примечание:** таблица абонентов (subscribers) также отображается в `show resources`, но в проекте ТСПУ **не используется** — это функционал BRAS.
### 18.7.2. Свободные буферы: не должны уходить в ноль
Значение **свободных буферов** не имеет конкретного «правильного» числа. Важно следить за **динамикой**:
- Буферы могут увеличиваться и уменьшаться в зависимости от нагрузки;
- На графике они должны **колебаться** вокруг средней линии;
- Если в течение **недели и более** буферы постепенно **уменьшаются** — это признак **утечки памяти**, и необходимо открывать кейс в техподдержке;
- Буферы **не должны уходить в ноль**.
### 18.7.3. DPI-ресурсы: не более 100%
Загрузка DPI-ресурсов отображается отдельно. Порог — **100%**:
| Загрузка | Оценка |
| -------------- | -------------------------- |
| **< 100%** | Нормальная работа |
| **≥ 100%** | Ресурсы DPI исчерпаны |
### 18.7.4. CPU Load — условный параметр обработки трафика
Параметр **CPU Load** в `show resources` — это **не** стандартная загрузка CPU в понимании Linux. Это **условный параметр**, рассчитываемый процессом EcoFilter, отражающий долю времени, затрачиваемую на обработку трафика.
| Загрузка | Оценка |
| -------------- | -------------------------------------------------------- |
| **< 80%** | Нормальная работа |
| **8090%** | Повод для анализа — выяснить причину высокой загрузки |
| **~100%** | Критическая ситуация — фильтр не справляется |
Значения 8090% и выше — повод обратиться в техподдержку или провести собственное расследование причин.
## 18.8. Память: Control Plane vs Data Plane
Память фильтра условно разделена на **две области**:
| Область | Назначение |
| -------------------- | ------------------------------------------------------------- |
| **Control Plane** | ОС Linux, CLI, сервисные функции (syslog, управление и т.д.) |
| **Data Plane** | Процесс EcoNAT — обработка трафика, ресурсные таблицы |
### 18.8.1. Data Plane выделяется при старте, не должна расти
Память Data Plane выделяется **один раз при старте** процесса EcoNAT. В ней создаются ресурсные таблицы (сессии, трансляции и пр.).
После старта объём занятой Data Plane памяти **не должен расти**. На графике мониторинга это должна быть **ровная линия** с незначительными отклонениями. Если наблюдается постоянный рост — это признак утечки памяти.
### 18.8.2. Пороги: 510% свободной памяти — повод для тревоги
| Свободная память | Оценка |
| ---------------- | --------------------------------------------------------- |
| **> 10%** | Нормально |
| **510%** | Повод для тревоги — рекомендуется настроить алерт в системе мониторинга |
| **< 5%** | Критическая ситуация |
Если свободная память составляет 5%, но **не уменьшается** со временем — это нормальная ситуация. На современных платформах памяти достаточно, и свободной памяти обычно остаётся много.
> **Примечание:** на некоторых площадках (например, МТС) используется другой принцип расчёта свободной памяти, и в мониторинге могут отображаться небольшие значения (~5%). Это нормально для данных прошивок.
## 18.9. `show cps` — скорость создания новых сессий
Команда `show cps` (Connections Per Second) показывает **скорость создания новых сессий** и трансляций в секунду.
| Значение | Интерпретация |
| ----------- | ----------------------------------------------------------- |
| **> 0** | Новые сессии создаются, трафик обрабатывается |
| **0** | Новые сессии не создаются — требуется диагностика |
**Нулевое значение** может означать:
1. **Трафик не проходит** через фильтр вообще;
2. **Трафик проходит, но не попадает в пул** — ACL не отбирает трафик, сессии не создаются. Через фильтр могут идти гигабиты и десятки гигабит, но `show cps` будет показывать ноль (подробнее — в [разделе 16](16.md)).
## 18.10. `show statistic` — статистика сессий и пулов, значение Optimal (= 20%)
Команда `show statistic` отображает статистику по сессиям и загрузке пула:
| Параметр | Описание |
| ------------ | ----------------------------------------------------------- |
| **Total** | Максимальный размер таблицы |
| **Used** | Количество используемых записей |
| **Optimal** | 20% от Total — оптимальный максимум загрузки |
Значение **Optimal** — это те же 20%, что и в `show resources`, но отображённые **в абсолютных числах**, а не в процентах. Количество используемых записей (Used) **не должно превышать** значение Optimal.
Загрузка пула: поскольку пул в проекте ТСПУ всегда типа **fake**, его загрузка будет **нулевой** — на неё можно не обращать внимания.
## 18.11. Счётчики: `show counters all` / `show counters div` (дельта за секунду)
На фильтре существует **большое количество** счётчиков — практически на каждую операцию.
| Команда | Описание |
| ---------------------- | ---------------------------------------------------------- |
| `show counters all` | Значения счётчиков с момента последнего обнуления (или перезагрузки) |
| `show counters div` | Дельта за последнюю секунду — какие счётчики увеличились и на сколько |
**`show counters div`** — наиболее полезная команда для оперативной диагностики. Она показывает только те счётчики, которые **изменились за последнюю секунду**. Если счётчик не появился в выводе — значит, за последнюю секунду он не увеличился.
Примеры счётчиков:
- Распознанные пакеты по протоколам (WhatsApp Voice, Telegram и т.д.);
- Отправленные логи;
- Счётчики L2-протоколов (PPPoE, MPLS);
- Нераспознанные протоколы;
- И многие другие (сотни счётчиков).
Как правило, из названия счётчика понятно, за что он отвечает. Наиболее важные счётчики выведены в **систему мониторинга**. На разных площадках набор активных счётчиков может различаться в зависимости от типа трафика и инкапсуляций.
> **Подсказка:** для оценки нераспознанного трафика можно сравнить **общее количество пакетов** с суммой распознанных — разница покажет объём нераспознанного трафика.
## 18.12. Системный журнал: `show syslog`, ротация двух файлов
Помимо логирования на внешний сервер (см. [раздел 14.8](14.md)), логи хранятся **внутри устройства** на локальном разделе.
Особенности внутреннего хранения:
- Раздел для логов **небольшой**;
- Используются **два файла**, которые **ротируются**: сначала пишется в один, затем в другой, и наоборот;
- При большом объёме логов файлы **быстро перезатираются** — если с момента проблемы прошло пару суток, логи, скорее всего, уже утрачены;
- Именно для решения этой проблемы в федеральном проекте добавлено **внешнее логирование** на СПХД.
Команда `show syslog` выводит записи из внутреннего журнала, начиная с **самых свежих**.
## 18.13. DPI-мониторинг
### 18.13.1. `show dpi records <N>` — содержимое DPI-листа
Команда `show dpi records <N>` выводит **содержимое** загруженного DPI-листа с номером N, включая реестр Роскомнадзора (лист 0).
> **Предупреждение:** содержимое реестра Роскомнадзора (лист 0) **очень велико**. Вывод может продолжаться несколько минут. Для прерывания — `Ctrl+C`.
### 18.13.2. `show dpi state` — количество записей, дата последнего дампа
Команда `show dpi state`**основная диагностическая команда** для анализа состояния DPI. Отображает:
| Параметр | Описание |
| ------------------------- | --------------------------------------------------------- |
| **Количество IP-записей** | Число загруженных IP-адресов и подсетей |
| **Количество URL-записей**| Число загруженных URL |
| **Last time** | Время последнего скачивания дампа |
| **Actual date for delta** | Временная метка последней записи в реестре Роскомнадзора |
| **DPI-ресурсы** | Загрузка ресурсов DPI (аналогично `show resources`) |
**Интерпретация дат:**
Реестр Роскомнадзора формируется **итерационно**: Роскомнадзор периодически обновляет реестр, выпуская основные дампы и дельты. Если Роскомнадзор **не вносил обновлений** в течение длительного времени (например, суток), то:
- Фильтр продолжает запрашивать обновления с периодичностью update schedule (обычно 30 минут);
- Сервер РКН отвечает, что обновлений нет;
- Дата последнего скачивания **не обновляется**;
- В системе мониторинга может появиться алерт «дамп не скачивался более 24 часов».
Это **не обязательно означает проблему** — возможно, Роскомнадзор просто не обновлял реестр. Однако если дата не обновляется длительное время, следует проверить скорость скачивания и доступность сервера РКН.
Команда `dpi list` показывает файлы на диске: все дампы, дельты и сформированные DPI-листы. Например, реестр Роскомнадзора после парсинга хранится в файле `list_0.dpi`.
### 18.13.3. `dpi load <N>` — ручная загрузка списка
Команда `dpi load <N>` принудительно загружает DPI-лист с номером N с URL, указанного в конфигурации данного листа (или с URL, заданного в команде). Используется для диагностики проблем с загрузкой списков.
### 18.13.4. `dpi run` — принудительное обновление всех списков
Команда `dpi run` принудительно запускает обновление **всех** настроенных DPI-листов. В штатной эксплуатации обычно не требуется — используется при диагностике проблем с обновлением списков.
> **Примечание:** `dpi run` инициирует запрос к серверам, но не гарантирует скачивание — если обновлений нет, ничего скачано не будет.
### 18.13.5. `show dpi match <ресурс>` — проверка ресурса по всем DPI-листам
Команда `show dpi match <ресурс>` проверяет указанный ресурс (IP-адрес или URL) по **всем загруженным DPI-листам** и выводит:
- В каком DPI-листе найдено **совпадение**;
- Какое **поведение** (behavior) задано для этого листа.
Если совпадений нет — вывод будет пустым.
> **Примечание:** в версии прошивки пилотного проекта (Урал) эта команда может быть **недоступна**. Она появилась в более новых версиях для федерального проекта.
Команда крайне полезна для диагностики: если абонент жалуется на блокировку ресурса, можно быстро проверить, присутствует ли ресурс в каком-либо DPI-листе и с каким действием.
## 18.14. Ping и Traceroute (из конфигурационного режима)
Команды `ping` и `traceroute` доступны из **конфигурационного режима** (не из операционного).
| Команда | Описание |
| --------------- | ----------------------------------------------------------- |
| `ping <адрес>` | Бесконечный пинг до указанного хоста (прервать — `Ctrl+C`) |
| `traceroute <адрес>` | Трассировка маршрута до хоста |
> **Важно:** ping и traceroute работают **только через management-интерфейс**. Фильтр — это L2-устройство без IP-интерфейсов в тракте данных, поэтому инициировать трафик через LAN/WAN-интерфейсы **невозможно** (подробнее — в [разделе 5.2](05.md)).
---
[← Оглавление](../README.md) · [← Раздел 17: Фильтр: настройка DPI](17.md) · [Раздел 19: Фильтр: обновление прошивки →](19.md)