вторник, 24 мая 2016 г.

Мониторинг уровня RX/TX для оптических портов Huawei

Особенность мониторинга уровня сигнала на коммутаторе Huawei S6300 в том, что значения возвращаются не в привычных нам dbm, а в mW.

Для конвертации используется формула, в которой используются логарифмы. В той версии системы мониторинга Zabbix, которая используется у нас, я не нашел, как указать в формуле логарифм. Поэтому сбором данных с комутаторов будет заниматься внешний скрипт, а результат заливать в Zabbix через zabbix_sender.

Вот, собственно, сам скрипт:

#!/bin/bash

for HUAWEI in sw1 sw15 sw18 sw24; do
  rm -f "/tmp/huawei_rxtx_monitor_${HUAWEI}"
  /usr/bin/snmpwalk -c Secret_Community -v 2c ${HUAWEI} .1.3.6.1.2.1.47.1.1.1.1.7 > /tmp/huawei_rxtx_monitor_${HUAWEI}.txt || exit 1
  if [ -f "/tmp/huawei_rxtx_monitor_${HUAWEI}.txt" ]; then
    for port in $(/bin/sed -nr '/XGigabitEthernet/s/.*\.([0-9]+)\ .*/\1/gp' /tmp/huawei_rxtx_monitor_${HUAWEI}.txt); do
      RX=$(echo "(l($(/usr/bin/snmpget -Oqav -c Secret_Community -v 2c ${HUAWEI} .1.3.6.1.4.1.2011.5.25.31.1.1.3.1.8.${port})/1000)/l(10))*10" | /usr/bin/bc -l)
      /usr/bin/zabbix_sender -z zabbix_server_ip -k rxpower[\"${port}\"] -o $RX -s ${HUAWEI} > /dev/null
      TX=$(echo "(l($(/usr/bin/snmpget -Oqav -c Secret_Community -v 2c ${HUAWEI} .1.3.6.1.4.1.2011.5.25.31.1.1.3.1.9.${port})/1000)/l(10))*10" | /usr/bin/bc -l)
      /usr/bin/zabbix_sender -z zabbix_server_ip -k txpower[\"${port}\"] -o $TX -s ${HUAWEI} > /dev/null
    done
  fi
done
Здесь sw1, sw15, sw18, sw24 -- хостнеймы или IP-адреса коммутаторов;
          Secret_Community -- коммьюнити для чтения параметров по snmp;
          zabbix_server_ip -- адрес или хостнейм сервера Zabbix;
          rxpower[\"${port}\"], txpower[\"${port}\"] -- названия элементов в zabbix.

Осталось поместить в cron с требуемой периодичностью.