Onde fica o buffer de anel do kernel em relação ao rsyslog?

9

rsyslogapenas uma camada de abstração em cima do buffer de anel do kernel? Ou o buffer do anel do kernel é sua própria entidade e rsysloga interação é como a de qualquer outro "aplicativo"?


fonte

Respostas:

6

Embora várias partes da documentação (inclusive man dmesg) se refiram a ele como "o buffer de anel do kernel", pode ser melhor chamá-lo como o buffer de log do kernel, pois "buffer do anel" é um termo genérico e acredito que o kernel também usa o anel buffers para várias coisas completamente não relacionadas. O "buffer de impressão" também é apropriado, após a função de espaço do kernel usada para gravar nele.

De qualquer forma, ele reside no espaço do kernel e uma interface de leitura é fornecida via /proc/kmsge uma interface de leitura e gravação via /dev/kmsg. Portanto, se como root você for:

echo "Hello Kernel!" > /dev/ksmg

No entanto, você verá isso cat /dev/ksmg(você provavelmente não verá isso aparecer em nenhum registro) - veja o comentário de Matthew Phipps abaixo por um possível motivo). Essa é uma saída bruta e não se parece exatamente com as coisas que você vê dos dmesgou nos seus arquivos de log. Há um pouco de documentação sobre isso fornecida com a fonte do kernel. A leitura de /proc/kmsg(não o mesmo que /dev/ksmg) é recomendada contra se (r) syslog estiver em execução.

Rsyslog é uma das várias implementações de syslog comumente usadas no linux. Esses são aplicativos da terra do usuário que originam mensagens do kernel /proc/ksmge mensagens de outros processos da terra do usuário por meio de um soquete /dev/log.

Cachinhos Dourados
fonte
2
Eu apontaria que o rsyslog tem $ KLogPermitNonKernelFacility desativado por padrão, e é por isso que as mensagens que não são do kernel de / proc / kmsg serão ignoradas pelo rsyslog, a menos que você ative essa opção. Isso pode realmente ficar confuso, pois o Upstart, por exemplo, faz logon no / proc / kmsg com um recurso que não seja do kernel.
Vanessa Phipps