В современных условия обслуживания ИТ инфраструктуры невозможно обойтись без мониторинга оборудования.
Для начала создадим телеграмм бота он будет отправлять нам сообщения.
Создание телеграмм бота
В поиске телеграмм находим BotFather или переходим по ссылке https://t.me/BotFather
и отправляем команду /start бот предлагает нам варианты ответа. Пишет боту или выбираем из присланного нам ответа /newbot
Бот отвечает нам сообщением Alright, a new bot. How are we going to call it? Please choose a name for your bot. Предлагая выбрать нам имя нашего бота
Для удобства я предпочитаю называться бота именем моего домена clouddb.ru. Далее ссылка на нашего бота. Так же имя должно закачиваться на bot . Поэтому я выбрал clouddb_ru_bot.
Получаем ответ
Нас интересует строка в ответе Use this token to access the HTTP API: копируем токен целиком. В нашем случае это 7051270:AAF2M-UCLK1M5Gfnlw . В вашем случае цифр и букв будет больше. У BotFather так же можно и удалить бота.
Заходим в своего бота. В моем случае это https://t.me/clouddb_ru_bot и пишем ему /start в ответа мы не получаем, но можем писать ему сообщения. Пишем TEST.
После этого в любом браузере открываем следующую страницу https://api.telegram.org/botВАШ_ТОКЕН/getUpdates для получения отправленных боту сообщений.
Не забываем в адресной строке заменить ВАШ_ТОКЕН на следующею строчку - у меня это 7051270:AAF2M-UCLK1M5Gfnlw у вас будет другая. С большим количеством цифр и букв. Остальное без изменений.
Примерный ответ:
{"ok":true,"result":[{"update_id":**788***, "message":{"message_id":1,"from":{"id":333*****,"is_bot":false,"first_name":"","last_name":"","username":"Alexey_It_msk","language_code":"ru"},"chat":{"id":333*****,"first_name":"","last_name":"","username":"Alexey_It_msk","type":"private"},"date":***3380672,"text":"/start","entities":[{"offset":0,"length":6,"type":"bot_command"}]}},{"update_id":***788**, "message":{"message_id":2,"from":{"id":333*****,"is_bot":false,"first_name":"","last_name":"","username":"Alexey_It_msk","language_code":"ru"},"chat":{"id":333*****,"first_name":"","last_name":"","username":"Alexey_It_msk","type":"private"},"date":***3380675,"text":"TEST"}}]}
Нас интересует пока только значение id это ваш номер чата в телеграмм chat_id , Так же его записываем.
Теперь мы себе в чат можем отправлять сообщения Давайте попробуем.
для этого в браузере отрываем следующую строчку https://api.telegram.org/botВАШ_ТОКЕН/sendMessage?chat_id=ВАШ_ЧАТ_ИД&text=Yes
Не забываем в адресной строке заменить ВАШ_ТОКЕН на следующею строчку - у меня это 7051270:AAF2M-UCLK1M5Gfnlw у вас будет другая. С большим количеством цифр и букв. Остальное без изменений. И заменить ВАШ_ЧАТ_ИД на chat_id полученный в предыдущем запросе. в резултате вы должны получить сообщение от вашего БОТА.
На этом создание нашего бота завершено.
Переходим к отправки сообщений с наших устройств.
Для начала заполним System -> Identity это позволит нам понимать какое именно устройство отправляет нам сообщение. Так же все устройства на мониторинге должны имять статические ип адреса. Таким образом можно удаленно мониторить тунели. Доступность серверов. Доступность ИП телефонов.
Заходим во вкладку tools->netwatch
В данном примере происходит мониторинг доступности www.yandex.ru с ип адресом 5.255.255.77 раз в 5 минут
Enabled - включено или выключено правило монтиринга
Host - Ип адрес устройства для мониторинга в нашем случаае ип адрес yandex.ru 5.255.255.77
Interval - интервал 00:05:00 . Раз в пять минут. Для мониторинга через интернет рекомендую делать 15 минут. Для локальных хостов 3-5 минут.
Timeout - Милисекунды ожиданий ответа. 3000 ms
On Up - Скрипт когда устройство у нас начало отвечать на пинги. В начале скрипта важно указать правильный ип адрес хоста который мы мониторим.
:local id [/tool netwatch find where host=5.255.255.77];
:local comment [/tool netwatch get $id comment];
:local status [/tool netwatch get $id status];
:local host [/tool netwatch get $id host];
:local systemName [/system identity get name]
:local smail1 "%F0%9F%98%81";
:local smail2 "%F0%9F%98%A0";
:local uptime [:put [/sys reso get uptime]];
/tool fetch url="https://api.telegram.org/botВАШ_ТОКЕН/sendMessage?chat_id=ВАШ_ЧАТ_ИД&text=$systemName%20$uptime%20$comment%20($host)%20$status%20$smail1" mode=https;
Не забываем в адресной строке заменить ВАШ_ТОКЕН на следующею строчку - у меня это 7051270:AAF2M-UCLK1M5Gfnlw у вас будет другая. С большим количеством цифр и букв. Остальное без изменений. И заменить ВАШ_ЧАТ_ИД на chat_id полученный в предыдущем запросе. в резултате вы должны получить сообщение от вашего БОТА.
On Down - Скрипт когда устройство у нас перестало отвечать на пинги. В начале скрипта важно указать правильный ип адрес хоста который мы мониторим.
:local id [/tool netwatch find where host=5.255.255.77];
:local comment [/tool netwatch get $id comment];
:local status [/tool netwatch get $id status];
:local host [/tool netwatch get $id host];
:local systemName [/system identity get name]
:local smail1 "%F0%9F%98%81";
:local smail2 "%F0%9F%98%A0";
:local uptime [:put [/sys reso get uptime]];
/tool fetch url="https://api.telegram.org/botВАШ_ТОКЕН/sendMessage?chat_id=ВАШ_ЧАТ_ИД&text=$systemName%20$uptime%20$comment%20($host)%20$status%20$smail2" mode=https;
Не забываем в адресной строке заменить ВАШ_ТОКЕН на следующею строчку - у меня это 7051270:AAF2M-UCLK1M5Gfnlw у вас будет другая. С большим количеством цифр и букв. Остальное без изменений. И заменить ВАШ_ЧАТ_ИД на chat_id полученный в предыдущем запросе. в резултате вы должны получить сообщение от вашего БОТА. Отличие от скрипта при ответе в переменной $smail2 в последней строке. В остальном скрипты одинаковые.
Comment - важное поле. Заполняем имя хоста в нашем случае www.yandex.ru пробелов быть не должно.
переходим в System -> Scheduler заполняем два задания
Данный скрипт позволит нам повторно отправлять уведомления об устройствах статус у которых down
foreach id in [/tool netwatch find where status=down and disabled=no] do={
:local comment [/tool netwatch get $id comment];
:local status [/tool netwatch get $id status];
:local host [/tool netwatch get $id host];
:local systemName [/system identity get name]
:local smail1 "%F0%9F%98%81";
:local smail2 "%F0%9F%98%A0";
:local smail3 "%F0%9F%98%A1";
/tool fetch url="https://api.telegram.org/botВАШ_ТОКЕН/sendMessage?chat_id=ВАШ_ЧАТ_ИД&text=$systemName%20$comment%20($host)%20$status%20$smail3" mode=https;
}
Не забываем в адресной строке заменить ВАШ_ТОКЕН на следующею строчку - у меня это 7051270:AAF2M-UCLK1M5Gfnlw у вас будет другая. С большим количеством цифр и букв. Остальное без изменений. И заменить ВАШ_ЧАТ_ИД на chat_id полученный в предыдущем запросе.
Enabled - включено или выключено задание.
Name - имя задания не принципиально.
Interval - как часто будет выполняться задание. Скрипт проверкой устройств. Будет выполняться раз в день в 12 часов.
On Event - сам скрипт.
Сomment - комментарий не обязательно.
Данный скрипт информирует вас о том что устройство перезагрузилось.
delay 60s;
:local systemName [/system identity get name];
:local smail1 "%F0%9F%98%81";
:local smail2 "%F0%9F%98%A0";
tool fetch url="https://api.telegram.org/botВАШ_ТОКЕН/sendMessage?chat_id=ВАШ_ЧАТ_ИД&text=$systemName%20reboot%20$smail1" mode=https;
Не забываем в адресной строке заменить ВАШ_ТОКЕН на следующею строчку - у меня это 7051270:AAF2M-UCLK1M5Gfnlw у вас будет другая. С большим количеством цифр и букв. Остальное без изменений. И заменить ВАШ_ЧАТ_ИД на chat_id полученный в предыдущем запросе.
Enabled - включено или выключено задание.
Name - имя задания не принципиально.
Interval - как часто будет выполняться задание. В нашем случае заполнено startup при включении устройства.
On Event - сам скрипт.
Сomment - комментарий не обязательно.