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

В 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;

  • Максимальное количество дней для расчета - 90. Если (end_date - start_date) > 90, то start_date будет скорректирован до end_date - 90;

  • Минимальное количество дней для расчета - 1.

  • Максимальное значение энергопотребления ограничено 7500 Вт.

XX.YY.ZZZ - полный номер стойки.

  • XX - Номер ЦОД;
  • YY - Номер зала;
  • ZZZ - Номер стойки в зале.

start_date - левая граница временного промежутка в формате yyyy-mm-dd 00:00:00+03:00.

end_date - правая граница временного промежутка в формате yyyy-mm-dd 00:00:00+03:00.

avg - среднее значение энергопотребления в ваттах за промежуток времени с start_date до end_date.

min - минимальное значение энергопотребления в ваттах за промежуток времени с start_date до end_date.

max - максимальное значение энергопотребления в ваттах за промежуток времени с start_date до end_date.

Формат успешного ответа:

JSON

{
    "doc": {
        ...,
        "rack_number": {
            "$": "XX.YY.ZZZ"
        },
        "start_date": {
            "$": "start_date"
        },
        "end_date": {
            "$": "end_date"
        },
        "avg": {
            "$": "avg"
        },
        "min": {
            "$": "min"
        },
        "max": {
            "$": "max"
        },
        "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_date>start_date</start_date>
    <end_date>end_date</end_date>
    <avg>avg</avg>
    <min>min</min>
    <max>max</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;
  • некорректное название функции;
  • некорректный тип формата ответа.

Получение среднего, максимального и минимального значений энергопотребления стойки за период для каждой стойки

get_all_racks_energy_consumption_stats - получение среднего, максимального и минимального значений энергопотребления для каждой стойки за указанный промежуток времени.

Формат запроса

GET https://bill.miran.ru/billmgr?authinfo={username:password}&func=get_all_racks_energy_consumption_stats&start_date={yyyy-mm-dd}&end_date={yyyy-mm-dd}&out={json,xml}

Query параметры:

Название

Описание

Тип

Обязательный параметр

Допустимые значения

authinfo

Параметры авторизации в BILLmanager

Строка

Да

имя_пользователя:пароль

func

Наименование функции запроса

Строка

Да

get_all_racks_energy_consumption_stats

start_date

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

Строка

Да

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

end_date

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

Строка

Да

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

out

Наименование типа формата ответа

Строка

Да

json или xml

Расчёт и формат ответа соответствуют комбинации функций get_rack_list и get_rack_energy_consumption_stats.

Формат успешного ответа:

JSON

{
    "doc": {
        ...,
        "racks": {
            "rack": [
                {
                    "rack_number": {
                        "$": "XX.YY.ZZZ"
                    },
                    "start_date": {
                        "$": "start_date"
                    },
                    "end_date": {
                        "$": "end_date"
                    },
                    "avg": {
                        "$": "avg"
                    },
                    "min": {
                        "$": "min"
                    },
                    "max": {
                        "$": "max"
                    },
                },
                ...
            ]
        },
        "tparams": {
            "out": {
                "$": "json"
            },
            "func": {
                "$": "get_all_racks_energy_consumption_stats"
            }
        }
    }
}

XML

<?xml version="1.0" encoding="UTF-8"?>
<doc ...>
    <racks>
        <rack>
            <rack_number>XX.YY.ZZZ</rack_number>
            <start_date>start_date</start_date>
            <end_date>end_date</end_date>
            <avg>avg</avg>
            <min>min</min>
            <max>max</max>
        </rack>
        ...
    </racks>
    <tparams>
        <out>xml</out>
        <func>get_all_racks_energy_consumption_stats</func>
    </tparams>
    ...
</doc>