Grafana: Метазапросы Grafana (общие преобразования результатов запроса временных рядов)

Созданный на 7 янв. 2016  ·  90Комментарии  ·  Источник: grafana/grafana

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

prioritimportant-longterm typfeature-request

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

Можете ли вы хотя бы реализовать что-то простое, например сложение и вычитание?

  • Метрика C: #A - #B
  • Метрика D: #A + #B

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

Я надеюсь, что эта функция выпущена не так давно :-)

:+1:

Когда ожидается выпуск этой функции для источника данных elasticsearch?

не ETA, надеюсь, в этом году :)

Если бы нам было интересно/возможно помочь с разработкой - с чего бы мы начали? Существует ли какой-то код в качестве отправной точки?

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

Если это вообще полезно - я обдумал эту проблему и обсудил с Рашидом до выпуска timelion (первые частные коммиты были сделаны до нашего обсуждения, поэтому я не могу претендовать на какую-либо заслугу :)

https://drive.google.com/drive/folders/0B9HCLnVMhNurTVY1UUJWZGxOdEU

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

Я думаю, что код timelion будет интересным началом. Мы используем совместное использование iframe timelion и шаблоны в grafana для создания шаблонных запросов timelion в grafana — немного хакерский, но решаем проблему, пока не появится лучшее решение.

Спасибо!

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

ваше здоровье.

@arcolife Мы еще не начали над этим работать - будем рады, если кто-нибудь сможет его подобрать.

Я не знаю, как такие вещи работают, но возможно, мы были бы в состоянии/готовы платить за разработку этих функций, если бы это сделало это более осуществимым. Я не знаю, существует ли система вознаграждений за подобные вещи - например, Raintank или какая-либо другая компания говорят, что разработка этой функции будет стоить "x" долларов, и различные заинтересованные стороны могут внести свой вклад. Для нас это и возможность выполнять SQL-запросы действительно очень ценны.

@yehosef Эй, спасибо! Я просто рад, что могу внести свой вклад. :)
PS: если организация встречи в ближайшее время (для обсуждения этих макетов) поможет, давайте сделаем это?

Я счастлив сделать все, что в моих силах, чтобы помочь этому движению вперед. свяжитесь со мной по адресу [email protected] , если вы хотите попытаться организовать встречу - или просто напишите об идее, чтобы продолжить.

@yehosef «Учетная запись электронной почты, к которой вы пытались подключиться, не существует». :)
Я попробовал это на вашем [github_id] @ google [dot] com.

извините - это gmail.com

Здравствуйте, у нас есть ETA, когда эта функция будет доступна для источника данных OpenTSDB.

ETA еще нет, возможно, в 4.1 или 4.2, что означает, надеюсь, в течение 6 месяцев.

Я не уверен, похожа ли эта проблема на «Запрос функции: данные двух разных временных рядов показаны на одном графике № 3235», поскольку меня беспокоит № 3235.
Поэтому, если бы вы могли сказать мне конкретно об этом, когда эта функция будет доступна для источника данных OpenTSDB.

@torkelo всякий раз, когда этот вопрос рассматривается, пожалуйста, скопируйте меня и @yehosef , потому что у нас был обмен электронными письмами об этой мысли и проектах, которые Йехосеф предложил в этой теме, и я понял, что лучше принести эти идеи сюда для более широкого контакт. Спасибо.

весьма заинтересованы в обновлениях по этому поводу!

Есть новости о дате выпуска этой функции? Я действительно с нетерпением жду возможности использовать опцию timeshift для источника данных Elasticsearch.

Нам бы это тоже было очень интересно. Атм есть только Timelion для Kibana

+1

Можно ли создать плагин источника данных, который имеет доступ к другим источникам данных?
Таким образом можно обернуть ответы источника данных и затем преобразовать их.

да,

включенный -- Mixed -- источник данных делает следующее:

https://github.com/grafana/grafana/blob/master/public/app/plugins/datasource/mixed/datasource.ts#L13

В среду, 23 ноября 2016 г., в 15:26, Бруно Менегуэлло, [email protected]
написал:

Можно создать подключаемый модуль источника данных, который имеет доступ к другим
источники данных?
Таким образом можно обернуть ответы источника данных и затем преобразовать их.


Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/grafana/grafana/issues/3677#issuecomment -262526082,
или заглушить тему
https://github.com/notifications/unsubscribe-auth/AAAq94YeRbQxzw_CDfEiDjjbZj4pJLmTks5rBE0wgaJpZM4HAses
.

Это потрясающе! Я думаю, что я попытаюсь построить что-то поверх этого, создать какой-то язык, чтобы брать серии из других источников данных и затем обрабатывать их с помощью функций.
Кто-нибудь еще заинтересован?

@bkmeneguello обязательно прочитайте мой комментарий: https://github.com/grafana/grafana/issues/3677#issuecomment -230233579. Прежде чем внедрять что-либо, мы должны договориться о том, должно ли это быть сделано на стороне клиента (js) или на стороне сервера.

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

@torkelo Позволит ли это «разделить» два запроса?

Тоже очень интересует этот функционал.

Меня бы это тоже интересовало. Я мог бы использовать это, чтобы иметь возможность показывать «объединенный итог» при наведении курсора на все метрики на панели, которые сложены.

@torkelo Привет, у нас есть ETA, когда эта функция будет доступна для источника данных OpenTSDB.

@shivam009 в настоящее время нет ожидаемого времени прибытия

@torkelo Привет,

Есть ли ETA для # 3677? Это будет очень полезно при комбинировании суммы/среднего/и т. д. результатов нескольких метрик так же, как это делает источник данных Graphite.
Использование Elasticsearch в качестве источника данных здесь.

ETA еще нет, но мы надеемся, что это произойдет в этом году.

Было бы полезно сравнить с произвольным диапазоном времени (например, «ссылкой на данные»)

Привет @torkelo ,

Есть обновления по #3677 ??

нет обновлений :( Я бы разместил обновление здесь, если бы у меня были какие-либо

Привет @torkelo ,

Спасибо за быстрый ответ. По сути, мое требование состоит в том, чтобы усреднить точки данных, возвращенные из ES, и разбить их на временные интервалы в 1 минуту. Есть ли другая альтернатива для достижения функций суммирования и суммирования в Elasticsearch?

@ shiv6146 shiv6146 , разве вы не можете использовать для этого функцию интервала гистограммы даты Elasticsearch?

@torkelo Я могу создать вложенную группу, используя гистограмму дат, но, к сожалению, Grafana не позволяет мне скрыть внутреннюю группу с помощью вывода и отображать только агрегированные точки данных :(

Можете ли вы хотя бы реализовать что-то простое, например сложение и вычитание?

  • Метрика C: #A - #B
  • Метрика D: #A + #B

@mstipanov это в нашей дорожной карте , но мы заняты другими функциями до конца лета.

@мстипанов
С нетерпением жду, чтобы увидеть это как можно скорее. Использование influxdb

• Метрика C: #A - #B
• Метрика D: #A + #B

хотел бы определенно помочь в этом, если есть спец. Где-нибудь я могу начать работать для этого? Также могут быть некоторые показатели, для которых может потребоваться больше данных, доступных для существующего «А», например, потребуется скользящее среднее за 7 дней (текущий ряд + данные за 7 дней ранее).

@torkelo , у вас есть какие-нибудь идеи о том, как, по вашему мнению, нам следует это реализовать? Я готов потратить некоторое время на создание этого. Нужен интерфейс поверх Друида.

рассматривал расширение через плагин. Придется передать datasourceSrv в meta-queries-plugin , а затем позволить плагину выполнять обратные вызовы к источнику данных. Сначала планирую работать над скользящими средними и сдвигом во времени.

Привет, ребята, у меня была такая проблема, как @f1-outsourcing и @mstipanov (метрика A (+-) метрика B). А затем я разработал для этого плагин панели под названием «Расчетный модуль статистики». Если вам интересно, это мой гитхаб https://github.com/fabiojose/grafana-calcltdstat-plugin .

@fabiojose спасибо, я посмотрел ваш плагин. Спасибо, что выложили. Я думаю, было бы лучше реализовать его как источник данных, чтобы мы могли использовать любую панель, например таблицу или график. Я закончил с Time Shift. Открою исходный код через день или два. К тому времени также будет сделано со скользящей средней

Poshmark имеет открытый исходный код https://github.com/GoshPosh/grafana-meta-queries , он поддерживает вычисляемые столбцы, скользящее среднее и Timeshift.

Впечатляющий! молодцы ребята!

@torkelo , если у вас есть время, не могли бы вы оставить свой отзыв о плагине?

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

@torkelo не беспокойтесь, пожалуйста, не торопитесь. Спасибо

@torkelo Есть какие-нибудь обновления?

Я хотел бы, чтобы эта функция была реализована как можно скорее.

Привет,
используя grafana v4.5.2 с Elasticsearch.
Необходимо преобразовать временную метку в логическое значение в зависимости от того, прошло ли время с момента временной метки менее 5 минут.
значение поля скрипта (Время — это функция, возвращающая текущую эпоху):
логическое (Время - _value > 300)
Это тоже входит в ваши планы?
Кроме того, нам нужна возможность генерировать график, представляющий собой разделение двух значений из разных запросов во времени.
Спасибо,

@lilachmaliniak
ты мог бы сделать ((new Date()).getTime() - A['_value']) > 300
два разных источника данных будут работать

Спасибо @Gauravshah
Я не мог сделать именно то, что вы предложили, вероятно, из-за типа значения, которое является числом/целым числом.
у меня ошибка:500
то есть, когда я устанавливаю сценарий параметров на: (((new Date()).getTime() - _value) < 300000 )
Это запрос:
{"search_type":"query_then_fetch","ignore_unavailable":true,"index":"beaconindex"} {"size":0,"query":{"bool":{"filter":[{"range": {"private_data.timestamp":{"gte":"1513673225106","lte":"1513676825106","format":"epoch_millis"}}},{"query_string":{"analyze_wildcard":true,"запрос" :"private_data.kes_hostname.keyword:(\"lilach\-centos\-vm.com\")"}}]}},"aggs":{"5":{"terms":{"поле":" private_data.kes_hostname.keyword","size":10,"order":{"_term":"desc"},"min_doc_count":1},"aggs":{"1":{"max":{" field":"private_data.timestamp","missing":0,"script":{"inline":"((( new Date()).getTime() - _value) < 300000 ) "}}},"3 ":{"мин":{"поле":"private_data.systemMetrics.systemData.system.uptime"}}}}}} "
Выполнив тот же запрос из Kibana, я получил:
{
"ошибка": {
"основная причина": [
{
"тип": "class_cast_exception",
"причина": ноль
}
],
"тип": "search_phase_execution_exception",
"причина": "все осколки не удалось",
"фаза": "запрос",
«сгруппировано»: правда,
"failed_shards": [
{
"осколок": 0,
"индекс": "маяковый индекс",
"узел": "TGW3SyrEQHSnIi8qQt3rNw",
"причина": {
"тип": "class_cast_exception",
"причина": ноль
}
}
]
},
"статус": 500
}

Поэтому я использовал следующий сценарий в параметрах: (((new Date()).getTime() - _value) < 300000)? 1 : 0
И он работает, преобразовывая значения в ранг: [0,1]

Мой вопрос: как я могу преобразовать значение дальше в Grafana, чтобы вместо этого отображать токен (например, вверх/вниз)

Я думаю, что это должно поддерживаться графаной, а не этим плагином как таковым. Возможно, вы сможете назначить (((new Date()).getTime() - _value) < 300000 ) ? '↑' : '↓' , но не пробовали

@Гауравшах , спасибо
Можно поконкретнее, где это установить?
Если я напишу это на вкладке «Метрика» в разделе «Метрика-> Параметры-> Скрипт», сценарий будет включен в запрос Lucene как встроенное свойство, и запрос завершится ошибкой со статусом 500.
"script":{"inline":"(((new Date()).getTime() - _value) < 300000) ? 'вверх' : 'вниз'"}

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

@Gauravshah , да, я пытаюсь сделать это с помощью запросов ES. Я уже установил плагин мета-запросов, но по какой-то причине не смог создать с его помощью дашборд. При создании новой панели мониторинга опция типа MetaQuery была недоступна. Я попробую еще раз, спасибо.

@Gauravshah , как мне использовать MetaQuery с источником данных ES?
где я могу найти документы плагина?
так как я не смог найти документ в git: https://github.com/GoshPosh/grafana-meta-queries
Спасибо

Привет @Gauravshah ,
Мне удалось создать новую панель инструментов после установки плагина источника данных MetaQueries.
после создания новой таблицы и установки для источника данных таблицы значения -- Mixed --
добавил 2 запроса:
A ($datasource) Метрики: Max(private_data.timestamp), Group by:Term(private_data.kes_hostname.keyword)
B (источник данных MetaQuery) Арифметическое выражение типа ((new Date()).getTime() - A['_value']) < 300000 ? 'вверх вниз'
Запрос A возвращает ожидаемое значение, и оно успешно отображается в таблице.
но мне не удается отобразить столбец со значением выражения из запроса B, и я не вижу, что такое вывод выражения, ни успешно, ни неудачно. Индикации нет.
Мой вопрос: как мне отлаживать запрос (тот, который использует metaQuery DS) и отображать значение выражения в таблице в виде дополнительного столбца?
Ваше здоровье

источник данных должен быть установлен на Meta Queries и не смешиваться. Добавлю в ридми плагина :(

Привет @Gauravshah ,
Спасибо.
Изменен источник данных таблицы на «Источник данных MetaQuery», как вы советовали.
Теперь я получаю сообщение об ошибке «не могу прочитать свойство« длина »неопределенного», и таблица не может отображать мысль, как и до того, как запрос из ES завершается успешно с ожидаемым значением.

@lilachmaliniak , вы можете создать задачу на https://github.com/GoshPosh/grafana-meta-queries , также прикрепите трассировку стека из своего браузера.

Привет @Gauravshah ,
Добавлен новый выпуск: https://github.com/GoshPosh/grafana-meta-queries/issues/9

👍

Этой проблеме > 2 лет. Был ли этот запрос функции преобразован в другой?

👍

Многие хранилища данных временных рядов могут сделать это за вас, но некоторые (смотря на ваши облачные часы) не поддерживают и, возможно, никогда не будут поддерживать такого рода вещи.

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

+1

@matschaffer и @JJMVG вы должны иметь возможность использовать https://github.com/GoshPosh/grafana-meta-queries

@SwathiMuppalla , вы должны создавать проблемы в репозитории плагинов, а не здесь.

+1

+1 это было бы yuge - у меня не было большого успеха с плагином grafana-meta-queries с 6.4 :(

Как уровень визуализации, поддерживающий множество источников данных, он может стать жемчужиной среди функций мониторинга. Мы объединяем данные из MySQL, Elasticsearch и Prometheus на наших информационных панелях, и нормализация данных из одного источника на основе другого может стать огромным шагом вперед в повышении важности продукта в нашем стеке мониторинга.

Это не очередной +1 комментарий.

Это +100 🙏🏼✌🏼

@torkelo Возможно, можно было бы использовать что-то вроде https://github.com/wesm/feather или https://arrow.apache.org/docs/python/ipc.html в качестве своего рода «кэш хранилища столбцов» которые затем можно использовать для дополнительной обработки или манипуляций.

Вы можете почерпнуть другие идеи из работы на https://www.dremio.com/ — это похоже на немного связанное проблемное пространство (запрос различных источников данных и кэширование в Arrow и т. д. для дальнейших манипуляций и запросов).

@torkelo Возможно, можно было бы использовать что-то вроде https://github.com/wesm/feather или https://arrow.apache.org/docs/python/ipc.html в качестве своего рода «кэш хранилища столбцов» которые затем можно использовать для дополнительной обработки или манипуляций.

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

@redlus @yehosef, почему https://github.com/GoshPosh/grafana-meta-queries не является решением?

@torkelo , если вы считаете, что https://github.com/GoshPosh/grafana-meta-queries решает проблему, упомянутую в этой проблеме, мы должны закрыть проблему, указав, что она решается с помощью плагина для grafana. Людям трудно просмотреть длинную проблему, чтобы узнать, есть ли плагин, решающий проблему.

@Гауравшах
Хотелось бы увидеть работающий плагин, но у нас были проблемы с использованием этого плагина с более новыми версиями Grafana; то есть
https://github.com/GoshPosh/grafana-meta-queries/issues/82

@redlus , вы должны попробовать еще раз, он работает на графане 6.4. Кроме того, если последняя версия Grafana была единственной проблемой, были варианты вернуться к одной второстепенной версии. Не знаю, зачем вам звонить would love to see a working plugin

@Gauravshah, к сожалению, все еще не работает с Grafana 6.5.1 — я не пробовал с 6.4, но переход на более раннюю версию может быть неприемлем для большинства пользователей.

Нет прогресса ...

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

https://grafana.com/grafana/plugins/farski-blendstat-panel

Blendstat действительно заполняет пробел, но он не работает с повторением или циклом для всех переменных. Если есть способ, я не знаю, как.

Я только что наткнулся на другой вариант использования, надеюсь, это решит. Я получаю метрики CloudWatch с процентами (0,0-0,1), что дает мне целые числа 5, 7 и т. д. Я ожидал 0,5%, 0,7% и не вижу способа преобразовать это.

Привет, извините, если я ступаю по старому, но это довольно длинная тема:

Правильно ли я понимаю, что этот запрос функции предназначен для поддержки графиков, созданных в результате объединения нескольких запросов? Например, если бы эта работа была проделана, вы могли бы взять временной ряд из Prometheus и просуммировать его с временным рядом, скажем, из Stack Driver?

Если да: планируется ли еще эта работа, каков план действий и нужна ли вам помощь? :)

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

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