Однажды после перезапуска 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