Oxidized & LibreNMS
Всегда нужно иметь под рукой бекап конфигурации сетевых устройств таких как cisco, mikrotik, edge-core и так далее в этом нам поможет oxidized. Очень много где расписано как установить oxidized и добавлять хосты в файл router.db. Но это не очень удобно в плане если добавляются новые устройства, то их приходится добавлять и в LibreNMS и в oxidized и хочется автоматизировать этот процесс. В этой заметки я опишу как это сделал я.
Подключаемся через ssh к хосту на котором у вас уже установлена LibreNMS или вы решили разместить oxidized на отдельной машине это не важно.
Для начала переводим пользователя в сессию под root-ом
Обновляем все пакеты
Убедимся что репозиторий universe подключен
Устанавливаем необходимые зависимости:
Устанавливаем gems
Далее установим сам Git в котором и будем хранить конфигурации
Процесс желательно запускать под отдельным пользователем, создаем его:
Настраиваем git:
Из-под пользователя запускаем программу первый раз чтобы создались необходимые каталоги и файл конфигурации:
Вводим команду oxidized (несколько раз 3-4) чтоб уж точно все необходимое добавилось
Далее выходим обратно в root командой exit и переходим к редактированию файла config
Базовый конфиг
username: username
password: Pa$$w0rd
model: os
resolve_dns: true
interval: 120
use_syslog: false
debug: false
threads: 30
timeout: 140
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 127.0.0.1:8888
next_adds_job: false
vars: {}
groups: {}
models: {}
pid: "/home/oxidized/.config/oxidized/pid"
log: "/home/oxidized/.config/oxidized/log"
crash:
directory: "/home/oxidized/.config/oxidized/crashes"
hostnames: false
stats:
history_size: 10
input:
default: ssh
debug: false
ssh:
secure: false
ftp:
passive: true
utf8_encoded: true
output:
default: git
git:
directory: "/home/oxidized/.config/oxidized/configs"
user: oxidized
email: oxidized@example.com
repo: "/home/oxidized/.config/oxidized/devices.git"
source:
default: http
debug: false
http:
url: http://127.0.0.1/api/v0/oxidized
map:
name: hostname
model: os
group: group
headers:
X-Auth-Token: 'Токен api librenms'
model_map:
juniper: junos
cisco: ios
ubiquiti: edgeos
mikrotik: routeros
eltex-mes23xx: eltex
Токен API получаем в LibreNMS:
Описание наиболее важных переменных:
username: username – имя пользователя по умолчанию, под которым Oxidized бует подключаться к устройствам password: Pa$$w0rd- пароль по умолчанию model: routeros – модель устройства по умолчнию interval: 120 – интервал создания бэкапов в секундах timeout: 140 – тайм-аут подключения (по умолчанию 20), если есть задержки в сети – лучше увеличить remove_secret: true – удаляет секреты (ключи, пароли и прочее), подробнее для каждой из железок тут: https://github.com/ytti/oxidized/tree/master/lib/oxidized/model rest: 127.0.0.1:8888 – адрес и порт веб-сервиса в секции input: значение default: ssh лучше исправить убрав telnet, т.к. это небезопасно в секции output: сохраняем все в git → default: git в секции source: файл с данными о оборудовании default: csv и далее путь до него, разделитель, назначение полей
Настроим Oxidized как службу
Проверим работу службы
● oxidized.service – Oxidized – Network Device Configuration Backup Tool
Loaded: loaded (/usr/lib/systemd/system/oxidized.service; enabled; preset: enabled)
Active: active (running) since Sun 2024-09-29 18:42:14 MSK; 1 day 3h ago
Main PID: 1428 (oxidized)
Tasks: 7 (limit: 4611)
Memory: 89.3M (peak: 108.3M)
CPU: 1min 38.558s
CGroup: /system.slice/oxidized.service
└─1428 “puma 6.4.3 (tcp://127.0.0.1:8888) [/]”Sep 29 18:42:14 nms systemd[1]: Started oxidized.service – Oxidized – Network Device Configuration Backup Tool.
Sep 29 18:42:19 nms oxidized[1428]: Puma starting in single mode…
Sep 29 18:42:19 nms oxidized[1428]: * Puma version: 6.4.3 (ruby 3.2.3-p157) (“The Eagle of Durango”)
Sep 29 18:42:19 nms oxidized[1428]: * Min threads: 0
Sep 29 18:42:19 nms oxidized[1428]: * Max threads: 5
Sep 29 18:42:19 nms oxidized[1428]: * Environment: development
Sep 29 18:42:19 nms oxidized[1428]: * PID: 1428
Sep 29 18:42:20 nms oxidized[1428]: * Listening on http://127.0.0.1:8888
Sep 29 18:42:20 nms oxidized[1428]: Use Ctrl-C to stop
WEB интерфейс oxidized
Добавляем oxidized в LibreNMS
После этого появится дополнительный пункт
Соответственно после добавления нового сетевого устройства в мониторинг оно автомотически будет добавлятся и в oxidized