Saturday 18 November 2017

Moving average elasticsearch


Eu estou usando Elasticsearch 2.3.2, e Logstash 2.3.3. Tenho encontrado de elastic. co/guide/en/elasticsearch/reference/current/search-aggregations-pipeline-movavg-aggregation que afirma que a média móvel pode fazer previsões. Eu sei que é possível fazer apenas consulta em ES, mas não sei como devo fazer isso com logstash. Eu tenho um arquivo logstash que lê um arquivo de log csv armazenando o uso da CPU para cada 15 segundos. Devo apenas incluir o seguinte na logstash saída json arquivo para o índice relacionado como um mapeamento de saída Este é o meu arquivo json para logstash E é possível tê-lo como um gráfico a ser mostrado em Kibana perguntou Jul 5 at 2:53 Detectar Eventos Geo-Temporais com Agregações de Pipeline Elasticsearch Acima: Uma previsão temporal de uma métrica unidimensional em Timelion. Vale a pena notar, esta conversa é muito influenciado por Zach Tongs excelente série sobre a implementação de um detector de Anomalia estatística com Elasticsearch. Isso é um ótimo lugar para começar quando ler sobre este tópico. O problema com minha demo antiga Eu amo dados de bikeshare. Ive escreveu alguns posts no ano passado usando dados públicos do pessoal bom em Washington DCs Capital Bikeshare programa. (Aqui e aqui) e se você conversou comigo em uma cabine de demonstração ou apresentação de Kibana youve probalby me viu mostrar meu painel de passeios bikeshare em DC e zoom em 4 de julho para mostrar a anomalia de dados em torno do show de fogos de artifício. Eu adoro este demo O problema é que ele requer um já ter o conhecimento da anomalia de dados. E se o Elasticsearch pudesse nos ajudar a encontrar outliers e anomalias nos dados automaticamente Bem, ele pode fazer isso e pode até nos ajudar a localizá-los acontecendo em tempo real. Vamos ver se ele pode nos ajudar a identificar outros eventos ao redor da cidade. Elasticsearch recursos Ill necessidade de usar quatro principais recursos do Elasticsearch agregações API. Dois tipos de agregações de balde (característica 1) e (característica 2) Aninhando uma agregação dentro de outra (característica 3) Agregações de pipeline com médias móveis ajustadas de sazonalidade (característica 4) A primeira parte é a capacidade de detectar outliers nos dados que estão isolados para Determinados aspectos geográficos e geográficos dos dados. Estes são histogramas básicos e geo-grid couts de ocorrências de eventos. Há chamadas diretas para APIs de agregação Elasticsearchs e diretamente relacionadas a consultas visualizadas em Kibana. 1) Baldes Geo 2) Baldes histograma 3) Baldes aninhados A próxima parte é onde as coisas se divertem. Elasticsearch permite que você aninhe agregação de balde dentro de outras agregações. Podemos combinar as duas abordagens de balde acima em uma única analítica, perguntando Elasticsearch para baldes histograma dentro de uma agregação geo grid. O resultado é uma matriz das métricas de evento ao longo do tempo para cada grade do meu mapa retornado em uma única chamada de descanso. Heres um retrato do uso do bikeshare sobre diversos anos para tentar demonstrar o meaning verdadeiro dos dados retornados. 4) Médias Movimentais Sazonais Agora para cada balde podemos usar o próximo recurso de poder de Elasticsearch que é agregações de pipeline. Colin Goodheart-Smithe escreveu uma grande postagem no blog sobre computação de derivados com aggs pipeline, mas o que bem se concentrar em médias móveis. Semelhante ao blog Zach Tongs bem calcular um fator de surpresa para cada hora de dados em cada grade de área geoespacial de DC. Bem calcular se ou não o número de passeios de bicicleta que partem da área desvia da tendência geral (média móvel) de quantos passeios esperávamos que partem daquela estação, tendo em conta as tendências gerais tendo em conta o dia da semana e época do ano. Isso nos ajudará a diferenciar o sinal eo ruído, que é um problema comum em todas as análises. Existem muitos tipos de médias móveis possíveis em Elasticsearch, mas o que estamos usando será Holt-Winters. Esta média móvel tri-exponencial leva em conta o nível atual, a tendência nesse nível, bem como uma sazonalidade em seu cálculo da média móvel. Porque capital bikeshares principal padrão periódico é semanal, (a cada 7 dias), podemos pedir uma média móvel de bikeshare ridership e saber se um pico é a manhã de segunda-feira de bicicleta normal comutar ou algo mais interessante como um show de fogos de artifício ou um jogo de beisebol. Holt-Winters pode até fazer previsões para o futuro que é legal, mas desde que estamos apenas à procura de dados outliers no intervalo de tempo dos dados que temos que não será necessário. Holt-Winters requer ajustes de coeficientes para os pesos relativos dos três contribuidores para a média inteligente. Eu brinquei e descobri que eu tenho os melhores resultados usando apenas a função de minimização automática que tenta adivinhar bons coeficientes através de um algoritmo de otimização de recozimento simulado. Colocando-o junto Heres a consulta final que eu usei para computar regionalised Geo-Temporalidade ajustado médias móveis. Kibana em si não tem agregações de pipeline ainda ou fazer muito no caminho de Geo-Temporal, então ele não vai executar este tipo de consulta diretamente. No entanto, com um script de python rápido eu posso executar a consulta personalizada, loop sobre baldes nos dados agregados e reinserir roll-up agregado eventos como um tipo de métrica diferente que pode ser visualizado lado a lado com os dados originais. (Código). A linha-chave que calcula o fator surpresa: Isso significa que quando a contagem de eventos reais para uma hora de passeios de bicicleta em uma grade no mapa ultrapassa a contagem de movimentação geral que teria sido a previsão, estamos adivinhando que pode haver um Anomalia de dados. Cada grade do gráfico geográfico efetivamente se torna uma única série métrica com uma previsão. Podemos mapear o valor surpresa separadamente da densidade de eventos. Verificando resultados Se ampliarmos uma área e obtemos uma visão rápida das anomalias de pico de evento de passeio. Para testar a precisão com eventos do mundo real, eu vou procurar algo que eu possa obter um histórico de eventos difinitive para. Ampliando o estádio de beisebol em maio de 2017 vemos o seguinte: Houve picos acima da média móvel tendência nos 4 º, 5 º, 6 º, 8 º, 9 º, e um menor grau (pequeno fator surpresa) no 10º. Compare isso com o calendário de Washington Nationals Away / Home naquela semana e você verá que conseguimos certo. Documentação Elasticsearch Grafana vem com suporte avançado para Elasticsearch. Você pode fazer vários tipos de consultas elásticas simples ou complexas para visualizar logs ou métricas armazenadas em elasticsearch. Você também pode anotar seus gráficos com eventos de registro armazenados em elasticsearch. Adicionando a fonte de dados Abra o menu lateral clicando no ícone Grafana no cabeçalho superior. No menu lateral sob o link Dashboards você deve encontrar um link chamado Data Sources. Observação: se este link está faltando no menu lateral significa que seu usuário atual não tem a função de administrador para a organização atual. Clique no link Adicionar novo no cabeçalho superior. Selecione Elasticsearch no menu suspenso. O nome da fonte de dados, importante que este é o mesmo que no Grafana v1.x se você planeja importar painéis antigos. A fonte de dados padrão significa que ela será pré-selecionada para novos painéis. O protocolo http, ip e porta de você servidor elasticsearch. Acesso de proxy através do backend Grafana, Diretório de acesso direto do navegador. O acesso por proxy significa que o backend do Grafana irá processar todas as solicitações do navegador e enviá-las para a fonte de dados. Isso é útil porque ele pode eliminar problemas CORS (Cross Source Site Resource), bem como eliminar a necessidade de disseminar detalhes de autenticação para a fonte de dados para o navegador. O acesso direto ainda é suportado porque em alguns casos pode ser útil acessar uma fonte de dados diretamente dependendo do caso de uso e topologia do Grafana, do usuário e da fonte de dados. Acesso direto Se você selecionar acesso direto, deverá atualizar sua configuração Elasticsearch para permitir que outros domínios acessem o Elasticsearch a partir do navegador. Faça isso especificando essas opções em seu arquivo de configuração elasticsearch. yml. Configurações de índice Aqui você pode especificar um padrão para o campo de tempo e especificar o nome de seu índice elasticsearch. Você pode usar um padrão de tempo para o nome do índice ou um curinga. Editor de consulta de métrica O editor de consulta de Elasticsearch permite selecionar várias métricas e agrupar por vários termos ou filtros. Use os ícones mais e menos para a direita para adicionar / remover métricas ou bytes de grupo. Algumas métricas e opções de grupo por têm, clique no texto da opção para expandir a linha para exibir e editar métrica ou grupo por opções. Métricas de pipeline Se você tem Elasticsearch 2.x e Grafana 2.6 ou superior, então você pode usar agregações métricas de pipeline como Moving Average e Derivative. As métricas de pipeline Elasticsearch exigem que outra métrica seja baseada. Use o ícone de olho ao lado da métrica para ocultar métricas de aparecer no gráfico. Isso é útil para métricas que você só tem na consulta a ser usada em uma métrica de pipeline. Templating A fonte de dados Elasticsearch suporta dois tipos de consultas que você pode usar para preencher variáveis ​​de modelo com valores. Valores possíveis para um campo Campos filtrados por tipo Campos filtrados por tipo, com filterAggregation para calcular a média móvel em uma agregação de histograma 10002 Esta agregação calculará a média móvel de métricas de irmãos em dados de estilo histograma (histograma. Datehistogram). As médias móveis são úteis quando os dados das séries temporais são estacionários localmente e têm uma média que muda lentamente ao longo do tempo. Os dados sazonais podem necessitar de uma análise diferente, bem como dados bimodais, bursty ou que contenham valores extremos frequentes (que não são necessariamente outliers). A agregação do movavg suporta várias opções configuráveis: Tamanho da janela O usuário especifica o tamanho da janela que deseja calcular uma média móvel. Por exemplo. Um usuário pode querer uma janela deslizante de 30 dias sobre um histograma de 90 dias total. Atualmente, se não houver dados suficientes para preencher a janela, a média móvel será calculada com o que estiver disponível. Por exemplo, se um usuário selecionar uma janela de 30 dias, os dias de 1 a 29 calcularão a média móvel com entre 1 e 29 dias de dados. Poderíamos investigar a adição de mais políticas de borda, que determinam como lidar com lacunas na borda da média móvel Tipo de ponderação Atualmente, o agg suporta quatro tipos de ponderação: simples. Uma média simples (aritmética). Padrão. linear. Uma média linearmente ponderada, de modo que os dados se tornem linearmente menos importantes à medida que envelhecem na janela singleexp. Única média exponencialmente ponderada (também conhecida como EWMA ou Browns Simple Exp Smoothing), de tal forma que os dados se tornam exponencialmente menos importantes à medida que envelhecem. Duplaexp. Double exponencialmente ponderada média (também conhecido como Holt-Winters). Usa dois termos exponenciais: primeiros dados lisos exponencialmente como singleexp. Mas depois aplicar segunda suavização corretiva para contabilizar uma tendência. Todo: Expose alfa e beta Alfa e beta são parâmetros que controlam o comportamento de singleexp e doubleexp. Alfa: controla até que ponto o único termo de suavização exponencial fica atrás dos pontos de inflexão na média por períodos de 1 / alfa. Alfa 1 significa que o termo de suavização não tem memória (período de 1) e emula uma caminhada aleatória. Alpha 0 significa que o termo de suavização tem memória infinita e relata a média dos dados Beta: Somente usado em doubleexp. Analogous ao alfa, mas aplicado ao alisamento da tendência melhor que à suavização dos dados. Todo: Investigar a ponderação métrica É útil, por vezes, ponderar um período de tempo não pela sua distância da hora actual, mas sim por alguma métrica que ocorreu nesse intervalo de tempo. Por exemplo. Peso do volume de transações ocorrido naquele dia. Deve ser possível peso com base em métricas dentro do balde, embora ele poderia ficar complicado se o valor está faltando. Solicitação de Amostra Isso calculará uma média móvel (janela deslizante de três dias) sobre a soma dos preços em cada dia: Exemplo de RespostaEm processos de fabricação e de negócios, existe uma ferramenta comum chamada de gráfico de controle. Criado em 1920 pelo Dr. Walter Shewhart, um gráfico de controle é usado para determinar se um processo está no controle ou fora de controle. Na época, o Dr. Shewhart estava trabalhando na Bell Labs tentando melhorar a qualidade do sinal das linhas telefônicas. Os componentes mal maquinados foram uma das principais causas de degradação do sinal, portanto, melhorar os processos de fabricação para produzir componentes mais uniformes foi um passo crítico na melhoria da qualidade do sinal. Dr. Shewhart percebeu que todos os processos, fabricação ou de outra forma, têm alguma quantidade de variação natural. A chave era identificar quando a variação estava se comportando normalmente (no controle), e quando de repente começou a mudar (fora de controle). Um processo que saiu de controle precisa ser interrompido para que o problema pode ser corrigido, em vez de churning fora sloppy componentes fabricados. As cartas de controle funcionam ativando um alerta quando o valor diverge suficientemente da média por uma certa quantidade. Na prática, eles são muito simples e intuitivos de ler, e muitas vezes atuam como detectores de anomalia de linha de frente devido à sua simplicidade e robustez. Suavização com médias móveis As tabelas de controle podem ser construídas com bastante facilidade em Elasticsearch usando uma combinação de agregações, incluindo as novas agregações de pipeline. Para começar, vamos ver alguns dados sintéticos que eu gerei para esta postagem. Por diversão, podemos imaginar que é a temperatura do refrigerante (em graus centígrados) para um reator nuclear. Vamos dar uma olhada nos dados em primeiro lugar, usando um balde histograma e uma métrica extendedstats: No gráfico, estamos traçando o avg para cada balde: Clique para tamanho completo. Como você pode ver, os dados são basicamente uma tendência plana, com uma distribuição aleatória em torno de 30. Os dados são barulhentos, então a primeira coisa que você gostaria de fazer é suavizar-lo para que você possa ver a tendência geral melhor. As médias moventes são grandes para este. Uma média móvel, basicamente, tem uma janela de valores, calcula a média, em seguida, move a janela para a frente um passo. Existem vários tipos diferentes de médias móveis que você pode escolher. Vamos usar uma Média Móvel Ponderada Exponencialmente (EWMA). Este tipo de média móvel reduz a importância de um ponto de dados exponencialmente à medida que se torna mais antigo na janela. Isso ajuda a manter a média móvel centrada nos dados em vez de ficar para trás. Na seguinte consulta, adicionamos um movavgmean agregação de pipeline média móvel que calcula a média móvel de cada baldes avg (ou seja, uma média deslizante de médias): Existem alguns bits interessantes aqui: bucketspath aponta para o valor médio calculado dentro de nossa métrica extendedstats Janela está definida para 24, o que significa que queremos média das últimas 24 horas em conjunto modelo está definido para ewma E, finalmente, vamos configurar algumas configurações para este modelo específico. A configuração alpha controla o quão suave é a média móvel gerada. O padrão (0,3) é geralmente muito bom, mas eu gostei do olhar de 0,1 melhor para esta demo. Confira os documentos para obter mais informações sobre como funciona alfa. E o gráfico resultante agora inclui uma linha bem suavizada (roxo): No controle Então, a questão é. Será que este gráfico olhar no controle Existe uma razão que você deve desligar o reator, ou está tudo funcionando sem problemas Eu admito, eu estava sendo sneaky no gráfico anterior: Eu traçado a média. Conforme discutido anteriormente. A média é uma métrica bastante pobre na maioria dos casos. Neste conjunto de dados, está escondendo um grande pico que eu coloquei na quinta-feira. Se traçarmos o valor máximo em cada balde (linha amarela) o pico é imediatamente claro: Espero que você desligou o reator na quinta-feira) Como poderíamos ter detectado este pico Neste gráfico, a anomalia é absurdamente claro. Você poderia usar um limiar simples. Mas, bem como ver mais adiante, limiares freqüentemente falham sob padrões mais complexos. Em vez disso, vamos criar um gráfico de controle. As cartas de controle consideram um processo fora de controle se os pontos de dados começam a cair três desvios padrão longe da média. Com isso em mente, podemos modificar nossa agregação para transformá-la em um gráfico de controle de boa-fé. Para fazer isso, precisamos adicionar duas novas agregações: uma média móvel no desvio padrão e um script que calcula o limite superior: O novo movavgstd pipeline agg é muito simples: é simplesmente um EWMA (com configurações padrão) que as médias A métrica stats. stddeviation nas últimas 24 horas. O agendamento de pipeline shewhartucl é um bucketscript que calcula o limite de controle superior aka, o ponto no tempo quando você começa a se preocupar porque o processo ficou fora de controle. Pense nisso como um limiar dinâmico. O limiar é calculado multiplicando o desvio padrão de rolamento por três, depois adicionando-o à média de rolamento. Eu omiti-lo para a brevidade, mas a maioria dos gráficos de controle também incluem um limite de controle mais baixo. Para adicionar isso, você simplesmente copiaria shewhartucl. Subtrair três desvios padrão em vez de adicionar, e renomeá-lo para shewhartlcl. Nota: Im usando um script inline para conveniência. Você pode substituí-lo por um script estático se o script dinâmico inline estiver desabilitado no cluster. Altura média lisa: roxo Valor máximo: amarelo Limite de controlo superior: verde Podemos representar um gráfico e ver que o pico (amarelo) dispara para além do limite de controlo (verde). Em um sistema real, isso é quando você envia um alerta ou e-mail. Ou talvez algo mais drástico, uma vez que este é um reator nuclear que estamos modelando) Conclusão Isso é tudo para esta semana. Para recapitular, usamos as novas agregações de pipeline para suavizar nossos dados com uma média móvel. Em seguida, construímos um gráfico de controle para encontrar dinamicamente outliers calculando um limite de controle superior com base na média móvel e um desvio padrão em movimento. Na parte dois. Bem veja como o mesmo gráfico de controle pode ser usado para padrões de dados mais interessantes, como tendências lineares e comportamento cíclico. Bem também ver como integrá-lo com o Observador para que possamos receber notificações de e-mail automaticamente. Confira

No comments:

Post a Comment