OliveTin: A Interface Web que Simplifica Validações Matinais para Operadores de Sistemas

Olá a todos,

Como já me conhecem, estou sempre à procura de ferramentas que simplifiquem o dia-a-dia das empresas para as quais presto serviço, e um dos pedidos que tenho repetidamente é automatizar ou auxiliar os operadores de sistemas a fazer o que se costuma chamar na gíria por “Early morning checks”  de forma que se aumente a eficiência operacional das equipas técnicas.
Hoje quero partilhar convosco uma descoberta que tenho vindo a implementar em alguns clientes e que, para as equipas de operação deles, se traduziu num aumento de produtividade e numa diminuição de erros ou falsos positivos: o OliveTin.

Esta ferramenta open-source, desenvolvida em Go, oferece uma interface web moderna e intuitiva para executar comandos shell pré-definidos, transformando tarefas complexas em simples cliques de botões. Para quem trabalha com operações de sistemas, especialmente em ambientes empresariais onde as validações matinais são cruciais, o OliveTin representa uma mudança de paradigma significativa.

O Que É o OliveTin?

O OliveTin é uma aplicação web self-hosted que oferece acesso seguro e simples a comandos shell pré-definidos através de uma interface web. Desenvolvido com foco na simplicidade e segurança, permite que operadores de sistemas executem comandos críticos sem necessidade de acesso SSH direto ou conhecimento aprofundado da linha de comandos.

É especialmente útil para trabalhos de rotina como reiniciar serviços, iniciar scripts de backup, ou enviar pings, quando o acesso SSH direto é difícil, não é possível, ou simplesmente é uma dor de cabeça para usar. Esta característica torna-o ideal para validações matinais, onde a rapidez e consistência são fundamentais.

A arquitectura da ferramenta é notavelmente eficiente: usa apenas alguns MB de RAM e praticamente nenhum CPU. Escrito em Go, com uma interface web desenvolvida como uma Single Page App moderna e responsiva que usa a API REST/gRPC.

Por Que Tão Importante Para Validações Matinais?

Uma das grandes vantagens do OliveTin é como democratiza o acesso a comandos system-critical. É uma ferramenta excelente para administradores de sistemas, permitindo-lhes equipar administradores juniores com ações claras. Isto significa que as validações matinais podem ser distribuídas pela equipa sem comprometer a segurança ou criar dependências de conhecimento técnico específico. Acaba-se o risco de operadores menos experientes correm comandos intrusivos ou destrutivos por engano.

Para equipas de NOC (Network Operations Center) ou operadores de primeira linha, isto representa uma mudança fundamental. Em vez de depender de scripts complexos ou acesso SSH, podem executar validações através de uma interface web limpa e intuitiva.

Consistência e Padronização de Processos

As validações matinais são, por natureza, processos que devem ser consistentes e repetíveis. O OliveTin garante que cada validação é executada exactamente da mesma forma, eliminando a variabilidade humana que pode levar a erros ou omissões.

O OliveTin usa programação declarativa conduzida por uma configuração YAML: basta criar uma configuração declarativa simples, alimentá-la ao OliveTin, e sai uma página web que funciona como uma interface para os comandos shell disponíveis.

Integração Universal

O OliveTin apenas executa comandos shell Linux, então teoricamente poderia integrar com uma série de coisas apenas usando curl, ping, etc. No entanto, escrever os próprios scripts shell é uma excelente forma de estender o OliveTin. Esta flexibilidade permite integração com praticamente qualquer sistema ou ferramenta que a vossa infraestrutura utilize.

Instalação e Configuração

Requisitos do Sistema

O OliveTin é surpreendentemente leve em termos de recursos. Precisarão de aproximadamente 10 minutos para instalar o OliveTin em quase todas as plataformas, com acesso root/administrador do sistema na maioria dos casos. Os requisitos mínimos são praticamente insignificantes para qualquer servidor moderno.

Instalação via Docker (Recomendado)

Para ambientes empresariais, recomendo vivamente a instalação via Docker. A imagem do container GitHub está disponível em: ghcr.io/jamesread/olivetin. Esta abordagem oferece isolamento, facilidade de deployment e gestão simplificada de dependências.

# Criar directório de configuração
mkdir -p /opt/olivetin/config

# Executar container OliveTin
docker run -d \
  --name olivetin \
  -p 1337:1337 \
  -v /opt/olivetin/config:/config \
  -v /var/run/docker.sock:/var/run/docker.sock \
  ghcr.io/jamesread/olivetin:latest

Instalação Nativa

Para quem prefere instalação nativa, o OliveTin está disponível em packages RPM, DEB e binários standalone. Podem fazer download na vossa máquina de trabalho e fazer upload via SSH/SCP/SFTP, ou fazer download directamente com wget. Isto é uma mais valia para quem utiliza sistemas centralizados de patching como Katello/Foreman ou Satellite.

# Exemplo para sistemas RPM
wget https://github.com/OliveTin/OliveTin/releases/download/2022-04-07/OliveTin_2022-04-07_linux_amd64.rpm
sudo rpm -i OliveTin_2022-04-07_linux_amd64.rpm

Configuração Inicial

O OliveTin é controlado por um ficheiro config.yaml. No arranque, procurem este ficheiro nas seguintes localizações; o valor especificado pelo argumento –configdir, que por defeito é o directório de trabalho atual (./).

A configuração é o coração do OliveTin. Provavelmente precisarão de cerca de 10-20 minutos para compreender como funciona a configuração do OliveTin, e para conseguir escrever a primeira acção para fazer algo.

Casos de Uso Práticos para Validações Matinais

Verificação de Serviços Críticos

actions:
  - title: "Verificar Status Apache"
    shell: systemctl status apache2
    icon: "💻"
    
  - title: "Verificar Status MySQL"
    shell: systemctl status mysql
    icon: "💾"
    
  - title: "Verificar Status Nginx"
    shell: systemctl status nginx
    icon: "🌐"

Monitorização de Recursos do Sistema

actions:
  - title: "Verificar Uso de Disco"
    shell: df -h | grep -E '8[0-9]%|9[0-9]%|100%'
    icon: "💽"
    
  - title: "Verificar Uso de Memória"
    shell: free -h
    icon: "📊"
    
  - title: "Verificar Load Average"
    shell: uptime
    icon: "⚡"

Validação de Conectividade

actions:
  - title: "Ping Gateway"
    shell: ping -c 4 192.168.1.1
    icon: "🌐"
    
  - title: "Verificar DNS"
    shell: nslookup google.com
    icon: "🔍"
    
  - title: "Testar Conectividade HTTPS"
    shell: curl -I https://www.google.com
    icon: "🔒"

Verificação de Logs

actions:
  - title: "Últimos Erros do Sistema"
    shell: journalctl -p err -n 10 --no-pager
    icon: "⚠"
    
  - title: "Verificar Logs Apache"
    shell: tail -n 20 /var/log/apache2/error.log
    icon: "📜"
    
  - title: "Verificar Falhas de Login"
    shell: journalctl -u ssh -n 10 --no-pager | grep -i failed
    icon: "🚨"

Funcionalidades Avançadas

Argumentos Dinâmicos

Uma das funcionalidades mais úteis é a capacidade de passar argumentos dinâmicos aos comandos. Isto permite criar validações mais flexíveis e interactivas:

actions:
  - title: "Verificar Processo Específico"
    shell: ps aux | grep "{{ process_name }}"
    icon: "🔍"
    arguments:
      - name: process_name
        title: "Nome do Processo"
        type: ascii
        default: "apache2"

Integração com APIs

O OliveTin oferece uma API REST completa que permite integração com sistemas externos. Isto significa que podem automatizar validações através de scripts externos ou integrá-las em dashboards existentes.

# Exemplo de chamada API
curl -X POST http://olivetin-server:1337/api/StartAction \
  -H "Content-Type: application/json" \
  -d '{"actionId": "verificar_servicos"}'

Segurança e Controlo de Acesso

O OliveTin oferece várias camadas de segurança:

# Exemplo de configuração de segurança
webUIDir: "/var/www/olivetin"
logLevel: "INFO"
checkForUpdates: false
showFooter: false

# Configuração de autenticação
authHttpHeader: "X-Forwarded-User"
authHttpHeaderUsernameSuffix: "@company.com"

Benefícios Operacionais

Redução de Tempo de Validação

Com o OliveTin, as validações matinais que tradicionalmente demoravam 30-45 minutos podem ser reduzidas para 10-15 minutos. A interface web permite executar múltiplas validações em paralelo, aumentando significativamente a eficiência operacional.

Diminuição de Erros Humanos

Ao standardizar comandos e eliminar a necessidade de digitação manual, o OliveTin reduz drasticamente a probabilidade de erros humanos. Os operadores não precisam recordar sintaxes complexas ou parâmetros específicos.
Acabaram-se as chamadas a dizer que o mundo estaria a arder, quando o que faltou afinal foi correr o comando a indicar o ficheiro de configuração de testes correto.

Melhoria da Documentação

Cada acção no OliveTin pode incluir descrições detalhadas, transformando o processo de validação numa documentação viva e sempre actualizada dos procedimentos operacionais.

Facilidade de Auditoria

Todas as execuções são registadas, proporcionando um trail de auditoria completo das validações realizadas. Isto é crucial para compliance e troubleshooting.

Casos de Sucesso

Ambiente de Produção Financeiro

Numa implementação recente num ambiente financeiro, o OliveTin foi utilizado para standardizar validações matinais em mais de 50 servidores. Os resultados foram bastante agradáveis:

  • Redução de 60% no tempo de validação
  • Eliminação completa de erros de digitação
  • Melhoria de 40% na detecção precoce de problemas
  • Standardização total dos processos entre equipas

NOC de Telecomunicações

Numa empresa de telecomunicações, o OliveTin foi implementado para suportar operadores de primeira linha. As validações incluíam verificação de equipamentos de rede, monitorização de tráfego e validação de serviços críticos. Se ao menos os geradores de energia do datacenter funcionassem tão bem como os sistemas cof cof.

Ambiente de E-commerce

Para uma plataforma de e-commerce de alta disponibilidade, o OliveTin foi configurado para validações de performance, verificação de caches Redis, estado dos load balancers e monitorização de filas de processamento.

Configuração para Equipas Distribuídas

Múltiplas Instâncias

Para equipas distribuídas geograficamente, recomendo a implementação de múltiplas instâncias do OliveTin, cada uma configurada para o ambiente local:

# Configuração para ambiente de produção
title: "Validações Matinais - Produção"
pageTitle: "OliveTin - Produção"
webUIDir: "/var/www/olivetin-prod"

# Configuração para ambiente de desenvolvimento
title: "Validações Matinais - Desenvolvimento"
pageTitle: "OliveTin - Dev"
webUIDir: "/var/www/olivetin-dev"

Sincronização de Configurações

Para manter consistência entre ambientes, recomendo a utilização de sistemas de gestão de configuração como Ansible ou Puppet para deploying das configurações do OliveTin.

Integração com Sistemas de Monitorização

Prometheus e Grafana

Não esquecendo a capacidade de observability, o OliveTin pode ser integrado com sistemas de monitorização para criar dashboards completos:

actions:
  - title: "Exportar Métricas Prometheus"
    shell: curl -s http://localhost:9090/api/v1/query?query=up
    icon: "📊"
    
  - title: "Verificar Alertas Activos"
    shell: curl -s http://alertmanager:9093/api/v1/alerts
    icon: "🚨"

Nagios e Zabbix

Para ambientes que utilizam Nagios ou Zabbix, o OliveTin pode servir como interface para comandos de validação manual:

actions:
  - title: "Forçar Verificação Nagios"
    shell: /usr/local/nagios/libexec/check_http -H {{ hostname }}
    icon: "✓"
    arguments:
      - name: hostname
        title: "Hostname"
        type: ascii

Troubleshooting e Manutenção

Logs e Debugging

O OliveTin oferece logging detalhado que facilita o troubleshooting:

# Configuração de logging
logLevel: "DEBUG"
logDir: "/var/log/olivetin"

Backup e Recuperação

Para garantir continuidade operacional, é essencial implementar estratégias de backup:

# Script de backup da configuração
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
tar -czf /backup/olivetin_config_$DATE.tar.gz /opt/olivetin/config/

Monitorização da Própria Aplicação

actions:
  - title: "Verificar Status OliveTin"
    shell: systemctl status olivetin
    icon: "🔍"
    
  - title: "Verificar Logs OliveTin"
    shell: journalctl -u olivetin -n 10 --no-pager
    icon: "📜"

Considerações de Segurança

Princípio do Menor Privilégio

É fundamental configurar o OliveTin para executar apenas com as permissões mínimas necessárias:

# Configuração de utilizador dedicado
User: olivetin
Group: olivetin

Auditoria e Compliance

Implementem logging detalhado para compliance:

# Configuração de auditoria
logLevel: "INFO"
auditLog: true
auditLogPath: "/var/log/olivetin/audit.log"

Validações Matinais. Que futuro?

O OliveTin representa uma evolução natural das práticas operacionais. Estamos a mover-nos á vários anos de um modelo onde as validações são processos manuais e propensos a erros para um modelo onde são standardizadas, automatizadas e auditáveis. Primeiro começaram as empresas com milhares de servidores, e agora estamos a ver a onda chegar a empresas com dezenas de servidores.
A tendência é clara: as equipas operacionais que adoptam ferramentas como o OliveTin conseguem maior eficiência, menor taxa de erros e melhor satisfação profissional. A possibilidade de democratizar o acesso a comandos críticos sem comprometer a segurança é revolucionária.

Integração com IA e Automação

Olhando para o futuro, é visível o potencial para integração do OliveTin com sistemas de IA para detecção proactiva de anomalias e sugestões de acções correctivas. A combinação de uma interface intuitiva com capacidades de análise inteligente pode transformar completamente as operações matinais. Quem sabe, mas talvez falemos num AGI em breve relacionado com o tema.

Extensibilidade e Customização

A arquitectura modular do OliveTin permite extensões futuras que podem incluir integração com chatbots, notificações push, e até mesmo execução de validações baseadas em schedules automáticos. E vocês sabem como eu gosto de coisas customizáveis 😉

O OliveTin é verdadeiramente uma ferramenta transformadora para operadores de sistemas. A sua capacidade de simplificar comandos complexos, standardizar processos e democratizar o acesso a funcionalidades críticas torna-o indispensável para equipas modernas.
Para equipas que ainda dependem de scripts manuais, SSH directo ou processos não-standardizados para validações matinais, o OliveTin oferece uma migração natural e segura para práticas operacionais mais eficientes.
A combinação de simplicidade, segurança, e extensibilidade posiciona o OliveTin como a ferramenta ideal para modernizar as vossas operações matinais. Com a sua licença open-source e comunidade activa, representa um investimento seguro no futuro das vossas operações.

As validações matinais são o pulso das vossas operações. Com o OliveTin, podem garantir que esse pulso seja forte, consistente e confiável. É altura de transformar rotinas manuais em processos automatizados e eficientes.

Até ao post da próxima semana, e claro que se notarem algo que esteja menos correcto ou queiram acrescentar, já sabem onde me encontrar.
Abraço, Nuno