Skip to main content

netbox-incidents

NetBox Version Python Version License: Apache 2.0

Плагин для NetBox — учёт инцидентов, привязанных к устройствам, интерфейсам, модулям и стойкам. Полностью независим от extras.JournalEntry.

Содержание

Возможности

  • Отдельная модель Incident:
    • Статус (Открыто / Закрыто)
    • Дата начала и окончания
    • Контактное лицо (выбор из tenancy.Contact, опционально фильтруется по группе)
    • Причина (настраиваемый список)
    • Комментарий (поддерживает Markdown, есть шаблон по умолчанию)
  • Привязка к объектам:
    • Device
    • Interface
    • Module
    • Rack
    • Используется Generic Foreign Key — ровно один объект на инцидент.
  • Вкладка «Incidents» на карточках Device / Interface / Module / Rack:
    • Список привязанных инцидентов
    • Форма быстрого добавления нового инцидента
  • Стандартные механизмы NetBox:
    • Список, фильтры, массовое редактирование/удаление
    • Импорт из CSV
    • Построено на NetBoxModelForm, NetBoxModelFilterSet и т.д.
  • Отчёты (xlsx):
    • Период задаётся датами «с» / «по»
    • Общий отчёт — построчный список инцидентов по группам сайтов (место установки, оборудование, начало/конец простоя, причина, контакт, примечание — комментарий инцидента целиком)
    • Детальный отчёт — те же инциденты с группировкой «группа сайтов → причина → тип объекта (Стойка/Устройство/Модуль/Интерфейс)» и подытогами на каждом уровне
    • Статистика — количество и суммарное время простоя по причинам (колонки), в разрезе группы сайтов и типа объекта (строки), с итогами по группе и по всем данным
  • REST API (/api/plugins/incidents/incidents/) — обязателен для самого NetBox (используется системой логирования изменений), также доступен для внешних интеграций.

Скриншоты

  1. Список инцидентов — общий вид таблицы с фильтрами, статусами и причинами. Список инцидентов
  2. Форма создания инцидента — выбор объекта (устройство/интерфейс/модуль/стойка), контактного лица, статуса, причины, дат и комментария. Форма создания инцидента
  3. Страница отчётов — три блока: «Общий отчёт», «Детальный отчёт», «Статистика» с выбором периода. Страница отчётов
  4. Вкладка Incidents на карточке устройства — список инцидентов и форма быстрого добавления. Вкладка Incidents на карточке устройства
  5. Пример общего отчёта (xlsx) — плоская таблица с группировкой по группам сайтов. Пример общего отчёта
  6. Пример детального отчёта (xlsx) — иерархическая группировка с подытогами. Пример детального отчёта
  7. Пример статистики (xlsx) — сводная таблица по причинам и типам объектов. Пример статистики

Требования

  • NetBox >= 4.6.0
  • Python >= 3.10
  • Django (устанавливается вместе с NetBox)
  • openpyxl (для генерации xlsx-отчётов)

Установка

  1. Активируйте виртуальное окружение NetBox:

    source /opt/netbox/venv/bin/activate
    
  2. Установите плагин одним из способов:

    Из исходников:

    pip install /path/to/netbox-incidents
    

    Через local_requirements.txt (рекомендуется для разработки):

    -e /opt/netbox_incidents
    
  3. Установите зависимость openpyxl:

    pip install openpyxl
    
  4. Включите плагин в configuration.py (см. раздел Настройка).

  5. Выполните миграции (см. раздел Миграции).

  6. Перезапустите NetBox и RQ:

    sudo systemctl restart netbox netbox-rq
    

Быстрый деплой (пример):

sudo /opt/netbox/venv/bin/pip install --force-reinstall --no-deps /opt/netbox_incidents
sudo /opt/netbox/venv/bin/pip install openpyxl
sudo chown -R user:user /opt/netbox/venv/lib/python3.12/site-packages/netbox_incidents
sudo systemctl restart netbox netbox-rq

Настройка

В файле configuration.py добавьте плагин в PLUGINS и при необходимости настройте параметры:

PLUGINS = ['netbox_incidents']

PLUGINS_CONFIG = {
    'netbox_incidents': {
        # slug группы Contact (tenancy.Contact), из которой выбирается
        # "Контактное лицо". Оставьте '' — без фильтра, доступны все контакты.
        'contact_group_slug': '',
    }
}

Использование

Создание инцидента

  1. Перейдите в раздел Инциденты в главном меню.
  2. Нажмите Добавить.
  3. Заполните поля:
    • Объект — выберите тип (Устройство, Интерфейс, Модуль, Стойка) и конкретный объект.
    • Контактное лицо — выберите контакт (список может фильтроваться настройкой contact_group_slug).
    • Статус — Открыто / Закрыто.
    • Причина — выберите из списка.
    • Дата начала — обязательное поле.
    • Дата окончания — опционально (для закрытых инцидентов).
    • Комментарий — поддерживает Markdown.
  4. Нажмите Создать или Создать и добавить ещё.

Просмотр инцидентов на объектах

На карточках Device, Interface, Module и Rack появилась вкладка Incidents. Она содержит:

  • Таблицу связанных инцидентов.
  • Форму быстрого добавления нового инцидента (без перехода в общий список).

Список инцидентов

Раздел Инциденты предоставляет:

  • Фильтры по статусу, причине, дате, объекту и т.д.
  • Массовые действия: редактирование, удаление.
  • Экспорт в CSV (стандартный функционал NetBox).
  • Импорт из CSV.

Отчёты

Раздел Отчёты содержит три формы для выгрузки xlsx-файлов:

  1. Общий отчёт

    • Выберите период (даты «с» и «по»).
    • Нажмите Скачать.
    • Файл содержит плоский список инцидентов, сгруппированный по группам сайтов.
    • Колонки: место установки, оборудование, начало простоя, конец простоя, время простоя, причина, кому сообщили, примечание.
  2. Детальный отчёт

    • Выберите период.
    • Нажмите Скачать.
    • Файл содержит иерархическую структуру: группа сайтов → причина → тип объекта (Стойка/Устройство/Модуль/Интерфейс).
    • На каждом уровне выводятся подытоги.
  3. Статистика

    • Выберите период.
    • Нажмите Скачать.
    • Файл содержит сводную таблицу:
      • Строки: группа сайтов + тип объекта.
      • Колонки: причины (количество и общее время простоя).
      • Итоги по группе и общий итог.

REST API

Плагин предоставляет стандартный REST API по адресу:

/api/plugins/incidents/incidents/

Доступны все операции CRUD, фильтрация, пагинация. API используется самим NetBox для логирования изменений, а также может применяться для внешних интеграций.

Разработка

Миграции

В репозитории пока не закоммичены файлы миграций Django — сгенерируйте их в своём dev-окружении перед первым запуском. Рекомендуется закоммитить папку netbox_incidents/migrations/ в репозитории перед публикацией релиза, чтобы конечным пользователям не нужно было включать DEVELOPER = True.

Порядок действий:

  1. Включите режим разработчика:

    cd /opt/netbox
    sudo nano netbox/netbox/settings.py   # или configuration.py: DEVELOPER = True
    
  2. Сгенерируйте миграции:

    sudo -u netbox venv/bin/python3 netbox/manage.py makemigrations netbox_incidents
    
  3. Примените миграции:

    sudo -u netbox venv/bin/python3 netbox/manage.py migrate netbox_incidents
    
  4. Выключите DEVELOPER = False и перезапустите сервисы:

    sudo systemctl restart netbox netbox-rq
    

Тестирование

Для запуска тестов используйте стандартные средства Django:

python manage.py test netbox_incidents

Вклад в развитие

Pull request'ы приветствуются. Пожалуйста, создавайте issue для обсуждения новых функций или сообщений об ошибках.

Лицензия

Apache 2.0

Metadata

Release files for netbox-incidents 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for netbox-incidents 1.0.0
File Size Uploaded
netbox_incidents-1.0.0.tar.gz 34.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for netbox-incidents 1.0.0
File Interpreter ABI Platform
netbox_incidents-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 71.1 kB

Release files / netbox_incidents-1.0.0.tar.gz

Download URL netbox_incidents-1.0.0.tar.gz
Size 34.5 kB
Tags Source
SHA-256 checksum
How to use checksums
21021aa5299734dc071764358895b60beeb7b05eae281e58a84a8b14c863b722
BLAKE2b-256 checksum
How to use checksums
9bb9630b4126d29c114c69cc5c9e277ca68f1f74cd84e394327ab5717e6a662f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.4

Release files / netbox_incidents-1.0.0-py3-none-any.whl

Download URL netbox_incidents-1.0.0-py3-none-any.whl
Size 36.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
db0556a50b842ae5699fefbb04f41c4f67d8f0ff606923b989d3df7a0042bc60
BLAKE2b-256 checksum
How to use checksums
e54e6dfc2f4f8b71e5bd9976cf3b449475fd918dd107e9361c093ee085980d0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.4

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page