Получение статистики энергопотребления серверных шкафов

В 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
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
XX - номер ЦОД;
YY - номер зала;
ZZZ - номер стойки в зале.

start_date

Левая граница промежутка времени расчета статистик

Строка

Да

yyyy-mm-dd
yyyy - год;
mm - месяц;
dd - день.

end_date

Правая граница промежутка времени расчета статистик

Строка

Да

yyyy-mm-dd
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;
  • некорректное название функции;
  • некорректный тип формата ответа.