# 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

Отображает **температуру ядер процессора** (не крышки и не внешнего сенсора):

| Диапазон      | Оценка                                                    |
| ------------- | --------------------------------------------------------- |
| **40–50 °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%**      | Нормальная работа                                        |
| **80–90%**     | Повод для анализа — выяснить причину высокой загрузки    |
| **~100%**      | Критическая ситуация — фильтр не справляется             |

Значения 80–90% и выше — повод обратиться в техподдержку или провести собственное расследование причин.

## 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. Пороги: 5–10% свободной памяти — повод для тревоги

| Свободная память | Оценка                                                    |
| ---------------- | --------------------------------------------------------- |
| **> 10%**        | Нормально                                                 |
| **5–10%**        | Повод для тревоги — рекомендуется настроить алерт в системе мониторинга |
| **< 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)
