| 1 | Список команд мониторинга
|
|---|
| 2 | =========================
|
|---|
| 3 |
|
|---|
| 4 | 1. Общие положения
|
|---|
| 5 |
|
|---|
| 6 | 1.1. Все команды и ответы на них передаются в виде json-объектов.
|
|---|
| 7 |
|
|---|
| 8 | 1.2. json-объект команды передается по протоколу HTTP POST или GET запросом (рекомендуется POST)
|
|---|
| 9 | в параметре json URL /api.php, например: http://192.168.0.88/api.php?json={"cmd":"board"}
|
|---|
| 10 | В некоторых случаях вместо /api.php используется другой URL, о чем особо указывается ниже.
|
|---|
| 11 |
|
|---|
| 12 | 1.3. Вид команды передается в виде строки в поле "cmd", например {"cmd":"board"}.
|
|---|
| 13 |
|
|---|
| 14 | 1.4. При возникновении ошибки в процессе выполнения команды в ответе на команду присутствует
|
|---|
| 15 | поле "error", значением которого является строка с описанием ошибки (при некоторых ошибках
|
|---|
| 16 | аутентификации вместо поля "error" может присутствовать поле "error2" - см. описание аутентификации ниже).
|
|---|
| 17 |
|
|---|
| 18 | 1.5. Признаком успешного выполнения команды является отсутствие поля "error" ("error2") в ответе.
|
|---|
| 19 |
|
|---|
| 20 | 1.6. В ответе на команду также присутствует поле "cmd" с тем же значением, что и в запросе.
|
|---|
| 21 |
|
|---|
| 22 | 1.7. Все строки, включая имена полей, используют кодировку UTF-8.
|
|---|
| 23 |
|
|---|
| 24 | 2. Аутентификация
|
|---|
| 25 |
|
|---|
| 26 | Для выполнения большинства команд требуется аутентификация. Для выполнения аутентификации
|
|---|
| 27 | требуется передать запрос "login" на URL /login.php. Параметры запроса аутентификации:
|
|---|
| 28 | "login" - имя пользователя (строка);
|
|---|
| 29 | "password" - пароль пользователя (строка).
|
|---|
| 30 | Пример запроса аутентификации:
|
|---|
| 31 | http://192.168.0.88/login.php?json={"cmd":"login","login":"admin","password":"labuda"}
|
|---|
| 32 | В случае ошибки аутентификации в ответе на запрос присутствует поле "error" или "error2".
|
|---|
| 33 | При успешной аутентификации ответ сервера устанавливает cookies с данными аутентификации. Эти cookies
|
|---|
| 34 | должны присутствовать в последующих командах. Установленные данные аутентификации действительны в течение
|
|---|
| 35 | суток с момента их генерации.
|
|---|
| 36 |
|
|---|
| 37 | В случае, если при передаче команды данные аутентификации отсутствуют, неверны
|
|---|
| 38 | или устарели (сгенерированы более суток назад), команда мониторинга не выполняется, и в ответе присутствует поле
|
|---|
| 39 | "error" со значением "not logged in". При получении этой ошибки необходимо повторно выполнить аутентификацию.
|
|---|
| 40 |
|
|---|
| 41 | При наличии в запросе cookies с валиднми данными аутентификации в ответе на любую команду устанавливаются новые
|
|---|
| 42 | (обновленные) cookies. Таким образом, необходимость в повторной аутентификации возникает только если в течение суток
|
|---|
| 43 | блоку не передавалось ни одной команды.
|
|---|
| 44 |
|
|---|
| 45 | 3. Список команд.
|
|---|
| 46 |
|
|---|
| 47 | 3.1. Запрос списка плат
|
|---|
| 48 |
|
|---|
| 49 | Список плат производится командой "board". Параметров у этой команды нет.
|
|---|
| 50 | Пример запроса:
|
|---|
| 51 | {"cmd":"board"}
|
|---|
| 52 | Ответ на команду "board" содержит поле "boards", содержащее массив хэшей, каждый из которых описывает один слот кассеты.
|
|---|
| 53 | Каждый хэш имеет следующие поля:
|
|---|
| 54 | "slot" - номер слота (число);
|
|---|
| 55 | "present" - признак присутствия платы (boolean).
|
|---|
| 56 | Если в слоте присутствует плата, хэш дополнительно содержит следующие поля:
|
|---|
| 57 | "type" - тип платы (число);
|
|---|
| 58 | "variant" - вариант исполнения платы (число);
|
|---|
| 59 | "name" - название платы (строка);
|
|---|
| 60 | "alarm" - признак общей аварии платы (число);
|
|---|
| 61 | "comment" - комментарий пользователя (строка);
|
|---|
| 62 | "last_alarm" - последняя авария платы (строка);
|
|---|
| 63 | "last_alarm_time" - сремя начала последней аварии (число - UNIX time);
|
|---|
| 64 | "required" - при значении true плата является обязательной (и при ее отсутствии генерируется авария) (boolean).
|
|---|
| 65 | Пример ответа:
|
|---|
| 66 | {"cmd":"board","boards":[{"slot":1,"present":false},{"slot":9,"present":true,"required":false,"type":1,"variant":1,"name":"SW-01","alarm":0,"comment":"","last_alarm":"","last_alarm_time":0}]}
|
|---|
| 67 |
|
|---|
| 68 | 3.2. Запрос списка текущих аварий
|
|---|
| 69 |
|
|---|
| 70 | Запрос списка текущих аварий производится командой "alarms". Параметров у этой команды нет.
|
|---|
| 71 | Пример запроса:
|
|---|
| 72 | {"cmd":"alarms"}
|
|---|
| 73 | Ответ на команду "alarms" содержит поле "alarms", содержащее массив хэшей, каждый из которых описывает одну аварию.
|
|---|
| 74 | Каждый хэш содержит следующие поля:
|
|---|
| 75 | "slot" - номер слота, в котором возникла авария (число);
|
|---|
| 76 | "oid" - oid аварии (переменная платы) (строка);
|
|---|
| 77 | "start" - время начала аварии (число, UNIX time);
|
|---|
| 78 | "prio" - приоритет аварии: 1 - срочная, 2 и более - не срочная (число);
|
|---|
| 79 | "name" - имя аварии (имя переменной из MIB платы) (строка);
|
|---|
| 80 | "confirmed" - значение true означает, что авария подтверждена пользователем (boolean).
|
|---|
| 81 | Пример ответа:
|
|---|
| 82 | {"cmd":"alarms","alarms":[{"confirmed":false,"slot":2,"oid":".7.2.1.0","prio":1,"start":1367822543,"name":"port 2: LOS (Loss of signal)"}]}
|
|---|
| 83 |
|
|---|
| 84 | 3.3. Запрос счетчиков обмена с платами по внутренней шине блока
|
|---|
| 85 |
|
|---|
| 86 | Запрос счетчиков обмена с платами производится командой "slotcnt". Параметров у этой команды нет.
|
|---|
| 87 | Пример запроса:
|
|---|
| 88 | {"cmd":"slotcnt"}
|
|---|
| 89 | Ответ на команду "slotcnt" содержит поле "slots", содержащее массив хэшей, каждый из которых содержит счетчики одного слота кассеты.
|
|---|
| 90 | Каждый хэш содержит следующие поля:
|
|---|
| 91 | "slot" - номер слота (число);
|
|---|
| 92 | "rx_discarded" - счетчик rx_discarded (число);
|
|---|
| 93 | "rx_short" - счетчик rx_short (число);
|
|---|
| 94 | "rx_big" - счетчик rx_big (число);
|
|---|
| 95 | "rx_ok" - счетчик rx_ok (число);
|
|---|
| 96 | "rx_bad" - счетчик rx_bad (число);
|
|---|
| 97 | "tx_ok" - счетчик tx_ok (число);
|
|---|
| 98 | "tx_dropped" - счетчик tx_dropped (число);
|
|---|
| 99 | "rx_bytes" - счетчик rx_bytes (число);
|
|---|
| 100 | "tx_bytes" - счетчик tx_bytes (число);
|
|---|
| 101 | "un_requests" - счетчик un_requests (число).
|
|---|
| 102 | Пример ответа:
|
|---|
| 103 | {"cmd":"slotcnt","slots":[{"slot":1,"rx_discarded":0,"rx_short":12,"rx_big":32,"rx_ok":12,"rx_bad":78,"tx_ok":123,"tx_dropped":0,"rx_bytes:4323,"tx_bytes":7263,"un_requests":0}]}
|
|---|
| 104 |
|
|---|
| 105 | 3.4. Запрос (чтение) переменной платы
|
|---|
| 106 |
|
|---|
| 107 | Запрос (чтение) переменной платы производится командой "snmpget". Этой команде требуется параметр "varlist", содержащий
|
|---|
| 108 | массив строк, каждая из которых представляет собой OID запрашиваемой переменной. OID состоит из элементов, представляющих собой
|
|---|
| 109 | число от 0 до 255 с точкой перед ним. При обращении к переменной платы первый элемент OID должен быть равен 4,
|
|---|
| 110 | второй элемент - номеру слота. Элементы OID начиная с третьего являются идентификатором переменной внутри платы.
|
|---|
| 111 | OID должен завершаться элементом 0.
|
|---|
| 112 | Пример запроса имени платы, установленной в слоте 9:
|
|---|
| 113 | {"cmd":"snmpget","varlist":[".4.9.2.0"]}
|
|---|
| 114 | Отвер на команду "snmpget" содержит поле "result", хэш. Ключами хэша являются OID запрошенных переменных, значением - хэши
|
|---|
| 115 | с результатом запроса переменной. Каждый хэш результата имеет следующие поля:
|
|---|
| 116 | "oid" - OID переменной (строка);
|
|---|
| 117 | "status" - признак успешности операции чтения (строка). Может принимать следующие значения:
|
|---|
| 118 | "OK" - операция выполнена успешно;
|
|---|
| 119 | "Not found" - запрошенная переменная отсутствует (также этот статус возвращается в случае таймаута);
|
|---|
| 120 | "Error" - какая-то ошибка в процессе обработки запроса.
|
|---|
| 121 | Если поле "status" имеет значение "OK", то в хэше также присутствует поле "value", содержащее прочитанное значение переменной.
|
|---|
| 122 | Пример ответа на запрос переменной .4.9.2.0:
|
|---|
| 123 | {"cmd":"snmpget","result":{".4.9.2.0":{"oid":".4.9.2.0","status":"OK","value":"SW-01"}}}
|
|---|
| 124 | Команда snmpget может содержать параметр "strings2data" типа boolean. В случае, если его значение равно true,
|
|---|
| 125 | значения переменных типа строка преобразуются в массив чисел, по одному на каждый байт строки. Пример запроса и ответа
|
|---|
| 126 | переменной .4.9.2.0 с параметром "strings2data":
|
|---|
| 127 | {"cmd":"snmpget","varlist":[".4.9.2.0"],"strings2data":true}
|
|---|
| 128 | {"cmd":"snmpget","result":{".4.9.2.0":{"oid":".4.9.2.0","status":"OK","value":[83,87,45,48,49]}}}
|
|---|
| 129 |
|
|---|
| 130 | 3.5 Запрос (запись) переменной платы
|
|---|
| 131 |
|
|---|
| 132 | Запрос (запись) переменной платы производится командой "snmpset". Этой команде требуется параметр "varlist", содержащий
|
|---|
| 133 | OID записываемой переменной и ее новое значение.
|
|---|
| 134 | Пример записи переменной:
|
|---|
| 135 | {"cmd":"snmpset","varlist":{".4.14.6.0":3}}
|
|---|
| 136 | Пример ответа на данную запись:
|
|---|
| 137 | {"cmd":"snmpset","result":{".4.14.6.0":"OK"}}
|
|---|