Quando você enfrenta algum problema com o desempenho do seu servidor, a primeira coisa que você quer fazer é verifique seus logs do Linux. No log do sistema, você pode encontrar algumas mensagens de diagnóstico úteis de diferentes componentes do sistema operacional, como o kernel ou vários serviços, então provavelmente você encontrará a causa da falha lá.
Cada mensagem no log é gerada em resultado de certos eventos no sistema operacional: do usuário, autorização para desligamento do serviço ou falha do aplicativo. Esses eventos têm prioridades diferentes dependendo de quão críticos eles são. Existem os seguintes tipos de eventos no Linux:
emerg- falha, prioridade máxima;alert- aviso urgente;crit- evento crítico;err- erro comum;warn- advertência ordinária;notice- notificação;info- mensagem informativa;debug- informações de depuração;
No momento, os principais serviços de coleta de logs no Linux são rsyslog e systemd-journal. Eles acompanham a maioria dos pacotes de distribuição modernos e funcionam de forma independente.
rsyslog
Os registros deste serviço estão localizados em “/ var / log /” pasta na forma de arquivos de texto comuns. As mensagens de log são colocadas em arquivos diferentes dependendo do tipo de evento. Por exemplo, “/var/log/auth.log“contém informações sobre a autorização dos usuários no sistema e “/var/log/kern.log” contém mensagens do kernel. Os nomes dos arquivos podem diferir entre os pacotes de distribuição, então vamos dar uma olhada no arquivo de configuração para ter uma ideia do que está onde “/etc/rsyslog.d/50-default.conf".
Essas regras exibem qual arquivo contém cada tipo de mensagem de log. A parte esquerda exibe o tipo de mensagem no seguinte formato “[Fonte].[Prioridade]” e a parte direita exibe o nome do arquivo de log. Ao escrever o tipo de mensagem “*” caractere pode ser adicionado. Isso significa valor vazio ou “Nenhum” que o remove da lista. Vamos dar uma olhada mais de perto nas duas primeiras regras.
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
A primeira regra significa que todas as mensagens recebidas do mecanismo de autorização serão registradas em “/var/log/auth.log”. Todas as tentativas de autorização (tanto bem-sucedidas quanto não) serão registradas neste arquivo. A segunda regra indica que todas as mensagens, exceto aquelas conectadas com autorização, serão registradas em “/ var / log / syslog” arquivo. Esses dois arquivos são geralmente os mais populares. As regras a seguir definem o caminho para armazenar logs do kernel “núcleo.*"e registros de serviços de correio"correspondência.*"
Os arquivos de log podem ser abertos com a ajuda de qualquer editor de texto, como menos, gato, cauda. Vamos abrir o “/var/log/auth.log" Arquivo
less /var/log/auth.log
Cada linha do arquivo é uma mensagem separada recebida do aplicativo ou serviço. Todas as mensagens, independentemente de sua fonte, têm um formato e consistem em 5 partes. Vamos pegar a mensagem destacada na captura de tela como exemplo.
- Carimbo de data/hora da mensagem - “12 de fev 06:18:33”
- Nome do computador que enviou a mensagem - “vds”
- Nome do aplicativo ou serviço que enviou a mensagem - “sshd”
- ID do processo - [653]
- Texto da mensagem - “Senha aceita para mihail de 188.19.42.165 porta 2849 ssh2”
Este foi um exemplo de uma conexão SSH bem-sucedida.
E aqui está a aparência de uma tentativa de login malsucedida:
Este arquivo também registra comandos com permissões avançadas
Vamos abrir o / var / log / syslog lima
Uma mensagem destacada na captura de tela é a mensagem sobre o desligamento da interface de rede.
Para pesquisar informações em arquivos de texto longos, use grep utilitário. Você pode encontrar todas as mensagens recebidas de pptpd serviço no “/ var / log / syslog" Arquivo.
grep 'pptpd' /var/log/syslog
Durante o diagnóstico você pode usar cauda utilitário que pode exibir várias últimas linhas de arquivos. Comando “tail -f / var / log / syslog" permitirá que você assista à gravação de logs em tempo real.
O serviço rsyslog é muito flexível e poderoso. Pode ser usado para coletar logs em sistemas locais, bem como no nível empresarial. Você pode encontrar a documentação completa no site oficial https://www.rsyslog.com/
Rotação de logs no Linux
A gravação de logs acontece continuamente, então o tamanho dos arquivos cresce constantemente. O mecanismo de rotação garante o arquivamento automático de logs antigos e a criação de novos arquivos. Dependendo das regras, isso pode acontecer diariamente, semanalmente, mensalmente ou por limite de tamanho. Conforme novos logs são criados, os antigos podem ser simplesmente excluídos ou enviados por e-mail. A rotação de logs é realizada por alcançado utilitário. Você pode encontrar a configuração principal em “/etc/logrotate.conf” arquivo. O conteúdo dos arquivos também é processado em “/etc/logrotate.d/" pasta
Novas regras podem ser registradas no arquivo de configuração principal. No entanto, é melhor criar um arquivo separado em “/etc/logrotate.d/”. Por padrão, existem alguns arquivos neste diretório
Vamos dar uma olhada no arquivo “/etc/logrotate.d/rsyslog" que contém regras de rotação para logs do rsyslog serviço.
Primeiro, a regra deve conter o caminho para o arquivo de log e depois todas as diretrizes entre colchetes.
- girar 7 - número de arquivos a manter - 7
- diariamente - crie um novo arquivo todos os dias
- comprimir - compactar e arquivar arquivos antigos
Você pode ver na captura de tela que no “/ var / log /“pasta lá está o log principal”syslog” e 7 arquivos, que correspondem às regras no arquivo de configuração.
Você pode encontrar uma descrição mais detalhada do logrotate no manual, executando o “homem logrotateComando
Coletando logs do Linux - journald
Serviço de colheita de toras systemd-journal é uma parte do sistema de inicialização sistema. Os arquivos de log do Linux são armazenados em “/var/log/diário/” em um formato especial e pode ser aberto com a ajuda de jornalctl utilitário. O formato dos registros é exatamente o mesmo que em rsyslog.
Command jornalctl sem atributos mostra todos os registros, mas não é adequado para logs maiores. Vamos dar uma olhada em algumas opções deste utilitário.
journalctl -b- mostrar todos os registros desde a última inicializaçãojournalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- mostrar registro dentro de um determinado período de tempojournalctl -u pptpd- mostrar registros de um determinado serviçojournalctl -k- mostrar mensagens do kerneljournalctl -p err- mostrar mensagens de uma certa prioridade, mensagens de prioridade mais alta neste caso (crit, alert, emerg)journalctl -f- mostrar mensagens em tempo real
Para melhor flexibilidade você pode combinar essas opções. Vamos mostrar todos os erros do pptpd serviço
journalctl -u pptpd -p err
Se você especificar o caminho para o arquivo executável como um atributo, o utilitário mostrará todas as mensagens enviadas por este arquivo. Vamos mostrar todas as mensagens enviadas pelo arquivo “/ usr / bin / sudo” desde 04:15 em 18 de fevereiro de 2020. Na verdade, ele mostrará todos os comandos executados com permissões mais altas.
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
Para descobrir quanto espaço em disco os arquivos de log ocupam, execute o seguinte comando
journalctl --disk-usage
Para limitar o arquivo de log a 1 Gb, execute o seguinte comando
journalctl --vacuum-size=1G
Abrindo arquivos binários
Agora vamos dar uma olhada em alguns arquivos especiais no “/ var / log /” pasta onde todas as tentativas de login são armazenadas. Esses arquivos são binários e podem ser abertos apenas com programas especiais.
/ var / log / wtmp contém informações sobre tentativas de login bem-sucedidas. Use o utilitário last para abri-lo.
/ var / log / btmp - contém todas as tentativas de login com falha. Pode ser aberto com lastb com permissões avançadas. Atributo -n define o número de linhas exibidas a partir do final do arquivo.
/ var / log / lastlog - contém o tempo da última ação de login para cada registro de conta. Pode ser aberto com último registro