В этой статье я приведу пример добавления BDCOM-P3310C и BDCOM-P3310B в биллинговую систему ABillS на операционной системе Ubuntu Server 16.04.
BDCOM OLT должен быть добавлен через меню «Обслуживание» — «Оборудование», после чего в меню «Настройка» — «Сервер доступа» можно редактировать пароль доступа (который должен быть одинаковым для SNMP и telnet), посмотреть статистику устройства можно в «Обслуживание» — «Оборудование» — «PON».
Чтобы рисовались графики установим необходимые компоненты и RRD::Simple:
apt-get install -yq cpanminus build-essential librrdtool-oo-perl rrdtool librrds-perl
cpanm RRDTool::OO
Посмотреть установленную версию можно так:
cpan -D RRDTool::OO
Чтобы собирались данные, добавим в /etc/crontab:
# Every 5m
*/5 * * * * root /usr/abills/libexec/billd equipment_pon
Если необходимо выполнять скрипт реже, например каждые 10 минут, то:
# Every 10m
*/10 * * * * root /usr/abills/libexec/billd equipment_pon STEP=600
Или раз в сутки в 3:55 ночи:
55 3 * * * root /usr/abills/libexec/billd equipment_pon STEP=86400
Чтобы cron не слал вывод команды на email, можно добавить в конце команды:
> /dev/null 2>&1
Или чтобы писать дебаг лог:
DEBUG=5 >/tmp/graph.log 2>&1
В случае проблем, запустим с DEBUG 1-7:
/usr/abills/libexec/billd equipment_pon DEBUG=1
Замечу что данные на графике начинают рисоваться после второго-третьего выполнения equipment_pon и если вы меняли STEP, то лучше удалить старые rrd файлы.
Чтобы стереть старые данные из базы и нановово внести ONU:
/usr/abills/libexec/billd equipment_pon RELOAD=1
Если в OLT была добавлена PON плата, то ее нужно добавить в биллинг с использованием RELOAD=1:
/usr/abills/libexec/billd equipment_pon NAS_IDS=55 RELOAD=1 SKIP_RRD=1 TRANSACTION=1
При большом количестве ONU для записи rrd файлов необходимо использовать отдельный диск либо например raid10 из ssd. У меня при количестве rrd файлов более 7000 и размере 700 Мб, это около 3000 ONU), equipment_pon выполнялся около 10 минут (это нормально), а вот при записи rrd файлов SSD диск сватал в ступор на 10+ секунд, из-за чего тоже база не отвечала, по этому нужно выполнять equipment_pon с низким приоритетом диска и cpu, например:
55 3 * * * root nice -n 19 ionice -c2 -n7 /usr/abills/libexec/billd equipment_pon STEP=86400 >/dev/null 2>&1
Посмотреть количество файлов и их размер можно например так:
ls -f /usr/abills/var/db/rrd/ | wc -l
du -h -s /usr/abills/var/db/rrd/
Пример просмотра и очистки записей через базу:
SELECT * FROM equipment_pon_onu LIMIT 50
SELECT * FROM equipment_pon_onu ORDER BY datetime DESC LIMIT 50
TRUNCATE TABLE equipment_pon_onu;
TRUNCATE TABLE equipment_pon_ports;
Чтобы собирались данные но не рисовались графики добавим:
SKIP_RRD=1
Можно указать конкретные OLT (сервера доступа), по умолчанию все данные собираются со всех:
NAS_IDS='1;2;5;7'
Для поиска и оповещения о дублирующихся ONT можно добавить в cron:
/usr/abills/libexec/billd equipment_pon SERIAL_SCAN=1
На странице услуги клиента выбираем через поиск BDCOM OLT как сервер доступа, выбираем через поиск порт (onu), например находим по описанию (у меня все ONT подписаны в конфигурации BDCOM и эти описания подтягиваются по SNMP в ABillS)
Готово, теперь на странице клиента можно увидеть статус ethernet порта ONT, уровень сигнала и прочую информацию.
Для одного из OLT скрипт equipment_pon не заносил epon порты в базу данных, поэтому я добавил их вручную:
snmpwalk -v2c -c public 192.168.2.2 .1.3.6.1.2.1.2.2.1.2
INSERT INTO equipment_pon_ports VALUES ('37','7','9','epon','0/1','EPON0/1','0');
INSERT INTO equipment_pon_ports VALUES ('38','8','9','epon','0/2','EPON0/2','0');
INSERT INTO equipment_pon_ports VALUES ('39','9','9','epon','0/3','EPON0/3','0');
INSERT INTO equipment_pon_ports VALUES ('40','10','9','epon','0/4','EPON0/4','0');
Удалить если что можно так:
DELETE FROM equipment_pon_ports WHERE id=37;
Еще пример ручного добавления портов Huawei MA5683T OLT:
INSERT INTO equipment_pon_ports (snmp_id, nas_id, pon_type, branch, branch_desc, vlan_id)
VALUES ('4194328576', '12', 'gpon', '0/3/0', 'Huawei-MA5600-V800R008-GPON_UN', '0');
INSERT INTO equipment_pon_ports (snmp_id, nas_id, pon_type, branch, branch_desc, vlan_id)
VALUES ('4194328832', '12', 'gpon', '0/3/1', 'Huawei-MA5600-V800R008-GPON_UN', '0');
SNMP шаблон находится в /usr/abills/Abills/modules/Equipment/Bdcom.pm, а equipment_pon.pm в /usr/abills/libexec/billd.plugins/equipment_pon.pm
rrd файлы графиков хранятся в /usr/abills/var/db/rrd/, например формат имени файла NAS-ID_ONU-SNMP-ID_signal.rrd
Однажды один график не рисовался, по этому я убрал его и он создался при следующем выполнении скрипта, и начал рисоваться:
mv /usr/abills/var/db/rrd/12_4194304512.4_signal.rrd /tmp/12_4194304512.4_signal.rrd
Смотрите также мои статьи:
Настройка BDCOM P3310 EPON
Установка и настройка биллинговой системы ABillS