Позволяет отображать информацию о сетевых устройствах в удобном для чтения формате без ввода консольных команд.
Кроме того, Ecstasy предоставляет дополнительные функции для визуализации и поиска сетевой информации:
Список поддерживаемых вендоров приведен ниже. Другие модели тоже могут быть совместимы, но я имею доступ только к этим устройствам.
Cisco
WS-C4500*
WS-C35*0
WS-C3750*
ME-3*00X
ME-4924
ME-3400
Eltex
MES3324*
ESR-12VF
LTP-4X(8X)-rev.*
LTP-16N
MikroTik
RouterOS v6.* (v7.*)
Huawei
S2403TP
S2326TP
CX600-X8
CE6865
Huawei DSL (GPON)
MA5600T
Iskratel DSL
MPC8560
D-Link
DES-3200-*
DES-3028
DES-3526
DGS-3420
DGS-12**
Extreme
X460-*
X670-*
ZTE
ZXR10 2928E
2936-FI
2952E
Q-Tech
QSW-3450-*
QSW-8200-*
Самым простым способом является запуск через docker compose.
docker compose up -d;
Чтобы автоматизировать процесс развертывания приложения, можно использовать Jenkins вместе с Ansible.
ansible
.inventory/hosts
IP адрес и порт для подключения сервера, на который будет установлена система.roles
находятся файлы с параметрами настройки приложения:ecstasy-main.yaml
содержит основные переменные проекта;# ------- DIRS --------
root_folder: "/home/ecstasy" # Директория проекта
# ------ PYTHON -------
python_version: 3.11
# -------- WEB --------
django_superuser_username: superusername
django_superuser_password: password
gunicorn_socket: 127.0.0.1:8000
device_connector_socket: 127.0.0.1:9999
celery_concurrent: 2
celery_worker_name: worker1
flower_address: 0.0.0.0
flower_port: 5555
flower_username: monitoring
flower_password: flower-password
nginx_http_listen_port: 80
enable_https: no
# При включении HTTPS будет создан самоподписанный сертификат
# ------- REDIS --------
redis_broker_db: 0
redis_cache_db: 1
redis_password: redis-password
ecstasy-mariadb.yaml
- параметры для базы данных;mysql_root_password: root-password
# Пользователь будет создан
mariadb_user: ecstasy
mariadb_password: ecstasy-password
# База будет создана
mariadb_database: ecstasy
ecstasy-services.yaml
- для работы сервисов.# Названия сервисов
ECSTASY_SERVICE_NAME: ecstasy
CELERY_SERVICE_NAME: ecstasy-celery
DEVICE_CONNECTOR_SERVICE_NAME: ecstasy-device-connector
FLOWER_SERVICE_NAME: ecstasy-flower
# Переменные окружения для сервисов Ecstasy.
ALLOWED_HOSTS: "*"
DJANGO_DEBUG: 0
CONFIG_STORAGE_DIR: # директория в которую будут сохраняться файлы конфигураций
DJANGO_SECRET_KEY:
CONTACT_NAME: # имя для обратной связи
CONTACT_EMAIL: # почта обратной связи
CACHE_KEY_PREFIX: ecstasy_prod
DEVICE_CONNECTOR_TOKEN: # токен для защиты device connector
DEVICE_CONNECTOR_DEFAULT_POOL_SIZE: 2 # кол-во сессий по умолчанию для одного сетевого оборудования
Необходимо указать недостающие и/или поменять параметры по умолчанию.
ansible-playbook -K -i inventory/hosts playbooks/deploy-ecstasy.yaml
При выборе оборудования показывается его информация:
При выборе конкретного порта открывается его информация: Описание, конфигурация, счетчик ошибок, диагностика состояния кабеля, список VAC адресов
Для станционных терминалов GPON OLT возможен следующий вывод информации об интерфейсе (указан ниже)
Реализована возможность отображать и создавать интерактивные карты:
Интерактивные карты со слоями из Zabbix группы отображают доступность оборудования с описанием проблемы в Zabbix.
Построение топологии VLAN по оборудованию.
Определение маршрута MAC адреса между оборудованиями.
# python manage.py import_from_zabbix
Импорт узлов сети из zabbix
options:
-h, --help show this help message and exit
-g GROUPS, --groups GROUPS
Имена Zabbix групп через запятую
-a AUTH, --auth AUTH Имя группы авторизации для узла сети
-s, --save Сохранить в базу узлы сети
--change-group CHANGE_GROUP
Имя группы Ecstasy, которая будет использоваться для всех узлов сети. Если не указана, то будет использована оригинальная группа Zabbix
--all-status Импортируем также узлы сети, которые деактивированы в Zabbix
--interface-scan {telnet,ssh,snmp}
Протокол для сбора интерфейсов узла сети. (по умолчанию ssh)
--snmp-community SNMP_COMMUNITY
SNMP Community (необязательно)
--cli-protocol {telnet,ssh}
Протокол для выполнения команд узла сети. (по умолчанию ssh)
--name-pattern NAME_PATTERN
Паттерн для имени узлов сети. Если совпадает, то будет импортирован. (необязательно)
--ip-pattern IP_PATTERN
Паттерн для IP узла сети. Если совпадает, то будет импортирован. (необязательно)
--server SERVER URL сервера Zabbix (необязательно)
--user USER Имя пользователя Zabbix (необязательно)
--password PASSWORD Пароль пользователя Zabbix (необязательно)
--debug Выводить дополнительную информацию
--version Show program's version number and exit.
-v {0,1,2,3}, --verbosity {0,1,2,3}
Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output
--settings SETTINGS The Python path to a settings module, e.g. "myproject.settings.main". If this isn't provided, the DJANGO_SETTINGS_MODULE environment variable will be used.
--pythonpath PYTHONPATH
A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".
--traceback Raise on CommandError exceptions.
--no-color Don't colorize the command output.
--force-color Force colorization of the command output.
--skip-checks Skip system checks.
[!NOTE] По умолчанию используются данные авторизации Zabbix хранимые в базе. Указывается через панель администратора:
App settings -> Zabbix API settings
Чтобы не сохранять в базу данных, а только протестировать какие узлы будут учитываться нужно выполнять команды без параметра--save
.
Импорт активных узлов сети из Zabbix группы devs
в новую группу devs
ecstasy,
с указанием группы авторизации creds-1
, а также использование telnet
как способа подключения к оборудованию:
python manage.py import_from_zabbix --save -g devs -a creds-1 --interface-scan=telnet --cli-protocol=telnet
Импорт активных узлов сети из диапазона 172.30.0.0/24
Zabbix группы devs
в новую группу devs
ecstasy,
с указанием группы авторизации creds-1
, а также использование ssh
(По умолчанию SSH)
как способа подключения к оборудованию:
python manage.py import_from_zabbix --save -g devs -a creds-1 --ip-pattern='172\.30\.0\.\d+'
python manage.py graph_models -a --rankdir LR --dot -g -o ./docs/models.dot
dot -Tsvg ./docs/models.dot -o ./docs/models.svg