Você pode usar a API do Journal para acessar o diário do systemd de forma programática.
Alternativamente, você pode considerar a execução do serviço systemd-journal-gatewayd em seu host, que exporta dados de diário por meio de um servidor HTTP, caso em que você pode usar uma implementação de cliente HTTP de outro idioma para consultar o diário diretamente.
API do Journal
A API oficial do Journal é fornecida como parte do próprio systemd e é usada para implementar o journalctl. É uma API C.
Esta API acessa os arquivos escritos por systemd-journald em /var/log/journal
ou /run/log/journal
diretamente, portanto, você precisa de permissões apropriadas para ler nesses locais, o que geralmente significa que você precisa executar seu código como root.
Essa API também exige que você vincule às bibliotecas do systemd e as disponibilize no tempo de execução. Você precisa instalar o pacote libsystemd-dev
no seu sistema Ubuntu 18.04, para poder compilar e vincular a ele.
sudo apt-get install libsystemd-dev
Você pode procurar a página man do sd-journal (3) uma visão geral desta API. Para o caso mais específico de consultar o periódico, consulte sd_journal_next (3) (que inclui um bom exemplo com um programa simples e completo), também sd_journal_add_match (3) para restringir as correspondências obtidas ( implementando efetivamente uma consulta de diário.) Você também precisará de sd_journal_get_data (3) , sd_journal_open (3) , etc., mas esperamos que esses indicadores ajudem você a acessar o periódico diretamente.)
Ligações do Python
Existem ligações do Python para o systemd a partir do projeto systemd oficial, que inclui ligações para a API do Journal.
Estes módulos também estão disponíveis como pacotes do Ubuntu 18.04, com os quais você pode instalar:
sudo apt-get install python3-systemd
... para o Python 3 (recomendado), ou se você ainda precisar usar o Python 2, você pode usar:
sudo apt-get install python-systemd
Consulte a documentação do systemd.journal
da classe Reader
do módulo no código docstrings . Essa classe dá acesso de leitura ao diário, que é provavelmente o que você está interessado.
Ir ligações
Existem ligações Go para as bibliotecas systemd no módulo github.com/coreos/go-systemd .
Observe o submódulo sdjournal
, em particular o tipo JournalReader
, para leitura do diário, incluindo correspondências para filtragem. Você pode encontrar mais informações sobre no código-fonte
Journald Gatewayd
Uma alternativa ao uso da API do Journal para acessar diretamente os arquivos de diário é executar um serviço que os exporte por meio de um servidor HTTP. O Systemd fornece esse serviço por meio do systemd-journal-gatewayd .
Este programa está disponível no Ubuntu 18.04 como parte do pacote systemd-journal-remote, para que você possa instalá-lo e ativá-lo usando:
sudo apt-get install systemd-journal-remote
sudo systemctl enable --now systemd-journal-gatewayd
Que exportará um servidor HTTP na porta 19531, que você pode usar para navegar e consultar o diário.
Veja mais detalhes na página man do systemd-journal-gatewayd.service (8) , que inclui alguns exemplos de como acessá-lo usando o curl. Você pode obtê-lo para exportar os dados usando seu próprio Formato de exportação de diário nativo, como JSON ou como syslog como texto simples.
Se você usar a rota systemd-journal-gatewayd, certifique-se de compreender as implicações de segurança da exportação de seus dados de log por meio de um servidor HTTP. No mínimo, considere expor a porta apenas no host local.