Grafana: Consultas Meta do Grafana (transformações genéricas nos resultados da consulta de série temporal)

Criado em 7 jan. 2016  ·  90Comentários  ·  Fonte: grafana/grafana

Habilitará o suporte para funções de transformação como escala, derivada, timeShift, MovingAverage para todas as fontes de dados.

prioritimportant-longterm typfeature-request

Comentários muito úteis

Você pode pelo menos implementar algo simples como adicionar e subtrair?

  • Métrica C: #A - #B
  • Métrica D: #A + #B

Todos 90 comentários

Espero que esse recurso seja lançado ainda não :-)

:+1:

Quando esse recurso deve ser lançado para a fonte de dados elasticsearch?

não ETA, espero que este ano :)

Se estivéssemos interessados/possíveis em ajudar no desenvolvimento - por onde começaríamos? Existe algum código como ponto de partida?

Acho que ainda não existe código para isso. Uma decisão geral deve ser tomada se as meta-consultas são executadas no lado do servidor ou no lado do cliente. Eu sou a favor de fazer este lado do servidor para que ele possa ser usado para alertar também. A desvantagem é que isso só funcionaria para fontes de dados com proxy, mas acho que é isso que a maioria das pessoas está fazendo de qualquer maneira.

Se for útil - eu pensei sobre esse problema e tive uma discussão com Rashid antes do lançamento do timelion (os primeiros commits privados foram anteriores à nossa discussão, então não posso reivindicar nenhum crédito :)

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

Não sei se esta é a visão correta, mas eu estava pensando em componentes modulares, alguns dos quais poderiam ser cliente do usuário ou lado do servidor. As vantagens do servidor incluem armazenamento em cache e minimização da transferência de dados para consultas/combinações maiores. Uma vantagem para o lado do cliente é para outras fontes de dados em que as permissões são concedidas por meio do navegador ou potencialmente para adicionar uma nova série a um gráfico existente - o cliente pode apenas consultá-lo diretamente.

Eu acho que o código do timelion seria um começo interessante. Usamos o compartilhamento de iframe de timelion e o modelo em grafana para criar consultas de timelion com modelo em grafana - um pouco hacky, mas resolva o problema até que uma solução melhor apareça.

Obrigado!

@yehosef Ei, obrigado por todo esse material. Eu comecei a trabalhar nisso também, mas depois, depois de passar por essas discussões, percebi que adicionar timeshift apenas para ES não era uma ideia muito melhor, pois adicionar meta consultas como Torkeo sugere acima. Se vocês começaram a codificar esta parte, eu poderia ajudá-los. Se não, ficarei feliz em levar isso adiante com as análises de seus designs chegando mais tarde.

Felicidades.

@arcolife Ainda não começamos a trabalhar nisso - ficaria feliz se alguém pudesse pegá-lo.

Não sei como esse tipo de coisa funciona, mas é possível que pudéssemos/disponhamos a pagar pelo desenvolvimento desses recursos se isso tornasse mais viável. Não sei se existe um sistema de recompensas para esse tipo de coisa - por exemplo, o tanque de chuva ou alguma outra empresa diz que custará "$x" para desenvolver o recurso e diferentes partes interessadas podem contribuir. Para nós, isso e a capacidade de fazer consultas SQL são realmente muito valiosos.

@yehosef Ei, obrigado! Fico feliz em poder contribuir. :)
PS: se marcar uma reunião logo (para discutir esses mockups) ajuda, vamos fazer?

Estou feliz em fazer o que puder para ajudar a seguir em frente. entre em contato comigo em [email protected] se você quiser tentar marcar uma reunião - ou apenas se corresponder sobre a ideia para prosseguir.

@yehosef "A conta de e-mail que você tentou acessar não existe." :)
Eu tentei no seu [github_id] @ google [dot] com.

desculpe - é gmail.com

Olá, temos um ETA de quando esse recurso estaria disponível para a fonte de dados OpenTSDB.

sem ETA ainda, talvez em 4.1 ou 4.2, o que significa, espero, dentro de 6 meses

Não tenho certeza se esse problema é semelhante a "Solicitação de recurso: dois dados de série de intervalo de tempo diferentes são mostrados no mesmo gráfico #3235", pois estou preocupado com #3235 .
Então, se você pudesse me dizer especificamente para isso, quando esse recurso estará disponível para a fonte de dados OpenTSDB.

@torkelo sempre que este problema estiver sendo revisado, por favor, copie eu e @yehosef , pois tivemos algumas trocas de e-mail em torno desse pensamento e dos designs que Yehosef havia proposto neste tópico, e percebi que é melhor trazer essas ideias de volta aqui para mais ampla exposição. Obrigado.

bastante interessado em atualizações sobre isso!

Alguma atualização na data de lançamento para este recurso? Estou realmente ansioso para usar a opção timeshift para a fonte de dados do Elasticsearch.

Nós também estaríamos realmente interessados ​​nisso. Atm existe apenas Timelion para Kibana

+1

É possível criar um plugin de fonte de dados que tenha acesso às outras fontes de dados?
Dessa forma, pode ser possível agrupar as respostas da fonte de dados e transformá-las.

sim,

a fonte de dados -- Mixed -- incluída faz isso:

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

Quarta-feira, 23 de novembro de 2016 às 15h26, Bruno Meneguello [email protected]
escrevi:

É possível criar um plugin de fonte de dados que tenha acesso a outros
fontes de dados?
Dessa forma, pode ser possível agrupar as respostas da fonte de dados e transformá-las.


Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/grafana/grafana/issues/3677#issuecomment -262526082,
ou silenciar o thread
https://github.com/notifications/unsubscribe-auth/AAAq94YeRbQxzw_CDfEiDjjbZj4pJLmTks5rBE0wgaJpZM4HAses
.

Isto é perfeito! Acho que vou tentar construir algo sobre isso, criar alguma linguagem para pegar séries de outras fontes de dados e processá-las com funções.
Alguém mais interessado?

@bkmeneguello não deixe de ler meu comentário: https://github.com/grafana/grafana/issues/3677#issuecomment -230233579. Antes de implementar qualquer coisa, devemos concordar se isso deve ser feito no lado do cliente (js) ou no lado do servidor.

Claro, se essa implementação for central, mas para visualização, ela pode ser feita como um plug-in de fonte de dados.

@torkelo Isso permitirá "dividir" duas consultas?

Muito interessado nesta funcionalidade também.

Eu também estaria interessado nisso. Eu poderia usar isso para ter a capacidade de mostrar um "total combinado" ao passar o mouse sobre todas as métricas em um painel empilhado.

@torkelo Olá, agora temos um ETA de quando esse recurso estará disponível para a fonte de dados OpenTSDB.

@shivam009 sem ETA atualmente

@torkelo Olá,

Existe algum ETA para #3677? Será muito útil ao combinar sum/avg/etc nos resultados das várias métricas da mesma forma que a fonte de dados Graphite.
Usando o Elasticsearch como fonte de dados aqui.

sem ETA ainda, mas é algo que esperamos chegar este ano.

Pode ser útil comparar com um intervalo de tempo arbitrário (por exemplo, uma "referência de dados")

Olá @torkelo ,

Alguma atualização no #3677 ??

sem atualizações :( eu postaria atualização aqui se eu tivesse alguma

Olá @torkelo ,

Obrigado pela resposta rápida. Essencialmente, meu requisito é calcular a média dos pontos de dados retornados do ES e dividi-los em um intervalo de tempo de 1 minuto. Existe alguma outra alternativa para obter as funcionalidades de sumarização e sumSeries no Elasticsearch?

@shiv6146 você não pode usar a função de intervalo de histograma de data do Elasticsearch para isso?

@torkelo Eu posso fazer um grupo aninhado usando o histograma de datas, mas infelizmente o Grafana não me permite ocultar a saída do grupo interno e plotar apenas os pontos de dados agregados :(

Você pode pelo menos implementar algo simples como adicionar e subtrair?

  • Métrica C: #A - #B
  • Métrica D: #A + #B

@mstipanov está em nosso roteiro , mas estamos ocupados com outros recursos até depois do verão.

@mstipanov
Ansioso para ver isso o mais rápido possível também. Usando influxdb

• Métrica C: #A - #B
• Métrica D: #A + #B

gostaria de definitivamente ajudar neste caso, se houver uma especificação. Qualquer lugar que eu possa começar a trabalhar para este? Também pode haver algumas métricas que podem exigir mais dados disponíveis no "A" existente, por exemplo, a média móvel de 7 dias exigirá (série atual + dados de 7 dias anteriores)

@torkelo você tem alguma ideia de como você acha que devemos implementar isso? Estou disposto a investir algum tempo na construção disso. Precisa de um frontend em cima do Druid.

olhou para estender via plugin. Teria que passar o datasourceSrv para o meta-queries-plugin e depois deixar o plugin fazer chamadas de volta para a fonte de dados. Planejando trabalhar em média móvel e mudança de tempo primeiro.

Olá pessoal, tive um problema como @f1-outsourcing e @mstipanov (métrica A (+-) métrica B). E então, desenvolvi um plugin de painel para fazer isso, chamado "Calculated Stat plugin". Se você estiver interessado, este é meu github https://github.com/fabiojose/grafana-calcltdstat-plugin .

@fabiojose obrigado, dei uma olhada no seu plugin. Obrigado por colocá-lo para fora. Acho que pode ser melhor implementá-lo como fonte de dados para que possamos usar qualquer painel como tabela ou gráfico. Eu terminei com o Time Shift. Abrirá o código em um ou dois dias. Será feito com média móvel até lá também

Poshmark tem código aberto https://github.com/GoshPosh/grafana-meta-queries , suporta colunas computadas, Média Móvel e Timeshift

Impressionante! Bom trabalho pessoal!

@torkelo , se você tiver algum tempo, por favor, dê seu feedback sobre o plugin?

@Gauravshah sim! desculpe, a equipe inteira tem estado ocupada preparando e viajando para uma conferência de desenvolvedores que estamos patrocinando esta semana, então demoramos nas revisões e feedback dos plugins. Talvez na próxima semana ou semana depois

@torkelo não se preocupe, por favor, tome seu tempo. Obrigado

@torkelo Existe alguma atualização?

Eu gostaria de ver esse recurso implementado o mais rápido possível também

Oi,
usando grafana v4.5.2 com Elasticsearch.
Precisa converter o carimbo de data/hora em valor booleano com base no tempo decorrido desde que o carimbo de data/hora é inferior a 5 minutos.
valor do campo de script (Time é uma função que retorna a época atual):
boolean( Tempo - _value > 300 )
Isso também está nos seus planos?
Além disso, precisamos da opção de gerar um gráfico que seja a divisão de dois valores de consultas diferentes, ao longo do tempo.
Obrigado,

@lilachmaliniak
você poderia fazer ((new Date()).getTime() - A['_value']) > 300
duas fontes de dados diferentes funcionariam

Obrigado @Gauravshah
Não consegui fazer exatamente o que você sugeriu, provavelmente devido ao tipo de valor, que é um número/int.
Eu tenho erro: 500
é quando eu defino o script de opções para: (((new Date()).getTime() - _value) < 300000 )
Esta é a consulta:
{"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,"query" :"data_private.kes_hostname.keyword:(\"lilach\-centos\-vm.com\")"}}]}},"aggs":{"5":{"terms":{"field":" 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 ":{"min":{"field":"private_data.systemMetrics.systemData.system.uptime"}}}}}} "
Executando a mesma consulta do Kibana, obtive:
{
"erro": {
"causa raiz": [
{
"type": "class_cast_exception",
"motivo": null
}
],
"type": "search_phase_execution_exception",
"reason": "todos os fragmentos falharam",
"fase": "consulta",
"agrupado": verdadeiro,
"failed_shards": [
{
"fragmento": 0,
"index": "beaconindex",
"node": "TGW3SyrEQHSnIi8qQt3rNw",
"razão": {
"type": "class_cast_exception",
"motivo": null
}
}
]
},
"estado": 500
}

Então eu usei o seguinte, em Options, script: (((new Date()).getTime() - _value) < 300000 ) ? 1: 0
E funciona convertendo os valores para rang: [0,1]

Minha pergunta é: como posso converter ainda mais o valor no Grafana, para exibir o token (por exemplo, para cima / para baixo)

Eu acho que isso tem que ser suportado pelo grafana e não por este plugin como tal. Você pode atribuir (((new Date()).getTime() - _value) < 300000 ) ? '↑' : '↓' ainda não tentou

@Gauravshah , obrigado
Você pode ser mais específico, onde eu defino isso?
Se eu escrevê-lo na guia Métrica em Métrica->Opções->Script, o script é incluído na consulta Lucene como propriedade inline e a consulta falha com status de erro 500.
"script":{"inline":"(((new Date()).getTime() - _value) < 300000 ) ? 'up' : 'down'"}

Acho que não entendi sua pergunta. Eu não sei muito sobre consultas de pesquisa elásticas. Eu pensei que você estava perguntando como fazer isso no plugin de meta-consultas

@Gauravshah , sim, estou tentando fazer isso com consultas ES. Eu já instalei o plugin de meta-consultas, mas por algum motivo não consegui criar o painel com ele. Ao criar um novo dashboard a opção do tipo MetaQuery não estava disponível. Vou tentar outra vez, obrigado.

@Gauravshah , como uso MetaQuery com fonte de dados ES?
onde posso encontrar os documentos do plugin?
como não consegui encontrar doc no git: https://github.com/GoshPosh/grafana-meta-queries
obrigado

Oi @Gauravshah ,
Consegui criar um novo painel depois de instalar o plugin de fonte de dados MetaQueries.
depois de criar uma nova tabela e definir a fonte de dados da tabela para -- Misto --
adicionou 2 consultas:
A ($datasource) Métricas: Max(private_data.timestamp), Group by:Term(private_data.kes_hostname.keyword)
B (MetaQuery Datasource) Tipo Expressão Aritmética ((new Date()).getTime() - A['_value']) < 300000 ? 'cima baixo'
A consulta A retorna o valor esperado e é exibido com sucesso na tabela.
mas, não consigo exibir uma coluna com o valor da expressão da consulta B e não consigo ver qual é a saída da expressão, nem se foi bem-sucedida ou falhou. Não há indicação.
Minha pergunta: como faço para depurar a consulta (aquela que usa metaQuery DS) e exibir o valor da expressão na tabela como uma coluna adicional?
Saúde

a fonte de dados deve ser definida como Meta Queries e não mista. Irá adicioná-lo ao readme do plugin :(

Oi @Gauravshah ,
Obrigado.
Alterou a fonte de dados da tabela para "MetaQuery Datasource" conforme recomendado.
Agora recebo o erro "não é possível ler a propriedade 'comprimento' de indefinido" e a tabela não exibe o pensamento, pois antes a consulta do ES é bem-sucedida com o valor esperado.

@lilachmaliniak você pode criar um problema em https://github.com/GoshPosh/grafana-meta-queries , também anexe o rastreamento de pilha do seu navegador

Oi @Gauravshah ,
Adicionado novo problema: https://github.com/GoshPosh/grafana-meta-queries/issues/9

👍

Este problema tem mais de 2 anos. Essa solicitação de recurso foi transferida para outra?

👍

Muitos armazenamentos de dados de séries temporais podem fazer isso por você, mas alguns (olhando para você cloudwatch) não suportam e podem nunca suportar esse tipo de coisa.

Nesse meio tempo, podemos pelo menos fazer timeShift com dois painéis, mas o timeshift por consulta para fazer gráficos de comparação no mesmo painel seria fantástico.

+1

@matschaffer & @JJMVG você deve poder usar https://github.com/GoshPosh/grafana-meta-queries

@SwathiMuppalla você deve estar criando problemas no repositório de plugins não aqui.

+1

+1 isso seria yuge - não tive muito sucesso com o plugin grafana-meta-queries com 6.4 :(

Como uma camada de visualização que suporta uma infinidade de fontes de dados, essa pode ser a joia da coroa dos recursos de monitoramento. Combinamos dados do MySQL, Elasticsearch e Prometheus em nossos painéis, e normalizar dados de uma fonte com base em outra pode ser um grande avanço na importância do produto em nossa pilha de monitoramento.

Este não é outro comentário +1.

Isso é +100 🙏🏼✌🏼

@torkelo Talvez fosse possível usar algo como https://github.com/wesm/feather ou https://arrow.apache.org/docs/python/ipc.html como uma espécie de "cache de armazenamento de colunas" que podem ser usados ​​para processamento ou manipulações adicionais.

Você pode obter outras ideias do trabalho em https://www.dremio.com/ - parece um espaço de problema ligeiramente relacionado (consultar uma variedade de fontes de dados e armazenar em cache no Arrow etc. para manipulação e consulta adicionais).

@torkelo Talvez fosse possível usar algo como https://github.com/wesm/feather ou https://arrow.apache.org/docs/python/ipc.html como uma espécie de "cache de armazenamento de colunas" que podem ser usados ​​para processamento ou manipulações adicionais.

Embora seja bom ter ferramentas externas para funções avançadas, isso não resolve o problema em termos de simplicidade ou integração com o Grafana. Fornecer as operações aritméticas muito básicas em duas séries pode resolver 80% dos problemas com apenas 20% do tempo.

@redlus @yehosef por que https://github.com/GoshPosh/grafana-meta-queries não é uma solução?

@torkelo se você acha que https://github.com/GoshPosh/grafana-meta-queries resolve o problema mencionado nesta edição, devemos fechar o problema abordando que ele está sendo resolvido por um plugin para grafana. É difícil para as pessoas examinarem um problema longo para descobrir que existe um plug-in que resolve o problema.

@Gauravshah
Adoraria ver um plugin funcionando, mas tivemos problemas ao usar este plugin com versões mais recentes do Grafana; ou seja
https://github.com/GoshPosh/grafana-meta-queries/issues/82

@redlus você deve tentar outra vez, funciona no grafana 6.4. Além disso, se a versão mais recente do grafana fosse o único problema, havia opções para voltar uma versão menor. Não tenho certeza por que você chamaria would love to see a working plugin

@Gauravshah infelizmente ainda não está funcionando com o Grafana 6.5.1 - não tentei com o 6.4, mas mudar para uma versão mais antiga pode não ser aceitável para a maioria dos usuários.

sem progresso...

Vejo muitas pessoas pulando aqui tentando agregar várias fontes de dados. Gostaria de saber se o painel blendstat resolve o problema de algumas pessoas e se esse design pode ser reutilizado em outros painéis?

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

O Blendstat preenche uma lacuna, mas não funciona com repetição ou loop para todas as variáveis. Se tem um jeito eu não sei como.

Acabei de encontrar outro caso de uso, espero que isso resolva. Estou recebendo de volta as métricas do CloudWatch com porcentagem (0,0-0,1), o que me dá números inteiros 5, 7, etc. Eu esperava 0,5%, 0,7% e não vejo uma maneira de transformar isso.

Olá, desculpe se estou pisando em terreno antigo aqui, mas este é um tópico bastante longo:

Estou certo em pensar que esta solicitação de recurso é para oferecer suporte a gráficos produzidos como resultado da combinação de várias consultas? Por exemplo, se esse trabalho fosse feito, você poderia pegar uma série temporal do Prometheus e somar com uma série temporal de, digamos, Stack Driver?

Em caso afirmativo: este trabalho ainda está planejado, qual é o roteiro e você precisa de ajuda? :)

isso, mais (espero) mudar o tempo de qualquer gráfico para que eu possa comparar o gráfico de hoje com o de ontem, ou a média de 7 dias.
Sim, alguns armazenamentos de dados já podem fazer isso, mas esse deve ser um recurso genérico.

Esta página foi útil?
0 / 5 - 0 avaliações