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.
Selecionar o formato de input
A primeira decisão é escolher o formato das suas mensagens de log. Existem três opções principais: RAW/Plaintext, Syslog ou GELF.
Formato RAW/Plaintext
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:
- Em macOS:
echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555 - 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.
Formato Syslog
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.
Formato GELF (recomendado)
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.
Escolher o protocolo adequado
Depois de selecionar o formato apropriado (esperamos que tenha escolhido GELF!), precisa de escolher o protocolo de comunicação entre TCP e UDP.
Protocolo 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.
Vantagens
- Não afeta a sua aplicação se o Graylog estiver lento ou indisponível.
Desvantagens
- Algumas mensagens podem perder-se.
- A encriptação não está disponível.
- O tamanho das mensagens está limitado a 8192 bytes.
Protocolo TCP
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).
Vantagens
- Garante que a mensagem foi recebida.
- Encriptação disponível (TLS).
- Sem limitação de tamanho de mensagem
Desvantagens
- Pode abrandar o emissor se o Graylog responder lentamente ou estiver indisponível.
Conclusão
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.