Dicas e truques para converter dados não estruturados de logs em ELK Stack usando GROK no LogStash

Estruturando dados não estruturados com GROK



Se você estiver usando a pilha Elastic (ELK) e estiver interessado em mapear logs personalizados do Logstash para o Elasticsearch, esta postagem é para você.





O ELK Stack é uma abreviação de três projetos de código aberto: Elasticsearch, Logstash e Kibana. Juntos, eles formam uma plataforma de gerenciamento de logs.



  • O Elasticsearch é um mecanismo de pesquisa e análise.
  • O Logstash é um pipeline de processamento de dados do lado do servidor que pega dados de várias fontes ao mesmo tempo, os transforma e os envia para um cache como o Elasticsearch.
  • O Kibana permite aos usuários visualizar dados usando tabelas e gráficos no Elasticsearch.


Beats surgiu mais tarde e é um remetente leve de dados. A introdução do Beats transformou o Elk Stack em Elastic Stack, mas esse não é o ponto.



Grok, Logstash, , . Logstash Elasticsearch.





Grok- Logstash, - . (regex) .



, Grok , .



Grok





Grok, Logstash Elasticsearch Kibana, .



, . , .





localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0


, , , .



, , , API. .





  • ​ localhost == environment
  • ​ GET == method
  • ​ /v2/applink/5c2f4bb3e9fda1234edc64d == url
  • ​ 400 == response_status
  • ​ 46ms == response_time
  • ​ 5bc6e716b5d6cb35fc9687c0 == user_id


, . – . .



Grok



Grok



Logstash 100 . , , apache, linux, haproxy, aws .



, , ? Grok.



Grok



, Grok. Grok Debugger Grok Patterns.



, Grok : %{SYNTAX:SEMANTIC}



, , Discover Grok. , , Grok, , .





, Grok, , Github Elastic.





, - , .





Grok https://grokdebug.herokuapp.com/



:



localhost GET /v2/applink/5c2f4bb3e9fda1234edc64d 400 46ms 5bc6e716b5d6cb35fc9687c0


Pattern:



%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}




{
  "environment": [
    [
      "localhost"
    ]
  ],
  "method": [
    [
      "GET"
    ]
  ],
  "url": [
    [
      "/v2/applink/5c2f4bb3e9fda1234edc64d"
    ]
  ],
  "response_status": [
    [
      "400"
    ]
  ],
  "BASE10NUM": [
    [
      "400"
    ]
  ],
  "response_time": [
    [
      "46ms"
    ]
  ],
  "user_id": [
    [
      "5bc6e716b5d6cb35fc9687c0"
    ]
  ]
}


Grok , — Logstash.



Logstash.conf



, ELK, Logstash:



sudo vi /etc/logstash/conf.d/logstash.conf


.



input { 
  file {
    path => "/your_logs/*.log"
  }
}
filter{
  grok {
    match => { "message" => "%{WORD:environment} %{WORD:method} %{URIPATH:url} %{NUMBER:response_status} %{WORD:response_time} %{USERNAME:user_id}"}
  }
}
output {
  elasticsearch {
    hosts => [ "localhost:9200" ]
  }
}


Logstash , , .



sudo service logstash restart
sudo service logstash status


, , , Elasticsearch Logstash Kibana!





Grok !





, , Grok Elasticsearch. . , , , url-.



Tente dar uma chance às expressões Grok! Se você tiver outra maneira de fazer isso ou tiver algum problema com os exemplos acima, basta escrever um comentário abaixo para me informar.



Obrigado pela leitura - e siga-me aqui no Medium para obter artigos mais interessantes sobre engenharia de software!



Recursos

https://www.elastic.co/blog/do-you-grok-grok

https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns

https://grokdebug.herokuapp.com/



PS Link para a fonte



Canal de telegrama do Elasticsearch




All Articles