Graylog: Escolher tipos de input

Como escolher o tipo de input Graylog adequado

👋 Bem-vindo à documentação da Stackhero!

A Stackhero oferece uma solução Graylog cloud pronta a usar que proporciona uma série de benefícios, incluindo:

  • Servidor de email SMTP ilimitado e dedicado incluído.
  • Atualizações sem esforço com apenas um clique.
  • Nome de domínio personalizável seguro com HTTPS (por exemplo, https://logs.sua-empresa.com).
  • Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.

Poupe tempo e simplifique a sua vida: são necessários apenas 5 minutos para experimentar a solução Graylog cloud hosting da Stackhero!

O Graylog oferece uma variedade de inputs. Estes inputs permitem-lhe enviar logs para o servidor Graylog ou possibilitar que o Graylog recolha logs de outra fonte.

Na grande maioria dos casos, irá querer enviar dados de uma aplicação ou de um dispositivo para o servidor Graylog. Não iremos abordar aqui os casos avançados em que pretende que o Graylog recolha logs de outro local. No entanto, se for esse o seu objetivo, fique descansado, é muito simples de configurar.

Para escolher o tipo de input mais adequado, deve primeiro decidir qual o formato de log que pretende enviar para o Graylog. Recomendamos a utilização do formato GELF, conforme detalhado abaixo.

De seguida, terá de escolher o protocolo: UDP ou TCP.

A primeira decisão é escolher o formato das suas mensagens de log. Existem três opções principais: RAW/Plaintext, Syslog ou GELF.

Este é o formato mais simples. Funciona com qualquer sistema porque envia uma mensagem em texto simples. É muito fácil de utilizar e perfeito para testes iniciais, como enviar uma mensagem usando a ferramenta netcat.

Para testar, pode criar um input "Raw/Plaintext UDP" e depois enviar um log de teste com um dos seguintes comandos:

  1. Em macOS: echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555
  2. Em Linux: echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555

É muito simples, não é? No entanto, por ser um formato básico, irá rapidamente encontrar limitações. Por isso, desaconselhamos a sua utilização para além de testes simples.

Este é um formato bem conhecido e amplamente utilizado para armazenar e enviar logs em ambientes de servidores. Está presente em Linux, Windows, *BSD, entre outros sistemas operativos.

Se utiliza Syslog, Rsyslog ou outro serviço compatível e pretende enviar logs de um servidor para o Graylog, o input syslog é a opção mais simples.

No entanto, como o GELF é mais poderoso, se conseguir enviar mensagens no formato GELF, recomendamos que o faça, conforme explicado abaixo.

Note que o formato syslog está limitado a 1024 caracteres.

GELF significa "Graylog Extended Log Format". Este formato foi criado pelo Graylog e tornou-se amplamente adotado por muitos produtos, estabelecendo-se como um standard.

O formato GELF é poderoso porque permite enviar logs de forma estruturada. O registo estruturado possibilita transmitir vários campos e valores, em vez de uma única mensagem de texto não estruturada. Isto facilita a análise e a pesquisa de informação pelo Graylog.

Por exemplo, se quiser enviar um log que contenha um endereço IP e um tipo de pedido, pode enviar uma mensagem com dois campos chamados ip e request_type. No Graylog, poderá pesquisar diretamente nestes campos, como por exemplo todas as requisições com a consulta: request_type: POST.

O GELF baseia-se em JSON e deve incluir pelo menos os campos version, host e short_message. Pode depois adicionar campos adicionais, que devem ser precedidos por um underscore (_).

Por exemplo, uma mensagem simples com um campo adicional chamado device_id será assim:

{
  "version": "1.1",
  "host": "myIotDevice",
  "short_message": "Something is happening",
  "_device_id": "abcd"
}

Depois, pode pesquisar todas as mensagens provenientes do dispositivo "abcd" no Graylog usando a consulta: device_id: abcd.

Para mais detalhes sobre o GELF, pode consultar a especificação oficial aqui: https://docs.graylog.org/en/4.0/pages/gelf.html.

Se quiser enviar logs de servidores ou aplicações, pode utilizar uma das muitas bibliotecas disponíveis que criam e enviam automaticamente as suas mensagens. Existem exemplos para Node.js, .NET e Python.

Depois de selecionar o formato apropriado (esperamos que tenha escolhido GELF!), precisa de escolher o protocolo de comunicação entre TCP e UDP.

O protocolo UDP é bastante simples. A sua aplicação envia a mensagem para o servidor sem necessitar de confirmação de receção. Não existe diálogo entre o cliente e o servidor, ou seja, o servidor não confirma que recebeu a mensagem.

A vantagem desta abordagem é que, se o seu servidor Graylog estiver lento ou indisponível, isso não irá afetar o desempenho da sua aplicação. O inconveniente é que não pode garantir que todos os logs enviados pela sua aplicação cheguem ao servidor. Além disso, a encriptação não está disponível com UDP.

  1. Não afeta a sua aplicação se o Graylog estiver lento ou indisponível.
  1. Algumas mensagens podem perder-se.
  2. A encriptação não está disponível.
  3. O tamanho das mensagens está limitado a 8192 bytes.

O protocolo TCP, ao contrário do UDP, permite a troca de informação entre a sua aplicação e o Graylog. Isto significa que recebe uma confirmação de que a mensagem foi recebida pelo Graylog.

A vantagem do TCP é que pode reenviar uma mensagem caso não seja recebida pelo Graylog (por exemplo, se o servidor estiver indisponível). O inconveniente é que, se o Graylog estiver lento ou não responder, a sua aplicação terá de aguardar uma resposta ou um timeout, o que pode abrandá-la.

Outra vantagem é que pode encriptar as comunicações com TLS (também conhecido como SSL).

  • Garante que a mensagem foi recebida.
  • Encriptação disponível (TLS).
  • Sem limitação de tamanho de mensagem
  • Pode abrandar o emissor se o Graylog responder lentamente ou estiver indisponível.

Esperamos que este guia lhe tenha fornecido a informação necessária para escolher o melhor formato e protocolo para enviar os seus logs para o Graylog.

Lembre-se, pode ter vários inputs a funcionar em simultâneo utilizando portas diferentes para cada um. Por exemplo, pode ter um input "syslog UDP" na porta 514 e um input "GELF TCP" na porta 12201.