Habilitei o grok
filtro em nossa configuração do logstash para analisar os logs do HAProxy usando os padrões %{HAPROXYHTTP}
e . %{HAPROXYTCP}
Isso parece funcionar muito bem e, visualizando os detalhes de qualquer entrada de log do haproxy, posso ver os vários campos extraídos (bytes_read, client_ip, client_port, termination_state, actconn, feconn, etc).
Mas na tela "Criar uma nova visualização" do Kibana, nenhum desses campos está disponível no pop-up "Campos" ao configurar o eixo Y.
O que preciso fazer para disponibilizar esses campos extraídos para visualizações?
O Kibana rastreia independentemente os mapeamentos do ElasticSearch para que possa fazer traduções entre os tipos de dados do ES e os tipos de campos que o Kibana usa. Essa lista de mapeamento precisa ser atualizada. Você pode encontrá-lo em Gerenciamento --> Padrões de Índice. Quando estiver na lista de padrões de índice, selecione o índice ao qual você adicionou os campos e clique no botão de atualização redondo (ao lado do botão da lixeira, é claro). Ele irá lembrá-lo de que está redefinindo os números de popularidade dos campos; mas tudo bem, você quer ver novos.
A resposta do @sysadmin1138 foi metade do problema. A outra metade do problema é que, por razões que devem ter parecido boas na época, mas parecem incrivelmente míopes agora, os padrões de logstash para haproxy não fornecem tipos de dados explícitos para campos. Por exemplo,
HAPROXYTCP
é definido como:Como, por exemplo,
bytes_read
é definido como%{NOTSPACE:bytes_read}
, é umstring
tipo de dados e, portanto, não está disponível para visualizações. Corrigir isso significa criar mapeamentos personalizados em um modelo de índice antes de preenchê-lo com qualquer dado, então (a) jogue fora todos os seus dados existentes e (b) descubra uma lista de todos os campos que você deseja usar que estão digitados incorretamente .(NB: Isso também parece ser verdade para os
httpd
padrões, como%{HTTPD_COMMONLOG}
. E provavelmente para todo o resto também.)