Como você usa os padrões journalctl do systemd

21

Estou tentando usar journalctla correspondência de padrões de SYSLOG_IDENTIFIERS. Como exemplo, tenho uma tonelada de mensagem marcada sshd:

$ journalctl -t sshd | wc -l
987

mas se eu tentar usar a correspondência de padrões para encontrá-los:

$ journalctl -t 'ssh*'
-- No Entries --
$ journalctl -t 'ssh.*'
-- No Entries --

A página de manual journalctl diz que os padrões devem funcionar, mas não consigo encontrar mais nada sobre como os padrões são usados ​​/ definidos no systemd.

$ man journalctl
....
-t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER,
       or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.

Estou executando o ArchLinux:

$ journalctl --version
systemd 225
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD +IDN
Mark Grimes
fonte
5
Com base nas discussões sobre o IRC, parece que isso é um bug (ou um problema com a documentação). Um bug foi arquivado .
Mark Grimes
11
tente isso em tempo real: journalctl -f | grep sshd
nexoma 01/12/15
Na verdade, você pode adicionar vários -t <identifier> se isso lhe convier.
sivann 25/01

Respostas:

15

Este foi um bug de documento que foi fechado quando o erro de digitação na manpágina foi atualizado.

O relatório de erros levou aos seguintes comentários no código :

Na verdade, não aceitamos padrões, portanto, não o reivindicamos.

Como solução alternativa, você poderá usar grepcomo sugerido nos comentários da sua pergunta. Algo assim:

journalctl | grep sshd
Tim Penner
fonte
0

A pergunta original intitula "Como você usa os padrões journalctl do systemd ". Isso aponta para um recurso muito específico do journalctl chamado "MATCHES", em vez de uma filtragem de expressão regular genérica.

O recurso "MATCHES" é totalmente detalhado, juntamente com todos os outros recursos em sua amigável página de manual, que afirma no seu início:

Se um ou mais argumentos de correspondência forem passados, a saída será filtrada de acordo.

O recurso "correspondências" destina-se a filtrar as entradas de log com base em vários filtros possíveis.

Para casos como o da pergunta original, é assim que eu faço (também executo o ArchLinux).

Primeiro, você precisa saber o nome do serviço em que está interessado. Geralmente faço isso:

systemctl | grep sshd

Eu entendi isso:

sshd.service       loaded active running   OpenSSH Daemon

Em seguida, você pode pedir journalctlpara filtrar pelo "nome da unidade systemd" assim:

journalctl _SYSTEMD_UNIT=sshd.service

É chamado "filtragem de correspondências". Seria isso.

Caso a pergunta original tenha sido escrita para significar " como aplicar grepà saída do journalctl ", você poderá aplicar grepaos logs armazenados "até agora" com

journalctl | grep ssh

ou observe as entradas de log atualmente recebidas com

journalctl -f | grep ssh

e pressione CTRL-C para interromper o fluxo. Obviamente, você pode usar tubos mais complexos com padrões regulares de granulação mais fina ou vários grepcomandos.

EnzoR
fonte
Obrigado pela resposta, mas _SYTEMD_UNIT não aceita padrões. Como mencionado no meu comentário e na resposta de @ Tim, isso foi um bug nos documentos.
Mark Grimes
@ MarkGrimes, pelo menos para mim (systemd 239) funciona. Eu sempre testo o que digo antes de anotá-la. Funciona como documentado.
EnzoR
A questão é sobre o uso de padrões , por exemplo ssh*. Os documentos do journalctl declararam que isso era possível ao mesmo tempo. Os documentos estavam incorretos e foram atualizados.
Mark Grimes
@ MarkGrimes A questão é sobre os padrões journalctl do systemd e não sobre qualquer padrão de caracteres . Por favor, veja minha resposta atualizada. E funciona no ArchLinux exatamente como documentado.
EnzoR
-2

Você pode definir o arquivo da unidade ao executar journalctl.

journalctl -f -u sshd.service

Vou mostrar apenas o diário de sshd

Kwun Yeung
fonte
Esta resposta não aborda a questão. O usuário está solicitando o uso de padrões em um filtro.
Merlijn Sebrechts