Graylog: Introdução
Como começar com 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 uma primeira entrada no Graylog
Uma entrada é o ponto final onde o Graylog recebe os seus logs. Pode enviar logs usando TCP ou UDP. Além disso, o Graylog pode recolher entradas de logs a partir de uma API, de uma fila Kafka, de um servidor RabbitMQ e de outros métodos.
Neste exemplo, vamos criar uma entrada UDP bruta. 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 a sua entrada com os seguintes valores e valide o formulário:
- Node: Selecione o seu nó
- Title: RAW UDP
- Port: 5555
Em 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
Após enviar a mensagem, volte ao Graylog e clique em "Search". Deverá ver a sua mensagem 🎉
Parabéns, enviou agora a sua primeira mensagem para o Graylog! Sinta-se à vontade para criar entradas e dashboards adicionais adaptados às suas necessidades. Para mais orientações, pode achar útil 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 proveito do Graylog.
Enviar logs rsyslog para o Graylog usando encriptação TLS
Se tiver um cliente rsyslog e quiser enviar logs de forma segura para o Graylog, siga estes passos:
Não ative nenhuma opção TLS na entrada do Graylog. O TLS será gerido diretamente por um proxy reverso na sua instância para que o Graylog não o trate.
-
Vá à configuração do seu serviço Graylog no painel Stackhero e ative "TLS encryption" para a porta Syslog TCP 514.
-
Atualize a sua configuração rsyslog conforme indicado abaixo. Substitua
<XXXXXX>.stackhero-network.compelo nome do host da sua instância:# Definir certificado CA TLS global( DefaultNetstreamDriver="gtls" DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt" ) # Enviar todos os logs para um servidor remoto # Uma fila em disco é criada para esta ação. Se o host remoto estiver # offline, as mensagens são colocadas em fila no disco e enviadas quando voltar a estar disponível # Veja 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 de nome único para ficheiros de spool queue.type="LinkedList" queue.maxDiskSpace="256m" queue.saveOnShutdown="on" action.resumeRetryCount="-1" action.resumeInterval="30" ) -
Reinicie o seu serviço rsyslog e verifique a configuração enviando um log com o comando:
logger This is a test
Isto completa a configuração. Está agora a enviar logs de forma segura para o Graylog usando encriptação TLS!
Lidar com o erro "failed to parse field [XXXX] of type [YYYY]"
Pode encontrar um erro como:
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
Pode ver este erro nos logs fornecidos no painel Stackhero ou no painel de administração do Graylog em System > Overview > Indexer failures.
Este erro indica que um log foi enviado 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 os tipos de 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.
Lembre-se de que o nome do campo time é usado apenas para ilustração. Pode ser qualquer nome de campo e tipo.
Para resolver este problema, precisa de redefinir o tipo que o OpenSearch espera. Para mais informações, consulte a documentação oficial do Graylog.
Atualizar o mapeamento do OpenSearch
Antes de prosseguir, ative o acesso ao OpenSearch no painel Stackhero. Navegue até ao seu serviço Graylog e clique no botão "Configure" para ativar o acesso ao OpenSearch.
Tenha cuidado com estas alterações, pois configurações incorretas podem bloquear o seu cluster OpenSearch e potencialmente resultar em perda de dados. Se não tiver certeza, não prossiga.
-
Defina o seu novo mapeamento. Neste exemplo, redefinimos o campo
timepara ser do tipo string. Pode encontrar os tipos disponíveis na documentação dos tipos de campos 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 usando o seguinte comando curl (substitua
<XXXXXX>.stackhero-network.compelo nome de 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 como:
{ "acknowledged": true } -
Finalmente, verifique se o mapeamento 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'
Lidar com o erro "Unable to write audit log entry"
Se vir 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 ocorre 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 uma licença, simplesmente desative o Graylog Enterprise no painel Stackhero.