Recebendo mensagens do Syslog com um systemd Arch Linux

22

Estou sentindo que esqueci o óbvio, mas não consigo descobrir como fazer com que meu servidor Arch Linux, que usa systemd , receba e registre syslog mensagens de um sistema remoto.

Eu tenho um modem DSL Cisco 678 e um WAP DD-WRT, e ambos podem ser configurados para enviar mensagens no formato syslog para outra máquina. Eu gostaria que essa máquina fosse meu servidor Arch Linux.

Eu pesquisei por aí, e tudo que eu acho é que "o systemd substitui o syslog", ou que eu não preciso mais executar o syslog ou algo igualmente irrelevante para a minha pergunta.

UPDATE

Perguntei nos fóruns do Arch e não obtive respostas relevantes. Eu instalei o syslog-ng apenas para escutar na porta UDP 514. O syslog-ng grava mensagens do meu Cisco 678, e um DD-WRT WAP que eu tenho. Infelizmente, as mensagens não acabam no diário do systemd, mas sim em arquivos simples. Portanto, nenhuma solução exata, mas algo de uma solução alternativa. Eu prefiro ter as mensagens do syslog no diário, não em arquivos simples.

    
por Bruce Ediger 16.07.2013 / 05:28

5 respostas

9

Você pode escrever um servidor syslog do pobre facilmente com socat . Você só precisa de uma unidade de serviço como esta:

[Service]
Restart=on-success
ExecStart=/usr/bin/socat -u UDP-RECV:514 STDOUT

Ele enviará cegamente qualquer coisa recebida na porta de serviço do syslog para o diário do systemd. Salve o acima como, por exemplo, /etc/systemd/system/syslog.service e, em seguida,

# systemctl daemon-reload
# systemctl start syslog

Você só precisa da sua fonte para enviar mensagens para a porta UDP 514 em seu servidor de escuta.

Você pode querer melhorar isso para realmente analisar os dados recebidos e formatá-los, mas isso não é necessário se tudo que você quiser fazer for registrar o que foi recebido.

( socat está no repositório do Arch Linux Extra : pacman -S socat )

    
por 28.07.2015 / 11:26
3

Portanto, há uma pequena lacuna aqui.

O Systemd suporta mensagens remotas através do componente systemd-journal-gateway. Dito isto, estas mensagens não estão no formato syslog. O syslog (como um formato) é uma speficação ratificada pela IETF documentada no RFC 5424 (que preteriu a versão anterior, a RFC 3164).

Mais das complexidades de fazer com que elas funcionem bem juntas estão documentadas aqui:

link

e aqui (man systemd-journald.service)

   systemd-journald is a system service that collects and stores logging data.
   It creates and maintains structured, indexed journals based on logging
   information that is received from the kernel, from user processes via the
   libc syslog(3) call, from STDOUT/STDERR of system services or via its native
   API. It will implicitly collect numerous meta data fields for each log
   messages in a secure and unfakeable way. See systemd.journal-fields(7) for
   more information about the collected meta data.

Em resumo, certifique-se de que as mensagens sejam enviadas do syslog-ng para o STDOUT e que as coisas acabem no diário.

Acompanhando um pouco mais, também achei isso:

link

Onde alguém está escrevendo uma ligação do PostgreSQL para o systemd para registro. Neste, eles citam que atualmente (a partir do momento do arquivo, 2013/06) mensagens multi-line não são suportadas no systemd, então esteja atento para isso também.

    
por 15.09.2013 / 09:40
2

Eu não conheço a distribuição do Arch. Eu tenho o Fedora 20 (incluindo o systemd) e o configurei para aceitar mensagens remotas do syslog.

IMHO, essa funcionalidade não está relacionada ao systemd. O systemd-journald.service se interpõe entre os programas kernel / userspace e o subsistema syslog. Ele captura (eu acho) apenas as mensagens locais dessas fontes em seu banco de dados de diário e as encaminha para o syslog. Veja por exemplo "man systemd-journald.service" (pelo menos no Fedora).

No meu caso, eu habilito isso configurando um "módulo receptor syslog TCP" opcional em /etc/rsyslog.conf, por exemplo,

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

Um módulo UDP também está disponível.

Também é necessário adicionar (r) regras syslog para direcionar a saída para os arquivos desejados. Para obter a documentação completa, consulte: link

HTH.

    
por 04.04.2014 / 21:05
2

Eu instalei o syslog-ng e pude receber mensagens de log do syslog. Mas o que eu realmente queria era receber mensagens de log do syslog e então escrever a mensagem para o journald. Não consegui encontrar uma maneira de configurar o syslog-ng para gravar mensagens syslog remotas no journald.

Então eu escrevi um utilitário para fazer isso.

link

./rsyslog-journald-repeater -h
Usage of ./rsyslog-journald-repeater:
-debug
    debug flag
-host string
    hostname to listen on (default "0.0.0.0")
-port int
    port to listen on (default 5514 on darwin, default 514 on Linux, Unix, etc.)

Os arquivos de compilação e as instruções para testes e arquivos de unidade systemd de amostra são incluídos no projeto. Aproveite!

    
por 13.12.2016 / 01:56
0

syslog-ng e journal do systemd

De syslog-ng

A partir da versão 3.6.1 do syslog-ng, o padrão system() source nos sistemas Linux que usam o systemd usa o journald como seu padrão system() source.

If you wish to use both the journald and syslog-ng files, ensure the following settings are in effect. For systemd-journald, in the /etc/systemd/journald.conf file, Storage= either set to auto or unset (which defaults to auto) and ForwardToSyslog= set to no or unset (defaults to no). For /etc/syslog-ng/syslog-ng.conf, you need the following source stanza:

 source src {
   system();
   internal();
 };

Se, por outro lado, você não quiser manter os logs do journald, mas apenas os logs de texto do syslog-ng, defina Storage=volatile e ForwardToSyslog=yes em /etc/systemd/journald.conf . Isso armazenará o journald no RAM. A partir do syslog-ng 3.6.3, o syslog-ng está usando o journald como a fonte system() , portanto, se você definir Storage = none, o diário do systemd soltará todas as mensagens e não as encaminhará para o syslog-ng.

Após a alteração, reinicie os daemons systemd-journald.service e syslog-ng.service .

    
por 05.12.2016 / 23:01