AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 857403
Accepted
Mikhail T.
Mikhail T.
Asked: 2017-06-23 15:56:42 +0800 CST2017-06-23 15:56:42 +0800 CST 2017-06-23 15:56:42 +0800 CST

Agregando estatísticas de eventos antigos e novos

  • 772

Gostaríamos de alimentar logs de CDN em Graphite e agregar números encontrados lá (taxa de diferentes códigos de status HTTP, tamanhos médios de resposta, taxa média de acertos de cache etc.)

No entanto, os logs são enviados para nós apenas ocasionalmente e algumas vezes até fora de ordem - de vez em quando, um log matinal pode ser carregado à noite, horas depois que o log da tarde foi carregado e processado. Além disso, como o CDN (obviamente) possui vários servidores e data centers, diferentes logs podem cobrir períodos sobrepostos .

Isso significa que qualquer agregador precisa manter o acesso a todas as estatísticas anteriores para poder aumentar as agregações ao processar um novo log...

O que - se alguma coisa - pode fazer isso? E como configuro o logstash para alimentá-lo? Obrigado!

logstash
  • 1 1 respostas
  • 66 Views

1 respostas

  • Voted
  1. Best Answer
    sysadmin1138
    2017-06-24T19:32:08+08:002017-06-24T19:32:08+08:00

    Este é um problema complexo, como você bem sabe. Você marcou o Logstash em sua pergunta, então vou assumir que você tem isso.

    A ingestão de logs é o que o Logstash faz. Ele tem um file {}plugin de entrada apenas para isso:

    input {
      file {
        path => [ '/opt/export/cdn_logs/*.csv'
        tags => [ 'cdnlogs' ]
      }
    }
    

    E um csv {}filtro para facilitar a ingestão de dados CSV.

    filter {
      if 'cdnlogs' in [tags] {
        csv {
          source => "message"
          columns => [
            'cdndate',
            'host_server',
            [...]
            'response_time' ]
        }
      }
    }
    

    Se você não tiver dados CSV, talvez essas linhas estejam em um formato Apache de aparência bastante normal, nem tudo está perdido. Você provavelmente precisará gastar tempo com grok. Isso é coisa própria.

    A ordenação de datas é um problema menor, desde que você tome cuidado para preservar seus carimbos de data e hora e não use statsd que manifestamente não os preserva. Se você ainda não fez isso, o Logstash pode pegar a data no arquivo de log e torná-la o carimbo de data/hora do evento.

    filter {
      date {
        match => [ "cdndate", "ISO8601" ]
      }
    }
    

    Isso obtém o carimbo de data/hora da linha de log como o carimbo de data/hora do evento. Legal, agora para transformar isso em algo útil.

    O armazenamento de dados de estoque para o Logstash é elasticsearch , que a Elastic (a empresa) está ocupada tentando faturar um armazenamento de dados de série de tempo tão bom quanto as ferramentas criadas especificamente como InfluxDB ou OpenTSDB. Pode ser, embora, na minha experiência, os construídos com propósito tenham um desempenho melhor. Tudo isso pode, supondo que você os insira corretamente, armazenar eventos fora de ordem na ordem correta para que consultas posteriores possam assimilar as novas informações.

    A graphite {}saída do Logstash preservará os carimbos de data e hora, o que permite que você use grafite como seu armazenamento de apoio para isso, se desejar.

    Os plugins influxdb {}e opentsdb {}saída existem e irão colocar seus dados em um verdadeiro banco de dados de séries temporais.

    A partir daí, a agregação/resumo para dados de curto prazo (alguns dias da sua explicação) deve ser feita no momento da consulta. Uma ferramenta como o grafana pode fazer frente a vários desses datastores e facilitar a exibição. Depois de ultrapassar sua zona de risco para chegada de logs, você pode executar um processo ETL posterior para gerar agregações/resumos no banco de dados com base no conjunto de dados completo . E, em seguida, limpe os logs de detalhes completos conforme necessário.

    Resumindo, o método:

    1. Ingere arquivos usando o Logstash.
    2. Aproveita a filtragem para extrair os campos dos arquivos de log CDN.
    3. Usa o date {}filtro para puxar o carimbo de data/hora do log para o carimbo de data/hora do evento.
    4. Exporta os dados para algo (elástico, grafite ou algum outro banco de dados de série temporal)
    5. As ferramentas de exibição usam consultas de agregação em tempo real para exibir dados aos consumidores, pelo menos para dados de curto prazo.
    6. Após um período, provavelmente alguns dias, um processo com script ou outro processo automatizado gera agregações e as insere no armazenamento de dados.
    7. Após mais tempo, os dados de resolução total são eliminados, deixando apenas os dados agregados.
    • 2

relate perguntas

  • Tipo de campo não sendo honrado no Kibana/Elasticsearch

  • Collectd --> Elasticsearch se o host remoto não puder se conectar ao elasticsearch central

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve