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"}}
|
---|