Есть мониторилка Cacti, которая снимает показания с интерфейсов на сервере. У сервера подняты vpn тунели tun0 и tap0.
Когда происходит какой то обрыв OpenVPN перезапускает интерфейс (reconnect) и жизнь продолжается, но в этот момент cacti перестает отрисовывать график
Если глянуть в Data Query Debug Information
+ Located input field 'ifName' [walk]
+ Executing SNMP walk for data @ '.1.3.6.1.2.1.31.1.1.1.1'
+ Found item [ifName='lo'] index: 1 [from value]
+ Found item [ifName='eth0'] index: 2 [from value]
+ Found item [ifName='tunl0'] index: 4 [from value]
+ Found item [ifName='tap1'] index: 85 [from value]
+ Found item [ifName='tap0'] index: 86 [from value]
+ Found item [ifName='tun0'] index: 136 [from value]
то можно заметить, что очень большие значения индексов.
Как привели пример тут , значение индекса инкрементируется не зависимо от имени интерфейса
From the Linux kernel (net/core/dev.c):
static int dev_new_index(struct net *net)
{
static int ifindex;
for (;;) {
if (++ifindex <= 0)
ifindex = 1;
if (!__dev_get_by_index(net, ifindex))
return ifindex;
}
}
Так что, побороть увеличение индекса можно патчем ядра 🙂
Я не готов вносить правки в ядро ради пары графиков... значит будем ковырять cacti.
Как оказалось, если задавать для мониторинга интерфейс, то какти смотрит на индекс, а если задавать IP, то индекс игнорируется.
Значит можно малой кровью отделаться.
Заходим в Data Sources
Выбираем наш интерфейс
в Custom Data есть такое
Меняем на:
Ждем несколько минут и тестируем )
У меня заработало.