За построение поведенческой модели отвечает компонент Nemesida AI MLC. После 4-х дневного обучения, поведенческая модель будет сформирована и применена на фильтрующей ноде, а также будет отображаться в Личном кабинете. Если поведенческая модель недоступна, то необходимо проверить журнал компонента Nemesida AI MLC /var/log/nwaf/mlc.log
, обращая внимание на следующие записи:
Current training progress for virtual host example.com: 5%
Запись означает, что обучение не завершено. Когда прогресс будет равен 100%, то обучение завершится автоматически и поведенческая модель:
- появится в директории
/opt/mlc/ml
в виде 2 файлов:example.com_vect.ml
иexample.com_rf.ml
; - появится в Личном кабинете;
- появится на фильтрующей ноде в директории
/etc/nginx/nwaf/ml
в виде 2 файлов:example.com_vect.ml
иexample.com_rf.ml
;
Анализ запросов модулем машинного обучения начнется только после применения поведенческой модели на фильтрующей ноде. Чтобы проверить, что поведенческие модели применились на фильтрующей ноде, необходимо проверить журнал Nemesida AI MLA
/var/log/nwaf/mla.log
, обращая внимание на следующуя запись:INFO The list of Nemesida AI virtual hosts received from Nemesida WAF API: example.com INFO example.com md5: cdaba1e888de20b3b116d3ad28838a4f INFO Models processing finished
Запись означает, что на фильтрующей ноде применена поведенческая модель для виртуального хоста example.com
. Отсутствие записи example.com md5: cdaba1e888de20b3b116d3ad28838a4f
означает, что поведенческая модель не была применена.
Ошибка при применении поведенческой модели может возникнуть в нескольких случаях:
- поведенческая модель была повреждена и не может быть применена агентом машинного обучения Nemesida AI MLA;
- на фильтрующей ноде и Nemesida AI MLC установлены различные версии
Python
, использующие несовместимые версии pip-пакетов; - поведенческая модель не применяется после обновления компонентов.
Если поведенческая модель была повреждена и не может быть применена агентом машинного обучения Nemesida AI MLA, то рекомендуется выполнить дообучение поведенческой модели с использованием резервной копии обучающей выборки.
Если на фильтрующей ноде и Nemesida AI MLC установлены различные версии Python
, использующие несовместимые версии pip-пакетов, то рекомендуется произвести обновление версий Python
до актуальной, для синхронизации используемых пакетов на обоих серверах.
В случае, если обновление версии Python
невозможно на одном из серверов, то в качестве решения можно произвести понижение версии используемых pip-пакетов до версий, используемых в Python
самой ранней версии (например, при установленной версии Python 3.7
на одном из серверов, понижение версии пакетов будет производиться до этой версии, если она является самой ранней из установленных).
Рассмотрим пример понижения версии pip-пакетов для Python 3.9
до версии Python 3.7
:
Поведенческая модель создается компонентом Nemesida AI MLC для определенной версии Python
. Если понижение версии используемых pip-пакетов производилось для сервера с компонентов Nemesida AI MLC, то после понижения версии pip-пакетов необходимо выполнить процесс дообучения поведенческой модели с используем резервной копии обучающей выборки.
При принятии решения о понижении версии пакетов следует учитывать, что устревшие версии ОС могут использовать версии
Python
, поддержка которых завершена или завершится в ближайшее время. Поэтому для решения проблем, связанных с использованием разных версийPython
, рекомендуем рассматривать вариант обновления ОС до актуальной версии. Проверить состояние поддержки интерсующей версии Python можно здесь.
Если после обновления поведенческой модели не производится анализ модулем машинного обучения, то необходимо проверить журналы компонентов /var/log/nwaf/mla.log
и /var/log/nwaf/mlc.log
. Ошибки вида:
An error occurred while loading file /etc/nginx/nwaf/ml/example.com_rf.ml: node array from the pickle has an incompatible dtype: - expected: [('left_child', '<i8'), ('right_child', '<i8'), ('feature', '<i8'), ('threshold', '<f8'), ('impurity', '<f8'), ('n_node_samples', '<i8'), ('weighted_n_node_samples', '<f8')] - got: {'names': ['left_child', 'right_child', 'feature', 'threshold', 'impurity', 'n_node_samples', 'weighted_n_node_samples', 'missing_go_to_left'], 'formats': ['<i8', '<i8', '<i8', '<f8', '<f8', '<i8', '<f8', 'u1'], 'offsets': [0, 8, 16, 24, 32, 40, 48, 56], 'itemsize': 64}
говорят о том, что поведенческие модели были созданы на одной версии pip-зависимостей, но после обновления компонентов были обновлены зависимости и дальнейшее применение моделей невозможно. В таком случае рекомендуется обновить pip-зависимости по следующей инструкции:
- Фильтрующая нода:
- обновите компонент до актуальной версии;
- обновите pip-зависимости, запустив скрипт
/usr/share/nwaf/venv/pip_update.sh
на каждом из обновленных компонентов; - перезапустите сервис
mla_main
.
- Nemesida AI MLC:
- удалите все поведенческие модели, используя функционал Личного кабинета или вызовы API;
- обновите компонент до актуальной версии;
- обновите pip-зависимости, запустив скрипт
/usr/share/nwaf/venv/pip_update.sh
на каждом из обновленных компонентов; - перезапустите сервис
mlc_main
.