Смотреть с IP Телефоны 3:49 - 13:51
Телефоны марки Escene ES205
Обзор компактного IP телефона Escene ES205 Авторизация на данном телефоне basic authentication Веб интерфейс Escene ES205
В виде шаблона Шаблон Веб проверок IP телефонов zabbix
Проверяем данные ip телефоны на доступность проверка Web-интерфейса код состояния 200, а так же то что он в статусе зарегистрирован ищем строку Registered1
Если хотя бы одна проверка недоступна определенное время отправляем команду на перезапуск телефона.
Оф. Веб-мониторинг
Создаем Узел телефона в заббиксе
Переходим на вкладку Веб-сценарии > Жмем Создать веб сценарий Указываем
Имя
Интервал обновления
Попыток
Агент
Активировано
Переходим на вкладку
Шаги Жмем Добавить Указываем
Имя Dostupnost Telephone Имя телефона
URL http://Логин:Пароль@IP:Порт/SysStatus.asp
Следовать перенаправлениям V
Время ожидания 40s
Требуемая строка Registered1
Требуемые коды состояния 200
И жмем добавить
Вкладку Аунтификацию в данном случае настраивать не нужно так как мы авторизуемся автоматом по ссылке http://Логин:Пароль@IP:Порт/SysStatus.asp
Жмем добавить сценарий
Идем создавать Триггер
Указываем
Имя NoTel.Имя телефона
Важность Средняя
Выражение Выбираем нашу веб-проверку
{Dostupnost Telephone Имя телефона:web.test.fail[Dostupnost Telephone Имя телефона].min(5m)}>0
Если идет 0 все Хорошо, если летит 1 больше 5 минут, а мы запрашиваем раз в 1 минуту 5 раз выходит и все 5 у нас 1 то это ошибка.
URL http://Логин:Пароль@IP:Порт -будет использоваться макрос {TRIGGER.URL} для автоматического перезапуска!
Описание Телефон недоступен Чей телефон более подробно
Активировано
При необходимости задаем зависимости от других узлов
Добавить
Все Мониторинг телефона настроен!)
Далее делаем полный клон узла и редактируем его под другой телефон проще чем с 0 создавать.
Сделать шаблон не выйдет так как у каждого телефона свой IP ну это еще ладно можно взять макросом но еще у каждого свой порт для веб-интерфейса его надо вручную прописывать. так же не удобство редактировать например время проверки или имя триггера приходилось вручную проходя все узлы.
Если у вас чётко по IP или DNS можно пробовать шаблон сделать.
Можно попробовать сделать веб обнаружение и применять действия.
Ставим браузер командной строки apt-get install links
Переходим к Действиям
Оф. Действия
Настройка > Действия > Триггеры > Создать действия
Имя Телефон перезагрузка bash
Новое условие Имя триггера содержит NoTel (Все триггера по телефонам у нас начинаются с NoTel)
Активировано V
Вкладка Операции
Длительность шага операции по умолчанию 10m
Тема по умолчанию Проблема: {TRIGGER.NAME}
Сообщение по умолчанию
Проблема началась с {EVENT.DATE} в {EVENT.TIME}
Имя проблемы: {TRIGGER.NAME}
Последнее значение: {ITEM.VALUE} {ITEM.LASTVALUE} ({TIME})
Выражение: {TRIGGER.EXPRESSION}
Хост IP (DNS): {HOST.NAME} {HOST.CONN} {IPADDRESS}
Серьезность: {TRIGGER.SEVERITY}
Состояние: {TRIGGER.STATE}
{TRIGGER.URL}
Приостановить операции для подавленных проблем V
Операции Шаги Детали
Жмем Новый
Детали операции Шаги 2 - 2 (0 - бесконечно) 2 значит мы будем использовать ожидание Длительность шага 10м
Длительность шага 0 (0 - использовать умолчание действия)
Тип операции Удаленная команда
Список целей Цель Новый выбираем Узел сети: Zabbix server
Тип SSH
Метод аутентификации Пароль
Имя пользователя задаем ваш логин
Пароль задаем ваш пароль
Порт 22
Команды links {TRIGGER.URL}/RebootHandle.asp
Добавить
Я разделил на 2 операции
Создаем 2 операцию
Жмем Новый
Детали операции Шаги 2 - 2 (0 - бесконечно) 2 значит мы будем использовать ожидание Длительность шага 10м
Длительность шага 0 (0 - использовать умолчание действия)
Тип операции Удаленная команда
Список целей Цель Новый выбираем Узел сети: Zabbix server
Тип Пользовательский скрипт
Выполнять на Zabbix агент
Команды
sleep 5
killall -9 links
exit
Добавить
Добавить
Можно проверять как работает данное правило при срабатывании триггера
Так же было создано действие Ожидание отправки Ошибки телефонов
Условие Тип вычисления И/ИЛИ A and B
A Группа узлов сети равно Telephone/Телефон
B Важность триггеров равно Средняя
Активировано V
Операции
Длительность шага операции по умолчанию 30m
Тема по умолчанию Проблема: {TRIGGER.NAME}
Сообщение по умолчанию
Проблема началась с {EVENT.DATE} в {EVENT.TIME}
Имя проблемы: {TRIGGER.NAME}
Последнее значение: {ITEM.VALUE} {ITEM.LASTVALUE} ({TIME})
Выражение: {TRIGGER.EXPRESSION}
Хост IP (DNS): {HOST.NAME} {HOST.CONN} {IPADDRESS}
Серьезность: {TRIGGER.SEVERITY}
Состояние: {TRIGGER.STATE}
Оригинальный номер ID: {EVENT.ID}
{TRIGGER.URL}
Приостановить операции для подавленных проблем V
Операции Отправить сообщение пользователям: Выбираем кому
Операции восстановления
Тема по умолчанию Решенный: {TRIGGER.NAME}
Сообщение по умолчанию
Проблема была решена на {EVENT.RECOVERY.DATE} в {EVENT.RECOVERY.TIME}
Имя триггера: {TRIGGER.NAME}
Последнее значение: {ITEM.VALUE} {ITEM.LASTVALUE} ({TIME})
Выражение: {TRIGGER.EXPRESSION}
Хост IP (DNS): {HOST.NAME} {HOST.CONN} {IPADDRESS}
Серьезность: {TRIGGER.SEVERITY}
Состояние: {TRIGGER.STATE}
Операции Отправить сообщение пользователям: Выбираем кому
Операции Обновления
Тема по умолчанию Подтвержденный: {TRIGGER.NAME}
Сообщение по умолчанию
{USER.FULLNAME} признанная проблема {ACK.DATE} {ACK.TIME} со следующим сообщением:
{ACK.MESSAGE}
Последнее значение: {ITEM.VALUE} {ITEM.LASTVALUE} ({TIME})
Хост IP (DNS): {HOST.NAME} {HOST.CONN} {IPADDRESS}
Текущее состояние проблемы {EVENT.STATUS}
Операции Отправить сообщение пользователям: Выбираем кому
В почте создано отдельное правило приема писем связанных с телефонами в отдельную входящую папку Телефоны
Так же отправка данных писем указанна с 8.00 - 17.00 ч Пн-Пт так как некоторые телефоны выключали при уходе домой
Настраивается это Администрирование > Пользователи
Открываем пользователя переходим на вкладку Оповещения
Тип Почта
Отправлять на адрес почты
Когда активен 1-5,8:00-17:00
Использовать, если важность Средняя (все триггеры на телефонах средней важности)
Активировано V Для всего остального
Тип Почта
Отправлять на адрес почты
Когда активен1-7,00:00-24:00
Использовать, если важность Неклассифицируема Высокая Черезвычайная Аварийная
Активировано V
Так же настроено тут же SMSUSB
Нужно понимать что на почту не придут сообщение в нерабочее время средней важности если есть другие триггеры в этом статусе. так мы отделили сообщения о телефонах в нерабочее время.
Скрипты различные попытки для перезагрузки
Показать
apt-get install links
chmod 777 /usr/bin/links
chmod 777 /usr/share/lintian/overrides/links
# chmod 777 /usr/bin/xlinks2
# chmod 777 /usr/share/lintian/overrides/links2
#!/bin/sh
links "$1"
./urlopener "{TRIGGER.URL}/RebootHandle.asp"
#!/bin/sh
links http://Логин:Пароль@IP:Порт/RebootHandle.asp &
sleep 3
killall -9 links
exit
#!/bin/bash
firefox http://Логин:Пароль@IP:Порт/SysStatus.asp &
declare -i PID=$!
kill ${PID}
#!/usr/bin/python
import webbrowser
import time
p =webbrowser.get('links').open("http://Логин:Пароль@IP:Порт/RebootHandle.asp")
time.sleep(3)
killall -9 ('links')
#!/usr/bin/python3.4
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
opts = Options()
opts.set_headless()
assert opts.headless # без графического интерфейса.
browser = Firefox(options=opts)
browser.get('http://Логин:Пароль@IP:Порт/RebootHandle.asp')
browser.close()
#!/usr/bin/python3.4
import psutil
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
opts = Options()
opts.set_headless()
assert opts.headless # без графического интерфейса.
browser = Firefox(options=opts)
browser.get('http://Логин:Пароль@IP:Порт/RebootHandle.asp')
#browser.close()
PROCNAME = "firefox-esr"
for proc in psutil.process_iter():
if proc.name() == PROCNAME:
proc.kill()
Пользовательский скрипт
'links {TRIGGER.URL}/RebootHandle.asp'
sh -c $(links http://Логин:Пароль@IP:Порт/RebootHandle.asp)
sh -c 'links "http://Логин:Пароль@IP:Порт/RebootHandle.asp'"
экранировали строку sh
Насколько я понял крон по умолчанию запускает команды так /bin/sh -c ' команда ' И кавычки здесь обязательно. Лучше одинарные, чтоб экранировали строку полностью от всех спецсимволов.
Можно вместо `........` использовать $(..........), тогда будет работать
killall -9 firefox-esr
apt-get install curl libcurl3 libcurl3-dev php-curl php-mcrypt
/etc/init.d/apache2 restart или так service apache2 restart
chmod 777 /usr/bin/links
chmod 777 /usr/share/lintian/overrides/links
# chmod 777 /usr/bin/xlinks2
# chmod 777 /usr/share/lintian/overrides/links2
#!/bin/sh
links "$1"
./urlopener "{TRIGGER.URL}/RebootHandle.asp"
#!/bin/sh
links http://Логин:Пароль@IP:Порт/RebootHandle.asp &
sleep 3
killall -9 links
exit
#!/bin/bash
firefox http://Логин:Пароль@IP:Порт/SysStatus.asp &
declare -i PID=$!
kill ${PID}
#!/usr/bin/python
import webbrowser
import time
p =webbrowser.get('links').open("http://Логин:Пароль@IP:Порт/RebootHandle.asp")
time.sleep(3)
killall -9 ('links')
#!/usr/bin/python3.4
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
opts = Options()
opts.set_headless()
assert opts.headless # без графического интерфейса.
browser = Firefox(options=opts)
browser.get('http://Логин:Пароль@IP:Порт/RebootHandle.asp')
browser.close()
#!/usr/bin/python3.4
import psutil
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
opts = Options()
opts.set_headless()
assert opts.headless # без графического интерфейса.
browser = Firefox(options=opts)
browser.get('http://Логин:Пароль@IP:Порт/RebootHandle.asp')
#browser.close()
PROCNAME = "firefox-esr"
for proc in psutil.process_iter():
if proc.name() == PROCNAME:
proc.kill()
Пользовательский скрипт
'links {TRIGGER.URL}/RebootHandle.asp'
sh -c $(links http://Логин:Пароль@IP:Порт/RebootHandle.asp)
sh -c 'links "http://Логин:Пароль@IP:Порт/RebootHandle.asp'"
экранировали строку sh
Насколько я понял крон по умолчанию запускает команды так /bin/sh -c ' команда ' И кавычки здесь обязательно. Лучше одинарные, чтоб экранировали строку полностью от всех спецсимволов.
Можно вместо `........` использовать $(..........), тогда будет работать
killall -9 firefox-esr
apt-get install curl libcurl3 libcurl3-dev php-curl php-mcrypt
/etc/init.d/apache2 restart или так service apache2 restart