Graylog: Primeiros passos
Como começar a utilizar o Graylog
👋 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!
Criar o primeiro input no Graylog
Um input é o ponto de entrada onde o Graylog recebe os seus logs. Pode enviar logs através de TCP ou UDP. Além disso, o Graylog pode recolher registos a partir de uma API, de uma fila Kafka, de um servidor RabbitMQ e por outros métodos.
Neste exemplo, vamos criar um input UDP bruto. Para começar, abra a interface do Graylog e navegue até "System" e depois "Inputs". Escolha "Raw/Plaintext UDP" e clique em "Launch new input". Configure o seu input com os seguintes valores e valide o formulário:
- Node: Selecione o seu nó
- Title: RAW UDP
- Port: 5555
De seguida, abra um terminal no seu computador e envie uma mensagem UDP para o seu servidor Graylog. Lembre-se de substituir XXXXXX pelo nome de domínio do seu serviço:
- No macOS:
echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555 - No Linux:
echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555
Depois de enviar a mensagem, volte ao Graylog e clique em "Search". Deverá ver a sua mensagem 🎉
Parabéns, acabou de enviar a sua primeira mensagem para o Graylog! Sinta-se à vontade para criar inputs e dashboards adicionais adaptados às suas necessidades. Para mais informações, consulte a documentação oficial do Graylog.
Exemplos de código Graylog
Vários exemplos de código estão disponíveis no nosso repositório Git. Este repositório oferece implementações práticas e personalizações adicionais para o ajudar a tirar o máximo partido do Graylog.
Enviar logs rsyslog para o Graylog com encriptação TLS
Se tem um cliente rsyslog e pretende enviar logs de forma segura para o Graylog, siga estes passos:
Não ative nenhuma opção de TLS no input do Graylog. O TLS será gerido diretamente por um reverse proxy na sua instância, pelo que o Graylog não irá tratar deste processo.
-
Aceda à configuração do seu serviço Graylog no dashboard da Stackhero e ative a "encriptação TLS" para a porta Syslog TCP 514.
-
Atualize a configuração do seu rsyslog conforme indicado abaixo. Substitua
<XXXXXX>.stackhero-network.compelo hostname da sua instância:# Definir o certificado CA TLS global( DefaultNetstreamDriver="gtls" DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt" ) # Enviar todos os logs para um servidor remoto # É criada uma fila em disco para esta ação. Se o host remoto estiver # indisponível, as mensagens são armazenadas em disco e enviadas assim que voltar a estar acessível # Consulte https://www.rsyslog.com/doc/v8-stable/configuration/actions.html # e https://www.rsyslog.com/doc/v8-stable/configuration/modules/omfwd.html *.* action( type="omfwd" target="<XXXXXX>.stackhero-network.com" port="514" protocol="tcp" KeepAlive="on" KeepAlive.Interval="30" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" ResendLastMSGOnReconnect="on" queue.filename="fwdRule1" # prefixo único para ficheiros de spool queue.type="LinkedList" queue.maxDiskSpace="256m" queue.saveOnShutdown="on" action.resumeRetryCount="-1" action.resumeInterval="30" ) -
Reinicie o serviço rsyslog e verifique a configuração enviando um log com o seguinte comando:
logger This is a test
A configuração está concluída. Está agora a enviar logs de forma segura para o Graylog através de TLS!
Resolver o erro "failed to parse field [XXXX] of type [YYYY]"
Poderá encontrar um erro como:
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
Pode consultar este erro nos logs disponíveis no dashboard da Stackhero ou no painel de administração do Graylog em System > Overview > Indexer failures.
Este erro indica que foi enviado um log com um valor para o campo time que não corresponde ao tipo esperado (neste caso, um valor numérico do tipo "long"). O Graylog utiliza a funcionalidade de mapeamento dinâmico do OpenSearch. Quando um log é enviado pela primeira vez, o OpenSearch tenta adivinhar o tipo dos campos. Por exemplo, se um log incluir o campo time com o valor numérico 1234, o OpenSearch define-o como um campo numérico. Se outro log for enviado com o campo time definido como "abcd", uma string, o OpenSearch irá rejeitá-lo porque espera um valor numérico.
Tenha em atenção que o nome do campo time é apenas um exemplo. Pode tratar-se de qualquer nome de campo e tipo.
Para resolver este problema, é necessário redefinir o tipo que o OpenSearch espera. Para mais informações, consulte a documentação oficial do Graylog.
Atualizar o mapping do OpenSearch
Antes de avançar, ative o acesso ao OpenSearch no dashboard da Stackhero. Aceda ao seu serviço Graylog e clique no botão "Configurar" para ativar o acesso ao OpenSearch.
Tenha cuidado com estas alterações, pois uma configuração incorreta pode bloquear o seu cluster OpenSearch e resultar em perda de dados. Se não tiver a certeza, não prossiga.
-
Defina o seu novo mapping. Neste exemplo, redefinimos o campo
timepara ser do tipo string. Pode consultar os tipos disponíveis na documentação dos tipos de campo do OpenSearch. -
Guarde o seguinte conteúdo num ficheiro chamado
graylog-custom-mapping.json:{ "template": "graylog_*", "mappings": { "message": { "properties": { "time": { "type": "string", "index": "not_analyzed" } } } } } -
Envie este ficheiro utilizando o seguinte comando curl (substitua
<XXXXXX>.stackhero-network.compelo domínio da sua instância):curl -u 'admin' -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'https://<XXXXXX>.stackhero-network.com/opensearch/_template/graylog-custom-mapping?pretty'Deverá receber uma resposta semelhante a:
{ "acknowledged": true } -
Por fim, verifique se o mapping foi atualizado com este comando (substitua o domínio conforme necessário):
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'
Resolver o erro "Unable to write audit log entry"
Se visualizar um erro como:
Unable to write audit log entry because there is no valid license
ou
Not running cleanup for auditlog entries in MongoDB because there is no valid license
isto acontece porque o Graylog Enterprise foi ativado sem uma licença válida. Se tiver uma licença, pode inseri-la na interface do Graylog. Se não tiver licença, basta desativar o Graylog Enterprise no dashboard da Stackhero.