Инструменты пользователя

Инструменты сайта


watchdog

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
watchdog [2018/08/21 12:26]
nightfly
watchdog [2020/02/13 18:26] (текущий)
nightfly [Использование One-Punch скриптов]
Строка 12: Строка 12:
 | hopeping ​    | Пинг надежды. Трижды выполняется ICMP ping хоста указанного в параметре,​ в надежде на то, что хоть один вернется ​        ​| ​     bool     | | hopeping ​    | Пинг надежды. Трижды выполняется ICMP ping хоста указанного в параметре,​ в надежде на то, что хоть один вернется ​        ​| ​     bool     |
 | script ​      | запуск скрипта по пути указанному в параметре ​                                  ​| ​     string ​  ​| ​   | script ​      | запуск скрипта по пути указанному в параметре ​                                  ​| ​     string ​  ​| ​  
 +| httpget ​     | получение данных из URL указанного в параметре ​                                 |      string ​  ​| ​  
 | getusertraff | получение количества трафика пользователя с логином указанном в параметре ​      ​| ​     int      | | getusertraff | получение количества трафика пользователя с логином указанном в параметре ​      ​| ​     int      |
 | fileexists ​  | проверка на существование файла по пути указанному в параметре ​                 |      bool     | | fileexists ​  | проверка на существование файла по пути указанному в параметре ​                 |      bool     |
 | opentickets ​ | количество открытых тикетов хелпдеска. Требует указания рандомного параметра ​   |      int     | | opentickets ​ | количество открытых тикетов хелпдеска. Требует указания рандомного параметра ​   |      int     |
 +| onepunch ​ | Производит запуск [[onepunch|One-Punch]] скрипта по алиасу указанному в параметре. Результат ожидается в виде переменной ​ $watchdogCallbackResult ​ |      string ​   |
  
  
Строка 41: Строка 43:
 | log             | запись в системный лог ​     | | log             | запись в системный лог ​     |
 | sms             | отсылка СМС уведомления,​ дополнительные номера можно указывать в формате {номер,​номер}. | | sms             | отсылка СМС уведомления,​ дополнительные номера можно указывать в формате {номер,​номер}. |
-| noprimary ​      | в случае указанных действий sms и заполненных {доп. номерах} - основные номера игнорируются |+| noprimary ​      | в случае указанных действий sms и указанных {доп. номерах} - основные номера игнорируются |
 | email           | отсылка уведомления почтой ​ | | email           | отсылка уведомления почтой ​ |
-| telegram ​       | отсылка уведомления Telegram ​ |+| telegram ​       | отсылка уведомления Telegram, дополнительные чаты можно указывать в формате (чат1,​чат2). ​ 
 +| no_tg_primary ​  | в случае указанных действий telegram и указанных (доп. чатах) - основные чаты Telegram игнорируются ​|
 | andresult ​      | в случае указанных действий sms или email к тексту сообщения будет добавлен текущий результат задачи | | andresult ​      | в случае указанных действий sms или email к тексту сообщения будет добавлен текущий результат задачи |
 | oldresult ​      | в случае указанных действий sms или email к тексту сообщения будет добавлен предыдущий результат задачи | | oldresult ​      | в случае указанных действий sms или email к тексту сообщения будет добавлен предыдущий результат задачи |
Строка 98: Строка 101:
   ​   ​
   log,​sms,​email {+380509999999} noprimary   log,​sms,​email {+380509999999} noprimary
 +  ​
 +
 +
 +
 +а если мы хотим послать алерт только в дополнительный/​е чат/ы Telegram? Да, так же без проблем:​
 +  ​
 +  log,​telegram,​email (ChatID1,​ChatID2,​ChatID3) no_tg_primary
 +  ​
 +
 +
 +а можно миксовать СМС и Telegram? Да вообще без проблем:​
 +  ​
 +  log,​telegram,​sms,​email (ChatID1,​ChatID2,​ChatID3) no_tg_primary {+380509999999} noprimary
   ​   ​
  
Строка 401: Строка 417:
 ?> ?>
 </​file>​ </​file>​
 +
 +==== Утилизация CPU Linux хоста ====
 +
 +<file php lin_cpustats>​
 +#​!/​usr/​local/​bin/​php
 +<?php
 +
 +/**
 +CPU Statistics
 +
 +Load
 +1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
 +5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
 +15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3
 +
 +CPU
 +percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
 +raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
 +percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
 +raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
 +percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
 +raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
 +raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0
 +
 +*/
 +$oid='​.1.3.6.1.4.1.2021.10.1.3.3';​
 +$ip='​192.168.0.70';​
 +$community='​yourcommunity';​
 +//end of config
 +
 +$cmd='/​usr/​local/​bin/​snmpwalk -v2c -On  -c '​.$community.'​ '​.$ip.'​ '​.$oid;​
 +$raw=shell_exec($cmd);​
 +$newTime=time();​
 +if (!empty($raw)) {
 +$raw=explode('​STRING:',​$raw);​
 +$raw=trim($raw[1]);​
 +if (!empty($raw)) {
 + print($raw);​
 +} else {
 + print('​FAIL'​);​
 +}
 +
 +}
 +
 +</​file>​
 +
 +===== Использование One-Punch скриптов =====
 +
 +Допустим берем и создаем [[onepunch|One-Punch]] скрипт следующего вида:
 +
 +<code php>
 +$watchdogCallbackResult='​sometest data';
 +</​code>​
 +
 +Вот как-то так
 +
 +{{:​wdonepunch0.png?​|}}
 +
 +И допустим мы хотим контролировать не изменятся ли данные возвращаемые этим скриптом (с чего-бы это? ;)
 +
 +{{:​wdonepunch1.png?​|}}
 +
 +
 +
 +Надеюсь очевидно,​ что собака-наблюдака будет воспринимать как результат выполнения только данные находящиеся в переменной **$watchdogCallbackResult**?​
 +\\
 +Также есть еще одно небольшое ограничение относящееся не только к данным возвращаемым One-Punch скриптами,​ а также и к таким типам проверок как script и httpget. Ограничение заключается в том, что операторы changed и notchanged не работают адекватно если объем возвращаемых этими проверками данных составляет более 255 байт. Поэтому если вы собираетесь использовать эти операторы для контроля измений в данных возвращаемых вышеуказанными типами проверок,​ вам следует это учитывать при разработке ваших скриптов. Для проверок типа like или скажем notempty это не важно.
 +
 +Вот например то же самое снятие данных о трафике с порта, но в виде One-Punch скрипта:​
 +
 +<code php>
 +//config section
 +$port='​8';​
 +$oid='​.1.3.6.1.2.1.31.1.1.1.6';​
 +$ip='​192.168.18.234';​
 +$community='​changeme';​
 +//end of config
 +
 +$cmd='/​usr/​local/​bin/​snmpwalk -v2c -On  -c '​.$community.'​ '​.$ip.'​ '​.$oid.'​.'​.$port;​
 +$raw=shell_exec($cmd);​
 +$newTime=time();​
 +if (!empty($raw)) {
 +$raw=explode('​Counter64:',​$raw);​
 +$raw=trim($raw[1]);​
 +if (!empty($raw)) {
 + $cacheName='​content/​documents/​myscripts/​octets_'​.$ip.'​_'​.$port;​
 + if (file_exists($cacheName)) {
 + $oldTime=filemtime($cacheName);​
 + $oldOctets=file_get_contents($cacheName);​
 + $traffDiff=$raw-$oldOctets;​
 + $timeDiff=$newTime-$oldTime;​
 + if ($timeDiff!=0) {
 + $speed=($traffDiff*8*100)/​($timeDiff*10000);​
 + $watchdogCallbackResult=round($speed/​10000);​
 + } else {
 + $watchdogCallbackResult='​-1';​
 + }
 +     file_put_contents($cacheName,​$raw);​
 + } else {
 + file_put_contents($cacheName,​$raw);​
 + $watchdogCallbackResult='​0';​
 + }
 +}
 +
 +}
 +
 +</​code>​
watchdog.1534843611.txt.gz · Последние изменения: 2018/08/21 12:26 — nightfly