Получение статистики энергопотребления серверных шкафов
В API BILLmanager реализованы три функции:
Получение списка арендованных стоек
get_rack_list - получение списка арендованных стоек (выводит номера стоек, относящихся к активным услугам аренды)
Формат запроса:
GET https://bill.miran.ru/billmgr?authinfo={username:password}&func=get_rack_list&out={json,xml}
Query-параметры:
Название |
Описание |
Тип |
Обязательный параметр |
Допустимые значения |
---|---|---|---|---|
authinfo |
Параметры авторизации в BILLmanager |
Строка |
Да |
имя_пользователя:пароль |
func |
Наименование функции запроса |
Строка |
Да |
get_rack_list |
out |
Наименование типа формата ответа |
Строка |
Да |
json или xml |
XX.YY.ZZZ - полный номер стойки
- XX - номер ЦОД
- YY - Номер серверного зала
- ZZZ - Порядковый номер стойки в зале
Формат успешного ответа:
JSON
{
"doc": {
...,
"racks": {
"rack": [
{
"$": "XX.YY.ZZZ"
},
...
]
},
"tparams": {
"out": {
"$": "json"
},
"func": {
"$": "get_rack_list"
}
}
}
}
XML
<?xml version="1.0" encoding="UTF-8"?>
<doc ...>
<racks>
<rack>XX.YY.ZZZ</rack>
...
</racks>
<tparams>
<out>xml</out>
<func>get_rack_list</func>
</tparams>
...
</doc>
Формат ответа с ошибкой:
JSON
{
"doc": {
"error": {
..,
"default": {
"$": "Во время выполнения запроса произошла ошибка"
},
"message": {
"$": "описание_ошибки"
},
"msg": {
"$": "Во время выполнения запроса произошла ошибка"
},
"stack": {
"action": {
...,
"$": "get_rack_list"
}
},
"status_code": {
"$": "код_ошибки"
}
}
}
}
XML
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<error ...>
<status_code>код_ошибки</status_code>
<message>описание_ошибки</message>
<stack>
<action ...>get_rack_list</action>
</stack>
<default>Во время выполнения запроса произошла ошибка</default>
<msg>Во время выполнения запроса произошла ошибка</msg>
</error>
</doc>
При возникновении ошибки на стороне модуля выводится код ошибки и краткое описание.
Коды ошибок:
- 500. Internal Error - внутренняя ошибка модуля, связанная с недоступностью сервиса.
При ошибке на стороне BILLmanager возможны иные виды ответа с ошибкой.
Например:
- некорректные данные в authinfo;
- некорректное название функции;
- некорректный тип формата ответа.
Получение текущего энергопотребления стойки
get_rack_energy_consumption - получение энергопотребления стойки
Формат запроса
GET https://bill.miran.ru/billmgr?authinfo={username:password}&func=get_rack_energy_consumption&rack_number={XX.YY.ZZZ}&out={json,xml}
Query-параметры:
Название |
Описание |
Тип |
Обязательный параметр |
Допустимые значения |
---|---|---|---|---|
authinfo |
Параметры авторизации в BILLmanager |
Строка |
Да |
имя_пользователя:пароль |
func |
Наименование функции запроса |
Строка |
Да |
get_rack_energy_consumption |
rack_number |
Полный номер стойки |
Строка |
Да |
XX.YY.ZZZ |
out |
Наименование типа формата ответа |
Строка |
Да |
json или xml |
XX.YY.ZZZ - полный номер стойки.
- XX - Номер ЦОД;
- YY - Номер зала;
- ZZZ - Номер стойки в зале.
unix_timestamp - время выполнения запроса в формате Unix-времени с указанием миллисекунд.
value - значение энергопотребления в ваттах в момент времени unix_timestamp.
Формат успешного ответа:
JSON
{
"doc": {
...,
"rack_number": {
"$": "XX.YY.ZZZ"
},
"timestamp": {
"$": "unix_timestamp"
},
"value": {
"$": "value"
},
"tparams": {
"out": {
"$": "json"
},
"rack_number": {
"$": "XX.YY.ZZZ"
},
"func": {
"$": "get_rack_energy_consumption"
}
}
}
}
XML
<?xml version="1.0" encoding="UTF-8"?>
<doc ...>
<rack_number>XX.YY.ZZZ</rack_number>
<timestamp>unix_timestamp</timestamp>
<value>value</value>
<tparams>
<out>xml</out>
<rack_number>XX.YY.ZZZ</rack_number>
<func>get_rack_energy_consumption</func>
</tparams>
...
</doc>
Формат ответа с ошибкой:
JSON
{
"doc": {
"error": {
...,
"default": {
"$": "Во время выполнения запроса произошла ошибка"
},
"message": {
"$": "описание_ошибки"
},
"msg": {
"$": "Во время выполнения запроса произошла ошибка"
},
"stack": {
"action": {
...,
"$": "get_rack_energy_consumption"
}
},
"status_code": {
"$": "код_ошибки"
}
}
}
}
XML
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<error ...>
<status_code>код_ошибки</status_code>
<message>описание_ошибки</message>
<stack>
<action ...>get_rack_energy_consumption</action>
</stack>
<default>Во время выполнения запроса произошла ошибка</default>
<msg>Во время выполнения запроса произошла ошибка</msg>
</error>
</doc>
При возникновении ошибки на стороне модуля выводится код ошибки и краткое описание.
Коды ошибок:
- 400. Bad Request - пользовательская ошибка (не предоставлен номер стойки, некорректный формат номера стойки и т.д.);
- 403. Forbidden - у пользователя нет доступа к услуге с данной стойкой или услуга не находится в состоянии "активен";
- 500. Internal Error - внутренняя ошибка модуля, связанная с недоступностью сервиса.
При ошибке на стороне BILLmanager возможны иные виды ответа с ошибкой.
Например:
- некорректные данные в authinfo;
- некорректное название функции;
- некорректный тип формата ответа.
Получение среднего, максимального и минимального значений энергопотребления стойки за период
get_rack_energy_consumption_stats - получение среднего, максимального и минимального значений энергопотребления стойки в Вт за указанный промежуток времени.
Формат запроса
GET https://bill.miran.ru/billmgr?authinfo={username:password}&func=get_rack_energy_consumption_stats&rack_number={XX.YY.ZZZ}&start_date={yyyy-mm-dd}&end_date={yyyy-mm-dd}&out={json,xml}
Query параметры:
Название |
Описание |
Тип |
Обязательный параметр |
Допустимые значения |
---|---|---|---|---|
authinfo |
Параметры авторизации в BILLmanager |
Строка |
Да |
имя_пользователя:пароль |
func |
Наименование функции запроса |
Строка |
Да |
get_rack_energy_consumption_stats |
rack_number |
Полный номер стойки |
Строка |
Да |
XX.YY.ZZZ |
start_date |
Левая граница промежутка времени расчета статистик |
Строка |
Да |
yyyy-mm-dd |
end_date |
Правая граница промежутка времени расчета статистик |
Строка |
Да |
yyyy-mm-dd |
out |
Наименование типа формата ответа |
Строка |
Да |
json или xml |
Особенности:
-
start_date и end_date считаются датами в формате yyyy-mm-ddT00:00:00+03:00;
-
Расчет статистик ведется в полных днях, считая дни до end_date, количество полных дней рассчитывается как end_date - start_date;
Пример: start_date = 2024-01-01, end_date=2024-01-05
количество полных дней: 5 - 1 = 4, таким образом, в расчете статистик будут участвовать дни 2024-01-01, 2024-01-02, 2024-01-03, 2024-01-04. -
Если дата открытия услуги позже start_date, то в качестве start_date будет использоваться дата открытия услуги в формате yyyy-mm-ddT00:00:00+03:00;
-
Максимальное количество дней для расчета - 365. Если (end_date - start_date) > 365, то start_date будет скорректирован до end_date - 365;
-
Минимальное количество дней для расчета - 1.
XX.YY.ZZZ - полный номер стойки.
- XX - Номер ЦОД;
- YY - Номер зала;
- ZZZ - Номер стойки в зале.
start_unix_timestamp - левая граница временного промежутка в формате Unix-времени с указанием миллисекунд.
end_unix_timestamp - правая граница временного промежутка в формате Unix-времени с указанием миллисекунд.
average_value - среднее значение энергопотребления в ваттах за промежуток времени с start_unix_timestamp до end_unix_timestamp.
min_value - минимальное значение энергопотребления в ваттах за промежуток времени с start_unix_timestamp до end_unix_timestamp.
max_value - максимальное значение энергопотребления в ваттах за промежуток времени с start_unix_timestamp до end_unix_timestamp.
days - количество полных дней, для которых считаются статистики.
Формат успешного ответа:
JSON
{
"doc": {
...,
"rack_number": {
"$": "XX.YY.ZZZ"
},
"start_timestamp": {
"$": "start_unix_timestamp"
},
"end_timestamp": {
"$": "end_unix_timestamp"
},
"days": {
"$": "days"
},
"average": {
"$": "average_value"
},
"min": {
"$": "min_value"
},
"max": {
"$": "max_value"
},
"tparams": {
"end_date": {
"$": "yyyy-mm-dd"
},
"out": {
"$": "json"
},
"rack_number": {
"$": "XX.YY.ZZZ"
},
"start_date": {
"$": "yyyy-mm-dd"
},
"func": {
"$": "get_rack_energy_consumption_stats"
}
}
}
}
XML
<?xml version="1.0" encoding="UTF-8"?>
<doc ...>
<rack_number>XX.YY.ZZZ</rack_number>
<start_timestamp>start_unix_timestamp</start_timestamp>
<end_timestamp>end_unix_timestamp</end_timestamp>
<days>days</days>
<average>average_value</average>
<min>min_value</min>
<max>max_value</max>
<tparams>
<end_date>yyyy-mm-dd</end_date>
<out>xml</out>
<rack_number>XX.YY.ZZZ</rack_number>
<start_date>yyyy-mm-dd</start_date>
<func>get_rack_energy_consumption_stats</func>
</tparams>
...
</doc>
Формат ответа с ошибкой:
JSON
{
"doc": {
"error": {
...,
"default": {
"$": "Во время выполнения запроса произошла ошибка"
},
"message": {
"$": "описание_ошибки"
},
"msg": {
"$": "Во время выполнения запроса произошла ошибка"
},
"stack": {
"action": {
...,
"$": "get_rack_energy_consumption_stats"
}
},
"status_code": {
"$": "код_ошибки"
}
}
}
}
XML
<?xml version="1.0" encoding="UTF-8"?>
<doc>
<error ...>
<status_code>код_ошибки</status_code>
<message>описание_ошибки</message>
<stack>
<action ...>get_rack_energy_consumption_stats</action>
</stack>
<default>Во время выполнения запроса произошла ошибка</default>
<msg>Во время выполнения запроса произошла ошибка</msg>
</error>
</doc>
При возникновении ошибки на стороне модуля выводится код ошибки и краткое описание.
Коды ошибок:
- 400. Bad Request - пользовательская ошибка (не предоставлен номер стойки, некорректный формат номера стойки и т.д.);
- 403. Forbidden - у пользователя нет доступа к услуге с данной стойкой или услуга не находится в состоянии "активен";
- 500. Internal Error - внутренняя ошибка модуля, связанная с недоступностью сервиса.
При ошибке на стороне BILLmanager возможны иные виды ответа с ошибкой.
Например:
- некорректные данные в authinfo;
- некорректное название функции;
- некорректный тип формата ответа.