Grafana: Поддержка списка воспроизведения с шаблонными переменными

Созданный на 8 сент. 2014  ·  132Комментарии  ·  Источник: grafana/grafana

Приведу простой пример:
У нас есть панель инструментов, на которой настроена переменная $ HOST.
У нас есть график, который использует aws. $ HOST.request.count
Глядя на панель управления, мы можем выбрать Host1, Host2 и т. Д., Отображая соответствующие показатели.
Теперь было бы неплохо превратить это в список воспроизведения, чтобы каждую минуту графана отображала метрики для каждого хоста.

Когда у нас есть два или более фильтров, все становится немного сложнее. Существует множество комбинаций, некоторые из которых могут не представлять интереса для наблюдателя за приборной панелью.
По этой причине было бы неплохо иметь способ выбрать список комбинаций фильтров / переменных, которые интересны пользователю. Затем в плейлисте будут циклически проходить эти комбинации и отображаться панель управления с соответствующими показателями.
Также было бы неплохо сделать возможным выбор различных комбинаций для временного диапазона в списке воспроизведения (например, последние 6 часов, последние 24 часа и т. Д.).

aredashboard prioritnice-to-have typfeature-request

Самый полезный комментарий

: cake: к 5-летнему юбилею этого номера.

Можем ли мы получить обновление?

Все 132 Комментарий

@costimuraru очень хорошие предложения!

: +1: сделает функцию списка воспроизведения более полезной

: +1: Эта функция необходима, потому что у вас нет такого огромного экрана, чтобы разместить на нем все ваши графики.

: +1: Действительно, эта функция была бы отличной для таких проектов, как наш, где у нас есть много дашбордов, которые можно сжать на одном экране.

Это действительно звучит очень полезно, но также довольно сложно и требует много времени для отображения настроек переменных и времени в начальном списке воспроизведения (и реализации логики для обработки этих настроек, переменных настройки и т. Д. При загрузке / цикле панели). Так что в будущем эта функция определенно будет приоритетной, но не то, что можно было бы втиснуть в версию 1.8.

Спасибо @torkelo и продолжайте в том же

: +1: Было бы здорово иметь эту функцию

Пока это находится в очереди разработчиков - есть ли способ указать переменную шаблона в URL-адресе? Я мог бы, по крайней мере, использовать расширение для браузера, чтобы перебирать кучу URL-адресов.

@rishid да, используя ?var-<variable_name>=value

+1, меня тоже очень интересует этот запрос функции

+1

+1

+1 С шаблонами это обязательно.

Скоро будет пиар ...

@costimuraru Я реализовал плейлист для одной переменной, теперь работаю над комбинациями с несколькими переменными. Реализация должна быть быстрой. Выбор другого временного диапазона может быть дополнительной функцией обновления. Для этой итерации я просто создаю плейлист с комбинациями шаблонных переменных.

Здорово ,

Вот PR - # 2841 и несколько скриншотов:

Перейдите в «Шаблоны», и теперь вы должны увидеть новую вкладку «Плейлист»:
screen shot 2015-09-29 at 3 14 13 am

Щелкните вкладку Список воспроизведения, и вы должны увидеть следующий экран со всеми перечисленными переменными.
screen shot 2015-09-29 at 3 14 16 am

Я выбрал две переменные из трех и нажал «Пуск». (Причина, по которой я выбрал 2, состоит в том, что я хочу воспроизвести все комбинации этих 2 переменных, сохраняя фиксированную 3-ю. Обратите внимание: фиксированные переменные получат свои сохраненные значения по умолчанию).
screen shot 2015-09-29 at 3 14 22 am

Теперь вы можете видеть, что я оставил первую переменную постоянной, и плейлист начнется со всеми возможными комбинациями 2-й и 3-й переменных.
screen shot 2015-09-29 at 3 14 36 am

Пожалуйста, оставьте отзыв и внесите изменения, если необходимо.

Потрясающе @utkarshcmu

Хорошо сделано! не уверен, что функция списка воспроизведения находится на вкладке в настройках шаблона. Представление списка воспроизведения уже существует. Создание списка воспроизведения для шаблонной панели инструментов должно быть частью этого представления.

Согласовано с @torkelo , я сделаю это частью списка воспроизведения. В этом больше смысла. :)

Список воспроизведения, основанный на переменных шаблона, теперь можно запускать из просмотра списка воспроизведения. Для запуска плейлиста необходимо выполнить следующие шаги:

Нажмите на список воспроизведения:
screen shot 2015-09-30 at 10 59 44 am

Вы увидите следующее представление списка воспроизведения с дополнительной возможностью выбора типа списка воспроизведения:
screen shot 2015-09-30 at 10 59 50 am
То же самое и с плейлистами на основе дашбордов.

Теперь для списка воспроизведения, основанного на переменных шаблона, вам нужно выбрать «переменные» из выпадающего меню:
screen shot 2015-09-30 at 11 07 37 am

Затем вы выполните поиск панели управления, для которой вам нужно запустить список воспроизведения на основе его переменных шаблона, и выберите его:
screen shot 2015-09-30 at 11 00 13 am

После выбора панели инструментов автоматически отобразится список переменных шаблона:
screen shot 2015-09-30 at 11 00 16 am

Теперь следующий шаг - выбрать переменные шаблона, с которыми вы хотите запустить список воспроизведения, и щелкнуть Start:
screen shot 2015-09-30 at 11 00 44 am

И вот вам плейлист, основанный на переменных шаблона:
screen shot 2015-09-30 at 11 00 51 am
screen shot 2015-09-30 at 11 00 58 am

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

выглядит неплохо

+1

+1, есть новости об этой функции @utkarshcmu ?

@ evandro-portugal Я реализовал функцию плейлистов для графаны, но раньше ее не объединяли. Думаю, теперь мне нужно переделать некоторую работу, потому что код сильно изменился.

@utkarshcmu правильно, где мне взять ваши последние коды для этого? Я хотел бы взглянуть и попытаться что-то сделать для меня, в моем случае это высокий приоритет, и мне просто нужно, чтобы переменные меняли положение в конце каждого цикла, тогда я мог бы что-то сделать, пока мы не получим вашу ветку слился

@ evandro-portugal
Вот старый код:
Пожалуйста, перейдите на мою вилку Grafana - https://github.com/justforkit/grafana
И попробуйте собрать Grafana из ветки "переменный-плейлист".

@utkarshcmu , спасибо, я посмотрю код, вы планируете переделывать код? В противном случае я мог бы поделиться своей работой, если бы исправил ее для фактической основной ветки графаны, которую я использую прямо сейчас. У меня сейчас пара праздников (здесь карнавал) и я планирую поиграть с ним

@ evandro-portugal Конечно, продолжайте и переделывайте, если хотите. Я не планирую здесь работать над этим хотя бы неделю. Наслаждайтесь карнавалом. :)

@torkelo Можно ли объединить эту функцию с основной графаной? Это кажется очень полезным улучшением для игры на одной и той же информационной панели с разными шаблонными переменными.

Кроме того, если @bergquist / @torkelo согласится на объединение этой функции, я могу переделать свой предыдущий код PR, чтобы сделать его совместимым с последним кодом Grafana.

@digrich что значит слился? Это не пиар :)

Я пытался сослаться на старый PR @utkarshcmu (# 2841), но, как он упомянул в своем последнем комментарии, ему нужно переделать и представить новый PR.

+1

Привет @torkelo . В ожидании этой полезной функции я хотел бы найти какое-нибудь обходное решение.

Можно ли создать что-то вроде списка воспроизведения на основе скриптовой панели инструментов?

Эта скриптовая панель инструментов должна иметь возможность загружать другие шаблонные панели мониторинга и каким-то образом передавать переменные, возможно, с URL-адреса?

+1

Есть какие-нибудь новости по этому поводу, учитывая, что прошло полгода?

Нет новостей :(

Похоже, мне нужно немного времени, чтобы ответить на этот запрос функции!

+1

+1

+1

+1

Поскольку вы можете передавать переменные через URL-адрес, моим временным решением является эта простая html-страница iframe carousel / rotator , которую я называю каруселью Grafana Dashboards.

Вам просто нужно указать массив BASE_URL и dashboards_list , содержащий информационные панели, которые вы хотите отобразить.

Это немного несвязанный вопрос, но есть ли способ просто иметь кнопку «следующий» / «предыдущий» хост (или действительно шаблонная переменная) на панели инструментов?
Когда я хочу вручную прокрутить весь набор хостов, использование раскрывающегося списка становится очень громоздким.

Какие-нибудь действия здесь? Все наши информационные панели построены по шаблонам, поэтому без функций / возможностей шаблонов для передачи переменных функция списка воспроизведения в значительной степени неприменима для нас.

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1, @utkarshcmu Вы все еще над этим работаете? Я попробую, если нет, но я новичок в разработке графаны

@thattolleyguy - Давай, дружище, я сейчас над этим больше не работаю.

+1
Предложение, так как дашборды длиннее, можем ли мы также автоматическую прокрутку. В противном случае большинство панелей остаются скрытыми в плейлисте (на ТВ).

+1

+1

+1

Есть новости об этой функции?

Удивительно, что такая работа отправилась в помойку.

У меня не было времени над этим поработать. Я также не очень хорошо знаком с кодом графаны, поэтому, если кому-то еще интересно, не стесняйтесь его использовать. Если нет, я нанесу удар, когда у меня будет время.

+1

+1

+1

@torkelo Есть ли шанс

@davidkarlsen, для этой функции нет запроса на стадии бета-тестирования, поэтому это маловероятно. Запросы функций не выполняются, если кто-то не работает над ними и не знает, что кто-то работает над этим.

Ах, я был немного быстрым - похоже, https://github.com/grafana/grafana/pull/2841 прошел далеко, но затем был заброшен ;-(

+1

+1

+1

+1

+1

как насчет использования строки запроса панели PLUS в плейлисте?
Это «автоматически» добавит все переменные И временной диапазон.

В моем примере это было бы
?orgId=1&var-DATACENTER=dc1&var-FQDN=All&from=now-2d&to=now

что случилось ... это заняло почти 4 года, а функция не добавляла мастер-код ... это так смешно

ЭТО ОБЯЗАТЕЛЬНО!

+1

Я не понимаю, почему такая функция до сих пор не выпущена ....

+1

+1

Есть ли прогресс по этой функции? Это необходимая вещь. Без этого плейлисты почти бесполезны, по крайней мере, в моем случае.

Я также хотел бы увидеть эту функцию - в настоящее время мне нужно дублировать информационные панели для этого

Как и выше, мне пришлось продублировать несколько экранов, чтобы использовать список воспроизведения. Эта функция была бы замечательной.

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

Видя, насколько интересна эта функция, жаль, что в ней нет прогресса.
@costimuraru @utkarshcmu , вы знаете статус этого запроса? Стоит ли ждать появления этой функции или искать альтернативы?

Просто хочу сказать, что нам бы очень хотелось, чтобы эта функция объединилась!

Я попробую еще раз в этом месяце!

Обходной путь, если вам нужно отобразить несколько панелей мониторинга с параметрами, - создать файл html, отображающий панели мониторинга в окнах iframe, и повернуть их с помощью простого сценария JS. Это то, что я использую для вращения информационных панелей Grafana на моем распи.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Grafana dashboard rotator</title>

    <style>
        #title {
            position: fixed;
            right: 20px;
            top: 10px;
            color: rgba(255, 0, 0, 0.5);
            background-color: rgba(0, 0, 0, 0.7);
            padding: 10px;
            font-weight: bold;
            font-size: 6em;
            font-family: sans-serif;
            margin: 0;
        }

        body,
        html {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            position: relative;
        }

        iframe {
            width: 100%;
            height: 100%;
            border: 0;
        }

        #timer {
            position: fixed;
            bottom: 10px;
            right: 20px;
            color: rgba(255, 0, 0, 0.5);
            background-color: rgba(0, 0, 0, 0.7);
            padding: 10px;
            font-weight: bold;
            font-size: 2em;
            font-family: sans-serif;
            margin: 0;
        }
    </style>
</head>

<body>

    <h1 id="title"></h1>
    <iframe x-name="SLA PROD EU" src="https://mygrafana.example.com/services-availability?orgId=1&var-ds=Graphite-EU&var-env=prod-eu&var-package=cds-red-bull-high-touch&var-service=All&refresh=30s&from=now-1h&to=now"></iframe>
    <iframe x-name="SLA PROD US" src="https://mygrafana.example.com/services-availability?services-availability?from=now-1h&orgId=1&refresh=30s&to=now&var-ds=Graphite&var-env=prod&var-package=cds-cds&var-service=All"></iframe>
    <iframe x-name="REQUESTS EU" src="https://mygrafana.example.com/services-details?orgId=1&from=now-24h&to=now&var-ds=Graphite-EU&var-env=prod-eu&var-service=All&refresh=30s"></iframe>

    <small id="timer"></small>
    <!-- ROUND ROBIN SCRIPT -->
    <script>

        ; (function (globals) {

            //UMD
            if (typeof define !== 'undefined' && define.amd) { //require.js / AMD
                define([], function () {
                    return rr
                })
            } else if (typeof module !== 'undefined' && module.exports) { //CommonJS
                module.exports = rr
            } else { //script / browser
                globals.rr = rr
            }

            function rr(arr, lastIndex) {
                if (!Array.isArray(arr)) throw new Error("Input is not an array.")
                if (arr.length === 0) return null

                if (arr._rr == null) {
                    arr._rr = 0
                    return arr[0]
                }

                if (arr.length === 1)
                    return arr[0]

                if (typeof lastIndex == 'number')
                    arr._rr = lastIndex

                //is outside of range?
                if (arr._rr >= arr.length - 1 || arr._rr < 0) {
                    arr._rr = 0
                    return arr[0]
                } else {
                    arr._rr += 1
                    return arr[arr._rr]
                }
            }

            rr.splice = function (arr, idx, len) {
                if (!Array.isArray(arr)) throw new Error("Input is not an array.")
                if (arr.length === 0) return

                arr.splice(idx, len);

                if (arr._rr == null) {
                    arr._rr = 0
                    return;
                }

                if (arr._rr >= idx)
                    arr._rr -= 1
            }

            rr.spliceCurrent = function (arr, len) {
                rr.splice(arr, arr._rr, len)
            }

        })(this);
    </script>


    <!-- ROTATOR -->
    <script>
        const interval = 10000; //dashboard switch interval
        const initializingTime = 60000; //initializing time
        const iframes = document.getElementsByTagName('iframe')
        const arr = [...iframes];
        let last = null;

        let count = initializingTime / 1000;
        document.getElementById('title').innerText = `Initializing... (${count}s)`

        const initializingTimer = setInterval(() => {
            count = count > 0 ? count -= 1 : 0;
            document.getElementById('title').innerText = `Initializing... (${count}s)`
        }, 1000)


        let switcherTimer;
        const switcher = () => {
            if (switcherTimer) {
                clearInterval(switcherTimer);
            }

            let count = interval / 1000;
            switcherTimer = setInterval(() => {
                count = count > 0 ? count -= 1 : 0;
                document.getElementById('timer').innerText = `(${count}s)`
            }, 1000)

            const curr = rr(arr)
            curr.scrollIntoView();
            document.getElementById('title').innerText = `${curr.attributes['x-name'].value} (${arr._rr + 1}/${arr.length})`
        }

        setTimeout(() => {
            clearInterval(initializingTimer);

            document.getElementById('title').innerText = `${arr[0].attributes['x-name'].value} (1/${arr.length}) `

            switcher();
            setInterval(switcher, interval)

        }, initializingTime /*give dashboards some time to load*/)

    </script>


    <script>
        //Interval to refresh whole page once per 2 hours. To prevent memory leaks.
        setInterval(() => {
            window.location.reload()
        }, 7200000)
    </script>

</body>

</html>

Вы можете установить конкретный URL-адрес панели мониторинга в атрибуте src iframe.

    <iframe x-name="SLA PROD EU" src="https://mygrafana.example.com/services-availability?orgId=1&var-ds=Graphite-EU&var-env=prod-eu&var-package=cds-red-bull-high-touch&var-service=All&refresh=30s&from=now-1h&to=now"></iframe>

Интервал ротации устанавливается в миллисах в const interval = 10000 .
Конечно, вы также можете добавить больше фреймов.

Открыто 5 лет, выйдет ли когда-нибудь этот код?

Очень надеялся увидеть это в 6, если честно .. :)

Еще один +1, есть обновления по этому поводу?

: cake: к 5-летнему юбилею этого номера.

Можем ли мы получить обновление?

Привет, это очень важная функция, есть ли обновления по этому поводу?

Я почти уверен, что этого никогда не случится 😔

Я хочу использовать Grafana для мониторинга около 30 серверов с использованием одного шаблона dahboard.
Без этого мне нужно менять 30 шаблонов каждый раз, когда я хочу обновить свой шаблон.

Эта опция была бы очень полезной.

:) В мире микросервисов будет так сложно иметь информационную панель для каждой службы ... эта опция будет очень удобной и простой для мониторинга наших служб, вместо того, чтобы иметь десятки информационных панелей, чтобы иметь возможность отображать их в плейлисте.

Было бы действительно полезной функцией.

+1

+1 - Было бы полезно

+1

+1

+1; какой статус по этому поводу?

+1

+1

+1

+1

+1

+1
Это действительно было бы очень полезно ... грустно, этому запросу уже 5 лет

+1

+1 за это.

Также было бы хорошо, если бы у вас был перехватчик для обнаружения службы Prometheus, чтобы экземпляр $ мог автоматически заполняться и расширяться в списке воспроизведения. Таким образом, когда экземпляры включаются / отключаются, они автоматически добавляются / удаляются из списка воспроизведения.

Это будет очень удобная функция также для режима киоска.

+1

Может ли кто-нибудь сказать мне, добавлена ​​ли эта функция?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

SATHVIKRAJU picture SATHVIKRAJU  ·  3Комментарии

Minims picture Minims  ·  3Комментарии

ricardclau picture ricardclau  ·  3Комментарии

ahmetkakici picture ahmetkakici  ·  3Комментарии

yuvaraj951 picture yuvaraj951  ·  3Комментарии