Como instalar um syslogger em Proxmox

Uma das coisas com que de certeza já se depararam é o facto de quando se utilizam dispositivos com firmware Tasmota, ou outros similares que criam logs, e falta a energia (ou o dispositivo faz reset) não se conseguir saber o que aconteceu anteriormente porque o log se perde.

Felizmente, o Tasmota e outros firmwares têm a capacidade de enviar os dados do log para um servidor próprio que guarda esses logs de forma permanente e ao qual podemos ter acesso mesmo que o dispositivo reinicie e se perca o log local. Pesquisei durante algum tempo por um software próprio para o efeito mas não encontrei nada que cumprisse todos os meus requisitos: gratuito, acesso web, leve em termos de recursos e fácil de utilizar.

Lancei então ao @ricain o desafio de criar um container LXC para Proxmox com um sistema de logs que cumprisse os meus requisitos. Passado algum tempo enviou-me um container para eu testar e não podia esperar melhor! Muito rápido, extremamente fácil de usar, ridiculamente leve e com interface web. Era esse mesmo container que utilizava até à semana passada quando ele criou esta versão final que vai ser usada no tutorial. É esta versão que uso agora no meu sistema e sem o mínimo de problemas. Quando digo que este logger é ridiculamente leve, refiro-me a isto:

image

Este captura de ecran é do meu syslogger a gravar logs de 25 dispositivos (23 a reportar a cada 60 segundos e dois deles a reportar a cada 15 segundos). Como podem ver abaixo, nas ultimas 24 horas o valor máximo do CPU foi de 0.03% e a memória máxima utilizada foi 18.53Mib…

Este container é baseado em CentOS, utiliza o rsyslog como servidor de registo de logs e o tailon como interface de apresentação dos mesmos. A porta usada para enviar os logs é a 514. No final do tutorial têm links para estes programas.


Download e Configuração no Proxmox

  1. Descarregar o ficheiro syslogger_lxc.tar.gz do link abaixo.


  1. Depois de descarregado o ficheiro deverão abrir o Proxmox e clicar em local.

image


  1. De seguida clicam em Upload.

image

  1. Seleccionar Container template na opção Content:, clicar em Select File..., escolher o ficheiro que descarregaram no passo 1, clicam em upload e esperam até terminar a transferência.

image


  1. Após terminada a transferência, o ficheiro irá aparecer na lista

image


  1. No canto superior direito, clicar na opção Create CT.

image


  1. Preencher o separador General conforme a imagem e clicar em Next.


  1. Preencher o separador Template conforme a imagem e clicar em Next.


  1. Preencher o separador Root Disk conforme a imagem e clicar em Next.


  1. Preencher o separador CPU conforme a imagem e clicar em Next.


  1. Preencher o separador Memory conforme a imagem e clicar em Next.


  1. Preencher o separador Network conforme a imagem e clicar em Next.

NOTA: Os campos IPv4/CIDR e Gateway (IPv4) devem ser preenchidos em função da vossa rede


  1. Preencher o separador DNS conforme a imagem e clicar em Next.


  1. No separador Confirm basta seleccionar a opção Start after created e clicar em Finish.


  1. Irá então aparecer uma janela com o progresso da criação do container. No final podem fechar a janela no X do canto superior direito.


  1. Antes de acabarmos, falta apenas aceder às opções do vosso container e alterar a opção Start at boot para Yes dando um duplo clique na respectiva linha, seleccionando a opção e clicando no botão OK.


  1. E pronto, o syslogger está preparado para receber os logs dos vossos dispositivos!

image


Configuração dos Dispositivos Tasmota

  1. Aceder à interface de um dispositivo e escolher a opção Configuration.

  1. De seguida escolher a opção Configure Logging.

  1. Preencher as opções Syslog host e Syslog port com o endereço IP do vosso Syslogger (que foi definido no passo 12) e porta 514 respectivamente.


  1. Finalmente clicar em Save. E já está!

Acesso aos Logs

Existem dois modos de aceder aos logs e eu aconselho a usar ambos. O primeiro, através do HA e o segundo directamente pelo browser. Este ultimo é muito util caso o HA esteja em baixo ou com algum problema.


Via Home Assistant

  1. Para aceder aos logs a partir do vosso HA, abram o ficheiro configuration.yaml e adicionem as seguintes linhas, não esquecendo de substituir o <ip-do-syslogger> pelo endereço IP do syslogger (que foi definido no passo 12).
#### SIDEBAR ITEMS
panel_iframe:
  menu_syslog:
    title: 'Syslog'
    url: 'http://<ip-do-syslogger>:8080/'
    icon: mdi:database-edit

  1. Após fazer reboot ao HA terão acesso ao syslogger através do menu do lado esquerdo do HA.


Via Browser

  1. Para aceder via browser basta escrever o endereço IP do syslogger (que foi definido no passo 12) seguido da porta 8080, assim http://<ip-do-syslogger>:8080.


Conclusão

Embora se fale neste tutorial nos dispositivos baseados em Tasmota, existem outros dispositivos que podem ser configurados para enviar os logs para o syslogger. Existem também alguns softwares, como o Unifi Controller por exemplo, que também têm a funcionalidade de enviar logs para um syslogger remoto.


Caso queiram saber mais sobre os programas utilizados neste syslogger, visitem os seguintes links:

https://www.centos.org

https://tailon.readthedocs.io/en/latest

3 Likes

Muito bom, realmente muito útil e pouca gente usufrui desta vertente.
Bom bom era ter isto disponivel em docker ou até mesmo como addon do HA :smiley:

2 Likes

Obrigado @j_assuncao pelo tutorial. Muito interessante. Tenho andado à procura de uma forma de fazer isto. Esta é claramente uma boa possibilidade.

A escolha das ferramentas foi com o objectivo explícito de minimizar CPU e memória? Imagino que uma solução baseada em ELK (https://devconnected.com/monitoring-linux-logs-with-kibana-and-rsyslog/) ou em TIK (https://nonsense.fyi/deploying-loki-and-promtail-together-with-the-tig-stack/) terá mais vantagens, não? Por exemplo, uma coisa que me parece faltar na solução acima proposta são alarmes e notificações no caso de erros ou outros eventos específicos. Não?

Não tenho experiência nenhuma nisto por isso nem sei bem do que preciso. Talvez soluções em cima de ELK ou TIK sejam uma montanha para parir um rato. Por outro lado, se já tiver uma instância com ELK/TIK por outros motivos, presumo que integrá-la com rsynclog não deverá acrescentar muito peso.

Abraço,
Nuno

A ideia foi criar um servidor para logging com a menor utilização de recursos possível. A alarmistica pode ser feita no HA ou no NR.

Duvido que consigas um servidor de logging que gaste tão pouca memoria como esta que foi proposta. Se vires por exemplo o ELK só a parte do E (ElasticSearch) consome 1gb de memória no mínimo.

Quanto ao TIK (Telegraf, InfluxDB, Grafana) provavelmente uma boa parte do utilizadores do HA já a têm instalada no sistema para gerir gráficos.

1 Like

Copyright © 2017-2020. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade