Однажды после перезапуска Ubuntu сервера, из-за долгого запуска большого количества сетевых интерфейсов, мой скрипт который увеличивал значения буферов, а также выполнял другие настройки, выполнился раньше времени, соответственно изменения не применились и об этой проблеме я узнал только через сутки, поэтому я решил мониторить текущие значения RX и TX буферов.
Допустим, если выполнить команду:
ethtool -g ens2f1
Мы увидим:
Ring parameters for ens2f1:
Pre-set maximums:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Current hardware settings:
RX: 4096
RX Mini: 0
RX Jumbo: 0
TX: 4096
Получается нам нужны 8 и 11 строки, а также нужно удалить ненужные символы, чтобы получить только числа, подумав несколько минут я придумал такое:
ethtool -g ens2f1 | awk '(NR == 8)' | sed -r 's/^.{5}//'
ethtool -g ens2f1 | awk '(NR == 11)' | sed -r 's/^.{5}//'
Первая команда отображает текущее значение RX буфера, а вторая TX.
Соответственно в конфгурации Zabbix агента я их указал так:
UserParameter=current_ens2f1_rx_buffer,ethtool -g ens2f1 | awk '(NR == 8)' | sed -r 's/^.{5}//'
UserParameter=current_ens2f1_tx_buffer,ethtool -g ens2f1 | awk '(NR == 11)' | sed -r 's/^.{5}//'
На Zabbix сервере в своем шаблоне я добавил Zabbix элементы данных с ключами current_ens2f1_rx_buffer и current_ens2f1_tx_buffer, а также создал триггеры, например с выражением:
{MyTemplate:current_ens1f0_tx_buffer.last(0)}<>4096
Соответственно триггер сработает когда значение не будет равно 4096.
Приведу еще пример:
ethtool -l ens2d1
Channel parameters for ens2d1:
Pre-set maximums:
RX: 28
TX: 28
Other: 0
Combined: 0
Current hardware settings:
RX: 16
TX: 28
Other: 0
Combined: 0
ethtool -l ens2d1 | awk '(NR == 8)' | sed -r 's/^.{5}//'
16
ethtool -l ens2d1 | awk '(NR == 9)' | sed -r 's/^.{5}//'
28
Смотрите также мою статью:
Изменение TX и RX буферов сетевых интерфейсов в Linux