С чего все начиналось


У части наших клиентов установлены VoIP-шлюзы Linksys (Cisco) SPA8000. Неплохие по-своему железки, несмотря на некоторые странности, например, прибитый гвоздями NAT на slave-портах и странное поведение в некоторых ситуациях. Все хотелось наложить на них свои потные ручонки и замониторить по самое немогу. Но вот беда: мониторинг у них предельно бедный — только web-интерфейс для визуальной оценки творящегося там беспредела да внешний Syslog-сервер, на который не сильно-то много и сыпется: данные о статусе регистрации разве. В общем, неприступная такая железочка, суровая, как монголо-татарское иго. В итоге, было решено применить обходной маневр и схватить противника за… web-интерфейс. Что из этого получилось – читайте дальше.

Что берем?


Так как мне чужого не надо, а свое – не отдадим, не будем разгребать все тонны информации, которая есть в веб-интерфейсе. Хватит только статусов регистрации линий и немного общих показателей — надо же из чего-то красивые графики рисовать. Путем анализа страницы info были выбраны следующие показатели:

# Hostname шлюза. Его же надо как-то называть.
spa8000.name = SPA8000
# Серийный номер. Это больше для инвентаризации.
spa8000.serial = CFH01N704858
# Версия ПО.
spa8000.software = 6.1.12(XU)
# Версия платы, насколько я понимаю.
spa8000.hardware = 1.0.0
# MAC-адрес сетевого интерфейса. Без него никуда.
spa8000.mac = D0C789784BE4
# Есть ли сертификат.
spa8000.cert = Installed
# Открыт ли шлюз для изменения конфигурации.
spa8000.customization = Open
 
# Время и аптайм. Не забывайте про NTP, товарищи.
spa8000.time = 1/12/2003 14:15:42
spa8000.system.uptime = 11 days and 02:15:42
 
# Средства для рисования красивых графиков, разнообразные счетчики
# сообщений, пакетов и байт.
spa8000.rtp.packets.sent = 3463097
spa8000.rtp.bytes.sent = 646834968
spa8000.rtp.packets.recv = 3435569
spa8000.rtp.bytes.recv = 641524220
 
spa8000.sip.msg.sent = 76279
spa8000.sip.bytes.sent = 36830167
spa8000.sip.msg.recv = 73969
spa8000.sip.bytes.recv = 30078139
 
# Autodiscovery линии.
# Статус линии.
spa8000.line{#LINE}.hook.state = On
# Статус регистрации линии.
spa8000.line{#LINE}.reg.state = Registered
# Дата и время последней регистрации.
spa8000.line{#LINE}.reg.time = 1/12/2003 14:08:01
# Количество секунд до перерегистрации.
spa8000.line{#LINE}.reg.next = 1321 s
# Состояние уведомления о голосовой почте.
spa8000.line{#LINE}.mvi = No
# Состояние уведомления о callback.
spa8000.line{#LINE}.callback = No
# Последний номер, на который звонили с этой линии.
spa8000.line{#LINE}.last.called = 8965ХХХХХХХ
# Последний номер с которого звонили на линию.
spa8000.line{#LINE}.last.caller = +7911ХХХХХХХ

Так как линии транков на SPA не настраивались, то и забор данных по ним не делался.

Как берем?


Все вышеперечисленные данные предполагалось извлекать из web-интерфейса путем его прямого запроса скриптом и последующего парсинга. Так как нет возможности контролировать, с какой периодичностью Zabbix будет опрашивать web-интерфейс (вдруг гений коллег решит, что опрашивать интерфейс раз в пять секунд – это очень весело), а тот, как известно, у SPA очень нетороплив, то было решено ввести в скрипт простенькую кэширующую систему, запрашивающую интерфейс не чаще одного раза в 30 секунд. Сам кэш представляет собой обычный CSV-файл, который лежит в папке /tmp и содержит в себе данные в следующем формате:

"info","SPA8000","CFH01N704858","6.1.12(XU)","1.0.0","D0C789784BE4","Installed","Open","1/12/2003 14:15:42","11 days and 02:15:42",3463097,646834968,3435569,641524220,76279,36830167,73969,30078139
"line1","On","Registered","1/12/2003 14:08:01",1321,"No","No","8965ХХХХХХХ","+7911ХХХХХХХ"
"line2",
. . .

Первое поле в каждой строке – это идентификатор строки кэша. В первой строке располагается общая информация, во второй и последующих — информация по всем линиям по порядку.

Так как это первый вариант скрипта, то он не поддерживает авторизацию, но добавить ее, если надо, будет несложно. При запуске скрипта без параметров получается autodiscovery для линий. Если требуется конкретное значение параметра, то скрипт вызывается в формате zabbix_spa8000.py $1 $2, где $1 – это группа данных которые запрашиваются, первое значение в строке кэша, $2 – конкретное значение, которое надо получить.

zabbix_spa8000.py
#!/usr/bin/python
# Get Cisco SPA status for Zabbix.
 
# codecs импортируется, если происходит отладка скрипта с открытием локального Файла.
#import codecs
import csv
import datetime
import os.path
import re
import sys
import tempfile
import time
import urllib
 
 
# Ссылка на интерфейс.
url = 'http://<web_interface_addr>/voice/'
# Путь до файла кэша.
temp = tempfile.gettempdir()
base = temp + '/spa.csv'
 
# Генератор кэша.
# Если файл кэша не существует или старее 30 секунд, то получаем данные из web-интерфейса.
# Кэш проверяется и создается всегда самым первым, потому что все данные возвращаются
# на основе выборок из файла кэша, то есть напрямую со страницы данные читаются только
# в кэш.
if(not(os.path.exists(base)) or ((int(time.time()) - os.path.getmtime(base)) > 30)):
	# Читаем HTML страницу.
	html = urllib.urlopen(url).read()
	# Отладочная секция - читает файл с диска.
	#f = codecs.open("text.html", 'r', "utf-8")
	#html = f.read()
	#f.close()
 
	# Нормализуем и парсим HTML.
	# Приводим текст к одной строке.
	html = re.sub(r"\n+", " ", html)
	# Убираем пробелы между тегами.
	html = re.sub(r">\s+<", "><", html)
	# Страница очень длинная - там все вкладки интерфейса. Чтобы уменьшить вероятность
	# выборки не того отрезаем нужный нам кусок страницы.
	html = re.search(r"</COLGROUP>.+?Trunk", html).group(0)
	# Получаем количество линий.
	count  = len(re.findall(r"<td[^>]+><font[^>]+>Line\s(\d+)\sStatus</font>",html))
	# Извлекаем все данные вперемешку. Так как в HTML формат всех полей с данными
	# одинаковый, то просто ищем все совпавшие кусочки данных и считаем их по
	# умолчанию значениями. дальше разберутся.
	data = re.findall(r"<td>([^<:>]+):.+?<font[^>]+>([^<]*)</font>",html)
 
	# Создаем CSV файл.
	number = 0
	rows = []
 
	# Создаем заголовки строк.
	rows.append(['info'])
	count += 1
	for i in range (1, count):
		rows.append(['line' + str(i)])
	count -= 1
 
	# Заполняем строки. Выбираем из собранных данных все по одному и внимательно
	# присматриваемся. Так как данные лежат в массиве в том порядке, в котором
	# они отображаются на странице, то можем считать, что все значения до определенного
	# относятся к общей информации, а все что дальше, относится к линиям. Так все и устроено
	# первое значение каждой линии - это Hook State. Все что находится до первого такого значения
	# относится к общей информации, все что после - к линиям.
 
	# Цикл по извлеченным данным.
	for entry in data:
		# Значение, по которому разделяются данные общей информации и линий.
		if(entry[0] == 'Hook State'):
			number += 1
		# Обрабатываем все нужные данные, кроме всяких Call 1 Forward и иже с ними.
		if(not(re.match(r'Call\s\d+\s', entry[0]))):
			value = entry[1]
			# Преобразуем время в соответствующих полях. В Zabbix время уходит в виде unixtime.
			if(((entry[0] == 'Current Time') or (entry[0] == 'Last Registration At')) and (value)): # 1/13/2003 14:03:52
				if(value != '0/0/0 00:00:00'):
					value = int(time.mktime(datetime.datetime.strptime(entry[1], "%m/%d/%Y %H:%M:%S").timetuple()))
				else:
					value = 0
			# Извлекаем количество секунд.
			if((entry[0] == 'Next Registration In') and (value)): # 1263 s
				value = int(entry[1].split()[0])
			# Сохраняем значение в соответствующей строке массива.
			rows[number].extend([value])
 
	# Сохраняем кэш.
	with open(base, 'w') as csvfile:
		writer = csv.writer(csvfile)
		writer.writerows(rows)
		csvfile.close()
 
# Ну вот, кэш сохранен, можно теперь его использовать для вывода данных. Проверяем
# наличие параметров. Если они переданы, значит мы хотим чего-то конкретного. 
if(len(sys.argv) > 1):
 
	# Открываем файл кэша и ищем строку, которую мы запрашиваем первым параметром.
	with open(base, 'rb') as csvfile:
		reader = csv.reader(csvfile)
		for row in reader:
			# TODO: Прерывание цикла, если строка нашлась.
			if(row[0] == sys.argv[1]):
				line = row
		csvfile.close()
 
	# Проверяем, что запрошенная строка вообще есть в кэше.
	if('line' in locals()):
		# Определяем, что у нас спрашивают вторым параметром, и что вообще возвращать.
		# Блок общей информации.
		if(line[0] == 'info'):
			try:
				print({
					'name': line[1],
					'serial': line[2],
					'software': line[3],
					'hardware': line[4],
					'mac': line[5],
					'cert': line[6],
					'customization': line[7],
					'time': line[8],
					'uptime': line[9],
					'rtp.packets.sent': line[10],
					'rtp.bytes.sent': line[11],
					'rtp.packets.recv': line[12],
					'rtp.bytes.recv': line[13],
					'sip.msg.sent': line[14],
					'sip.bytes.sent': line[15],
					'sip.msg.recv': line[16],
					'sip.bytes.recv': line[17]
				}.get(sys.argv[2]))
			# Если запрошенного поля не нашлось, так и говорим.
			except IndexError as e:
				print('ZBX_UNSUPPORTED')
		# Блок линий.
		else:
			try:
				print({
					'hook.state': line[1],
					'reg.state': line[2],
					'reg.time': line[3],
					'reg.next': line[4],
					'mvi': line[5],
					'callback': line[6],
					'last.called': line[7],
					'last.caller': line[8],
				}.get(sys.argv[2]))
			except IndexError as e:
				print('ZBX_UNSUPPORTED')
	# Если запрашиваемая строка не нашлась в кэше, то тоже возвращаем ошибку.
	# Это позволяет не смущать Zabbix пустым результатом.
	else:
		print('ZBX_UNSUPPORTED')
else:
# Получаем autodiscovery для линий.
	# Выходная строка.
	s = ""
 
	# Открываем файл кэша и читаем его, формируя выходную строку.
	with open(base, 'rb') as csvfile:
		reader = csv.reader(csvfile)
		for row in reader:
			# Проставляем разделители.
			if(len(s) > 0):
				s = s + ","
			# Формируем JSON строку вручную.
			if(row[0] != 'info'):
				s = s + '{"{#LINE}":"' + str(row[0]) + '"}'
		csvfile.close()
	# Выводим сформированную строку.
	print('{"data":[' + s + ']}')
 
# Завершаем работу скрипта.
quit()


Скрипт надо положить в /share/zabbix/externalscripts. Если такой папки нет, надо ее создать и дать доступ пользователю Zabbix в нее.

Делаем скрипт исполняемым.

sudo chmod +x /share/zabbix/externalscripts/zabbix_spa8000.py

Тестируем правильность работы Autodiscovery.

/share/zabbix/externalscripts/zabbix_spa8000.py

Если все правильно на выходе получим примерно это:

{"data":[{"{#LINE}":"line1"},{"{#LINE}":"line2"},{"{#LINE}":"line3"},{"{#LINE}":"line4"},{"{#LINE}":"line5"},{"{#LINE}":"line6"},{"{#LINE}":"line7"},{"{#LINE}":"line8"}]}


Тестируем правильность передачи значений параметров.

/share/zabbix/externalscripts/zabbix_spa8000.py info serial

Если все правильно на выходе получим примерно это:

CFH01N704858

Добавляем в Zabbix UserParameter для получения данных агентом.

/etc/zabbix_agentd.conf.d/spa8000.conf
UserParameter=spa[*],/share/zabbix/externalscripts/zabbix_spa.py $1 $2
UserParameter=spa.lines,/share/zabbix/externalscripts/zabbix_spa.py

Перезагружаем Zabbix-агент.

sudo service zabbix-agent restart

Проверяем, что Zabbix-агент может получать данные скрипта.

zabbix_agentd -t spa.lines
spa.lines                                 [t|{"data":[{"{#LINE}":"line1"},{"{#LINE}":"line2"},{"{#LINE}":"line3"},{"{#LINE}":"line4"},{"{#LINE}":"line5"},{"{#LINE}":"line6"},{"{#LINE}":"line7"},{"{#LINE}":"line8"}]}]
zabbix_agentd -t spa[info,serial]
spa[info,serial]                          [t|CFH01N70
4858]


Куда кладем?


Шаблон для Zabbix-сервера. Присоединяется к тому узлу, откуда есть доступ к web-интерфейсу SPA.

Шаблон для Zabbix-сервера
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
    <version>3.0</version>
    <date>2016-09-09T11:04:05Z</date>
    <groups>
        <group>
            <name>Шаблоны общие</name>
        </group>
    </groups>
    <templates>
        <template>
            <template>Template_Cisco_Linksys_SPA</template>
            <name>Template Cisco(Linksys) SPA</name>
            <description>Шаблон мониторинга Cisco(Linksys) SPA.</description>
            <groups>
                <group>
                    <name>Шаблоны общие</name>
                </group>
            </groups>
            <applications>
                <application>
                    <name>RTP</name>
                </application>
                <application>
                    <name>SIP</name>
                </application>
                <application>
                    <name>Информация</name>
                </application>
                <application>
                    <name>Линии</name>
                </application>
            </applications>
            <items>
                <item>
                    <name>Сертификат</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,cert]</key>
                    <delay>3600</delay>
                    <history>10</history>
                    <trends>0</trends>
                    <status>0</status>
                    <value_type>4</value_type>
                    <allowed_hosts/>
                    <units/>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Наличие сертификата SPA.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>Информация</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Блокировка</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,customization]</key>
                    <delay>3600</delay>
                    <history>10</history>
                    <trends>0</trends>
                    <status>0</status>
                    <value_type>4</value_type>
                    <allowed_hosts/>
                    <units/>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Блокировка конфигурации SPA от изменения.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>Информация</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Аппаратное обеспечение</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,hardware]</key>
                    <delay>3600</delay>
                    <history>10</history>
                    <trends>0</trends>
                    <status>0</status>
                    <value_type>4</value_type>
                    <allowed_hosts/>
                    <units/>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Версия аппаратного обеспечения SPA.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>Информация</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>MAC-адрес</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,mac]</key>
                    <delay>3600</delay>
                    <history>10</history>
                    <trends>0</trends>
                    <status>0</status>
                    <value_type>4</value_type>
                    <allowed_hosts/>
                    <units/>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>МАС-адрес SPA.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>Информация</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Имя</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,name]</key>
                    <delay>3600</delay>
                    <history>10</history>
                    <trends>0</trends>
                    <status>0</status>
                    <value_type>4</value_type>
                    <allowed_hosts/>
                    <units/>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Hostname SPA.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>Информация</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Получено байт RTP</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,rtp.bytes.recv]</key>
                    <delay>30</delay>
                    <history>30</history>
                    <trends>60</trends>
                    <status>0</status>
                    <value_type>3</value_type>
                    <allowed_hosts/>
                    <units>B</units>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Количество полученных байт RTP.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>RTP</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Отправлено байт RTP</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,rtp.bytes.sent]</key>
                    <delay>30</delay>
                    <history>30</history>
                    <trends>60</trends>
                    <status>0</status>
                    <value_type>3</value_type>
                    <allowed_hosts/>
                    <units>B</units>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Количество отправленных байт RTP.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>RTP</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Получено пакетов RTP</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,rtp.packets.recv]</key>
                    <delay>30</delay>
                    <history>30</history>
                    <trends>60</trends>
                    <status>0</status>
                    <value_type>3</value_type>
                    <allowed_hosts/>
                    <units/>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Количество полученных пакетов RTP.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>RTP</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Отправлено пакетов RTP</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,rtp.packets.sent]</key>
                    <delay>30</delay>
                    <history>30</history>
                    <trends>60</trends>
                    <status>0</status>
                    <value_type>3</value_type>
                    <allowed_hosts/>
                    <units/>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Количество отправленных пакетов RTP.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>RTP</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Серийный номер</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,serial]</key>
                    <delay>3600</delay>
                    <history>10</history>
                    <trends>0</trends>
                    <status>0</status>
                    <value_type>4</value_type>
                    <allowed_hosts/>
                    <units/>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Серийный номер SPA.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>Информация</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Получено байт SIP</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,sip.bytes.recv]</key>
                    <delay>30</delay>
                    <history>30</history>
                    <trends>60</trends>
                    <status>0</status>
                    <value_type>3</value_type>
                    <allowed_hosts/>
                    <units>B</units>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Количество полученных байт SIP.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>SIP</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Отправлено байт SIP</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,sip.bytes.sent]</key>
                    <delay>30</delay>
                    <history>30</history>
                    <trends>60</trends>
                    <status>0</status>
                    <value_type>3</value_type>
                    <allowed_hosts/>
                    <units>B</units>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Количество отправленных байт SIP.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>SIP</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Получено сообщений SIP</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,sip.msg.recv]</key>
                    <delay>30</delay>
                    <history>30</history>
                    <trends>60</trends>
                    <status>0</status>
                    <value_type>3</value_type>
                    <allowed_hosts/>
                    <units/>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Количество полученных сообщений SIP.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>SIP</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Отправлено сообщений SIP</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,sip.msg.sent]</key>
                    <delay>30</delay>
                    <history>30</history>
                    <trends>60</trends>
                    <status>0</status>
                    <value_type>3</value_type>
                    <allowed_hosts/>
                    <units/>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Количество отправленных сообщений SIP.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>SIP</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Программное обеспечение</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,software]</key>
                    <delay>3600</delay>
                    <history>10</history>
                    <trends>0</trends>
                    <status>0</status>
                    <value_type>4</value_type>
                    <allowed_hosts/>
                    <units/>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Версия программного обеспечения SPA.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>Информация</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Локальное время</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,time]</key>
                    <delay>60</delay>
                    <history>30</history>
                    <trends>60</trends>
                    <status>0</status>
                    <value_type>3</value_type>
                    <allowed_hosts/>
                    <units>unixtime</units>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Локальное время SPA.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>Информация</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
                <item>
                    <name>Аптайм</name>
                    <type>0</type>
                    <snmp_community/>
                    <multiplier>0</multiplier>
                    <snmp_oid/>
                    <key>spa[info,uptime]</key>
                    <delay>60</delay>
                    <history>30</history>
                    <trends>60</trends>
                    <status>0</status>
                    <value_type>3</value_type>
                    <allowed_hosts/>
                    <units>uptime</units>
                    <delta>0</delta>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <formula>1</formula>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <data_type>0</data_type>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <description>Время непрерывной работы SPA.</description>
                    <inventory_link>0</inventory_link>
                    <applications>
                        <application>
                            <name>Информация</name>
                        </application>
                    </applications>
                    <valuemap/>
                    <logtimefmt/>
                </item>
            </items>
            <discovery_rules>
                <discovery_rule>
                    <name>Линии</name>
                    <type>0</type>
                    <snmp_community/>
                    <snmp_oid/>
                    <key>spa.lines</key>
                    <delay>3600</delay>
                    <status>0</status>
                    <allowed_hosts/>
                    <snmpv3_contextname/>
                    <snmpv3_securityname/>
                    <snmpv3_securitylevel>0</snmpv3_securitylevel>
                    <snmpv3_authprotocol>0</snmpv3_authprotocol>
                    <snmpv3_authpassphrase/>
                    <snmpv3_privprotocol>0</snmpv3_privprotocol>
                    <snmpv3_privpassphrase/>
                    <delay_flex/>
                    <params/>
                    <ipmi_sensor/>
                    <authtype>0</authtype>
                    <username/>
                    <password/>
                    <publickey/>
                    <privatekey/>
                    <port/>
                    <filter>
                        <evaltype>0</evaltype>
                        <formula/>
                        <conditions/>
                    </filter>
                    <lifetime>30</lifetime>
                    <description>Линии SPA.</description>
                    <item_prototypes>
                        <item_prototype>
                            <name>Статус callback линии {#LINE}</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>spa[{#LINE},callback]</key>
                            <delay>30</delay>
                            <history>10</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>4</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>0</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description>Статус callback линии {#LINE}.</description>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Линии</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <application_prototypes/>
                        </item_prototype>
                        <item_prototype>
                            <name>Статус Hook линии {#LINE}</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>spa[{#LINE},hook.state]</key>
                            <delay>30</delay>
                            <history>10</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>4</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>0</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description>Статус Hook линии {#LINE}.</description>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Линии</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <application_prototypes/>
                        </item_prototype>
                        <item_prototype>
                            <name>Последний исходящий с линии {#LINE}</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>spa[{#LINE},last.called]</key>
                            <delay>30</delay>
                            <history>5</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>4</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>0</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description>Последний исходящий с линии {#LINE}.</description>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Линии</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <application_prototypes/>
                        </item_prototype>
                        <item_prototype>
                            <name>Последний входящий на линию {#LINE}</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>spa[{#LINE},last.caller]</key>
                            <delay>30</delay>
                            <history>5</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>4</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>0</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description>Последний входящий на линию {#LINE}.</description>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Линии</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <application_prototypes/>
                        </item_prototype>
                        <item_prototype>
                            <name>Статус MVI линии {#LINE}</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>spa[{#LINE},mvi]</key>
                            <delay>30</delay>
                            <history>10</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>4</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>0</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description>Статус MVI линии {#LINE}.</description>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Линии</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <application_prototypes/>
                        </item_prototype>
                        <item_prototype>
                            <name>Интервал регистрации линии {#LINE}</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>spa[{#LINE},reg.next]</key>
                            <delay>30</delay>
                            <history>30</history>
                            <trends>60</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units>uptime</units>
                            <delta>0</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description>Время до следующей регистрации линии {#LINE}.</description>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Линии</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <application_prototypes/>
                        </item_prototype>
                        <item_prototype>
                            <name>Статус регистрации линии {#LINE}</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>spa[{#LINE},reg.state]</key>
                            <delay>30</delay>
                            <history>10</history>
                            <trends>0</trends>
                            <status>0</status>
                            <value_type>4</value_type>
                            <allowed_hosts/>
                            <units/>
                            <delta>0</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description>Статус регистрации линии {#LINE}.</description>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Линии</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <application_prototypes/>
                        </item_prototype>
                        <item_prototype>
                            <name>Локальное время регистрации линии {#LINE}</name>
                            <type>0</type>
                            <snmp_community/>
                            <multiplier>0</multiplier>
                            <snmp_oid/>
                            <key>spa[{#LINE},reg.time]</key>
                            <delay>30</delay>
                            <history>30</history>
                            <trends>60</trends>
                            <status>0</status>
                            <value_type>3</value_type>
                            <allowed_hosts/>
                            <units>unixtime</units>
                            <delta>0</delta>
                            <snmpv3_contextname/>
                            <snmpv3_securityname/>
                            <snmpv3_securitylevel>0</snmpv3_securitylevel>
                            <snmpv3_authprotocol>0</snmpv3_authprotocol>
                            <snmpv3_authpassphrase/>
                            <snmpv3_privprotocol>0</snmpv3_privprotocol>
                            <snmpv3_privpassphrase/>
                            <formula>1</formula>
                            <delay_flex/>
                            <params/>
                            <ipmi_sensor/>
                            <data_type>0</data_type>
                            <authtype>0</authtype>
                            <username/>
                            <password/>
                            <publickey/>
                            <privatekey/>
                            <port/>
                            <description>Локальное время регистрации линии {#LINE}.</description>
                            <inventory_link>0</inventory_link>
                            <applications>
                                <application>
                                    <name>Линии</name>
                                </application>
                            </applications>
                            <valuemap/>
                            <logtimefmt/>
                            <application_prototypes/>
                        </item_prototype>
                    </item_prototypes>
                    <trigger_prototypes>
                        <trigger_prototype>
                            <expression>{Template_Cisco_Linksys_SPA:spa[{#LINE},reg.state].count(#2,Registered,eq,0)}<2</expression>
                            <name>Ошибка регистрации линии {#LINE}</name>
                            <url/>
                            <status>0</status>
                            <priority>4</priority>
                            <description>Линия {#LINE} не может зарегистрироваться в течение 1 минуты.</description>
                            <type>0</type>
                            <dependencies/>
                        </trigger_prototype>
                    </trigger_prototypes>
                    <graph_prototypes/>
                    <host_prototypes/>
                </discovery_rule>
            </discovery_rules>
            <macros/>
            <templates/>
            <screens/>
        </template>
    </templates>
    <triggers>
        <trigger>
            <expression>{Template_Cisco_Linksys_SPA:spa[info,uptime].last()}<180</expression>
            <name>SPA перезагружен</name>
            <url/>
            <status>0</status>
            <priority>2</priority>
            <description>Время работы SPA менее 3 минут.</description>
            <type>0</type>
            <dependencies/>
        </trigger>
    </triggers>
</zabbix_export>


Что в итоге?


Zabbix в очередной раз подтверждает, что при прямых руках можно мониторить все, что угодно, и к любой железке есть подход. Достаточно просто взглянуть на нее под нестандартным углом. И знание программирования хотя бы на базовом уровне существенно расширяет не только возможности мониторинга, но и доступный инструментарий системного администратора.

P.S. Надеюсь, кому-нибудь пригодится. Буду рад вашим комментариям.
Поделиться с друзьями
-->

Комментарии (7)


  1. sanhces7
    07.06.2017 11:28

    Вот это правильный путь самурая. Спасибо за статью!


    1. binfini
      07.06.2017 22:28

      Yahari


  1. Faight
    07.06.2017 22:00

    Интересная статья, спасибо за пример.

    Что на мой взгляд еще необходимо:
    1) авторизация на веб-интерфейсе.
    2) автообнаружение в сети шлюзов ( у них есть уникальный снмп?)
    3) после обнаружения, цепляем к ним этот шаблон + переменную ip адреса или имени передаем в external check.
    4) автообнаружение только линий со статусом «On»

    Я у себя использую порядка 12 подобных устройств, возможно прикручу к ним подобный мониторинг.


    1. binfini
      08.06.2017 00:07

      Отвечу по пунктам:
      1) Да, согласен, в моем случае не потребовалось, но делается достаточно просто. Насколько помню, там стандартная HTTP-авторизация.
      2) Нет, иначе бы этой статьи не было. У этих железок (по-крайней мере SPA8000) вообще нет SNMP. Я мог бы предложить опознавать по какому-нибудь уникальному значению, которое передается на странице авторизации, но не факт, что оно есть. Если найдёте параметр для автообнаружения, напишите сюда, буду признателен.
      3) Соответственно это тоже выполнимо только при найденном способе autodiscovery.
      4) Да, можно и так, но так не понять общего количества линий.


      1. Faight
        10.06.2017 23:27

        2) Я думал над обнаружением через отдельный скрипт (поиск в dhcp, например, по имени/маку) и скармливать хосты через zabbix_send. Но, во-первых, мы от них постепенно отказываемся, во-вторых, большой необходимости в мониторинге этих устройств я пока не вижу ( данные о регистрациях собираю на АТС).

        4) В дискавери можно возвращать несколько параметров, не только Line — имя линии, но и ее состояние. А потом по этому состоянию сделать фильтр регулярным выражением на вкладке фильтры.

        Я подумываю написать статью о мониторинге OSPF в микротиках/cisco с помощью внешних скриптов, но очень сложно найти свободное время.


  1. skeletor
    07.06.2017 22:24

    Я так и не понял, что именно (up/down, графики, busy/online,...) вы мониторите в заббиксе?


    1. binfini
      07.06.2017 22:25

      Up/down, плюс иногда графики загрузки канала, если жалуются на плохую связь.