Graylog: Escolher tipos de entrada

Como escolher o tipo de entrada Graylog correto

👋 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 entradas. Estas entradas permitem-lhe enviar logs para o servidor Graylog ou habilitar o Graylog a buscar logs de outra fonte.

Em quase todos os casos, desejará enviar dados de uma aplicação ou dispositivo para o servidor Graylog. Não cobriremos os casos avançados onde deseja que o Graylog busque logs de outro lugar. No entanto, se desejar fazê-lo, fique tranquilo, é muito simples.

Para escolher o melhor tipo de entrada, primeiro precisa decidir o formato de log que deseja enviar para o Graylog. Recomendamos usar o formato GELF, conforme detalhado abaixo.

Em seguida, precisará selecionar 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 de texto completo. É muito fácil de usar e é perfeito para testes iniciais, como enviar uma mensagem usando a utilidade netcat.

Para testá-lo, pode criar uma entrada "Raw/Plaintext UDP" e depois enviar um log de teste usando uma das seguintes linhas de comando:

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

É muito fácil, não é? No entanto, por ser um formato básico, encontrará rapidamente limitações. Portanto, desencorajamos o uso para mais do que simples testes.

Este é um formato bem conhecido, amplamente utilizado para armazenar e enviar logs em ambientes de servidor. Pode encontrá-lo em Linux, Windows e *BSD, entre outros sistemas operativos.

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

No entanto, como o GELF é mais poderoso, se puder enviar mensagens no formato GELF, recomendamos fazê-lo, conforme explicado abaixo.

Note que o formato syslog é 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 padrão.

O formato GELF é poderoso porque envia logs de forma estruturada. O registo estruturado permite transmitir múltiplos campos e valores em vez de uma única mensagem de texto não estruturada. Isso facilita a análise e recuperação das informações 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 lado do Graylog, poderá pesquisar diretamente nesses campos, como procurar todos os pedidos com a consulta: request_type: POST.

O GELF é baseado em JSON e deve incluir pelo menos os campos version, host e short_message. Pode então adicionar campos adicionais, que devem ser precedidos por um sublinhado (_).

Por exemplo, uma mensagem simples com um campo adicional chamado device_id parece-se com isto:

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

Pode então procurar todas as mensagens 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 usar uma das muitas bibliotecas disponíveis que criam e enviam automaticamente as suas mensagens. Exemplos estão disponíveis para Node.js, .NET, e Python.

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

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

A vantagem desta abordagem é que se o seu servidor Graylog estiver lento ou inativo, isso não afetará o desempenho da sua aplicação. A desvantagem é que não pode ter certeza de que cada log enviado pela sua aplicação chegará 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 inativo.
  1. Algumas mensagens podem ser perdidas.
  2. A encriptação não está disponível.
  3. O tamanho da mensagem é limitado a 8192 bytes.

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

A vantagem do TCP é que pode reenviar uma mensagem se não for recebida pelo Graylog (por exemplo, quando o servidor está inativo). A desvantagem é que se o Graylog estiver lento ou não responder, a sua aplicação deve esperar por uma resposta ou um tempo limite, potencialmente desacelerando-a.

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

  • Garante que a mensagem foi recebida.
  • A encriptação está disponível (TLS).
  • Sem limitação de tamanho de mensagem
  • Pode desacelerar o remetente se o Graylog estiver lento a responder ou inativo.

Esperamos que este guia lhe tenha fornecido as informações necessárias para escolher o melhor formato e protocolo para enviar os seus logs para o Graylog.

Lembre-se, pode executar várias entradas ao mesmo tempo usando portas diferentes para cada uma. Por exemplo, pode ter uma entrada "syslog UDP" na porta 514 em paralelo com uma entrada "GELF TCP" na porta 12201.