
Inventário de ativos só funciona quando o agente consegue rodar em toda a frota, identificar a máquina de forma estável e entregar dados que o GLPI entende. O go-glpi-agent é uma reimplementação em Go do agente de inventário do ecossistema FusionInventory/GLPI: um binário estático que coleta hardware e software localmente e envia o resultado para GLPI 10+ — sem runtime Perl, árvore de módulos ou acesso SSH ao endpoint.
O que é o go-glpi-agent
O projeto não é o agente oficial glpi-agent, nem tenta sobrescrevê-lo. É uma implementação separada, pensada para coexistir com o agente oficial e com o antigo fusioninventory-agent. O ponto de compatibilidade é deliberado: ele lê o formato agent.cfg já usado pelo agente Perl e reaproveita identificadores existentes, reduzindo o risco de uma máquina reaparecer no GLPI como outro ativo depois de uma migração.
O fluxo é direto:
- o binário descobre dados locais de hardware, sistema e software;
- monta o inventário no modelo interno do projeto;
- tenta enviar para
/front/inventory.phppelo protocolo JSON nativo do GLPI; - quando necessário, faz fallback automático para o fluxo XML legado OCS/FusionInventory;
- o GLPI associa o inventário ao computador identificado pelo agente.
Também há um modo local: go-glpi-agent run --local DIRETÓRIO grava o XML sem enviá-lo. É o melhor primeiro passo para conferir o que será coletado antes de apontar uma frota para produção.
Por que um binário em Go muda a operação
- Implantação simples: o projeto publica pacotes nativos para Linux, além de arquivos para Windows, FreeBSD e macOS. Para uma equipe de infraestrutura, isso reduz dependências no host.
- Um código, quatro sistemas: a mesma base cobre Linux amd64, Windows amd64, FreeBSD amd64 e macOS 13+ em Apple Silicon; Mac Intel é caso de compilação no host Intel.
- Agenda previsível: no Linux, o pacote instala um timer systemd por hora com atraso aleatório. Em Windows, a versão 0.6.0 passou a usar um serviço do Windows em vez da tarefa agendada anterior.
- Compatibilidade operacional: o arquivo de configuração e a importação de dumps de identidade tornam a troca menos disruptiva para instalações existentes.
Não confunda “binário único” com “inventário mágico”. O agente ainda precisa de permissões, do endpoint correto, de TLS válido e de uma rotina de conferência no GLPI.
O que ele coleta
A cobertura depende do sistema operacional, porque cada plataforma expõe o hardware de maneira diferente. No Linux, o agente usa fontes como /sys, /proc, dmidecode, lsblk, lvs e os gerenciadores dpkg, rpm e pacman. No Windows, combina WMI, Registro e gopsutil; no FreeBSD, usa kenv, pkg, geom, sysctl e usbconfig; no macOS, usa system_profiler, ioreg, sysctl e sw_vers.
| Categoria | Exemplos de dados | Observação |
|---|---|---|
| Identidade e sistema | hostname, domínio, distribuição/versão, timezone | valores de serial conhecidos como lixo são filtrados; em algumas VMs o UUID pode virar fallback. |
| Hardware | CPU, memória e slots, BIOS, placa-mãe, chassis, discos, sistemas de arquivos, LVM, USB e rede | alguns campos, como slots de memória e serial de disco, pedem privilégios administrativos. |
| Software | pacotes dpkg/rpm/pacman no Linux; chaves de desinstalação no Windows; pkg no FreeBSD |
no Windows, o projeto evita Win32_Product, que é lento e pode disparar reparo de MSI. |
| Inventário opcional | processos em execução | desabilitado por padrão; habilite só se fizer sentido para sua política de inventário. |
Instalação no Ubuntu e Debian
Use um pacote da release v0.6.0. O exemplo abaixo é para amd64; confirme a arquitetura com dpkg --print-architecture antes de baixar.
sudo apt update
sudo apt install -y curl
VER=0.6.0
curl -fLO "https://github.com/jniltinho/go-glpi-agent/releases/download/v${VER}/go-glpi-agent_${VER}_amd64.deb"
sudo apt install "./go-glpi-agent_${VER}_amd64.deb"
/opt/go-glpi-agent/go-glpi-agent version
systemctl cat go-glpi-agent.service
O pacote coloca o binário e a configuração em /opt/go-glpi-agent/ e as unidades em /lib/systemd/system/. Não copie por cima do agent.cfg em uma atualização: o pacote foi desenhado para preservar a configuração do operador.
Configurar o destino e testar sem enviar nada
Edite /opt/go-glpi-agent/agent.cfg. O mínimo é o endpoint de inventário do seu GLPI. Use HTTPS em produção e mantenha a validação de certificado ativada.
# /opt/go-glpi-agent/agent.cfg
server = https://glpi.exemplo.com/front/inventory.php
tag = datacenter-sp
# Estado persistente: não apague sem planejar a consequência no inventário.
vardir = /opt/go-glpi-agent/var
# Opcional: limita o inventário de processos e categorias.
scan-processes = 0
# no-category = printer,software
# Se a CA for interna, informe a CA; não desative TLS em produção.
# ca-cert-file = /etc/ssl/certs/minha-ca.pem
# proxy = http://proxy.exemplo.com:3128
Antes do primeiro envio, gere um inventário local. Ele permite abrir o XML, conferir hostname, serial, discos e lista de programas sem criar ou alterar um ativo remoto.
sudo install -d -m 0750 /var/tmp/go-glpi-agent-inventory
sudo /opt/go-glpi-agent/go-glpi-agent run --local /var/tmp/go-glpi-agent-inventory
sudo find /var/tmp/go-glpi-agent-inventory -maxdepth 1 -type f -printf '%f\n'
Quando a saída fizer sentido, execute uma vez contra o GLPI com depuração. Depois confira a criação ou atualização do computador na interface do GLPI.
sudo /opt/go-glpi-agent/go-glpi-agent run \
--conf-file /opt/go-glpi-agent/agent.cfg \
--debug
Evite no-ssl-check = 1 em produção. Se uma CA privada falhar, instale a cadeia correta ou use ca-cert-file/ca-cert-dir. Desativar a verificação transforma um erro de certificado em risco de interceptação.
Agendar com systemd
O modo recomendado para Linux é uma execução pontual por hora, disparada pelo timer. A unidade usa atraso aleatório de até dez minutos para evitar que todos os hosts chamem o GLPI no mesmo segundo.
sudo systemctl enable --now go-glpi-agent.timer
systemctl status go-glpi-agent.timer --no-pager
systemctl list-timers go-glpi-agent.timer
journalctl -u go-glpi-agent.service -n 100 --no-pager
Existe também go-glpi-agent-daemon.service, para o processo longo que respeita delaytime do arquivo de configuração. Escolha timer ou daemon para a mesma finalidade; ativar os dois pode duplicar inventários e carregar o servidor sem necessidade.
Como manter a identidade do ativo
O maior erro em uma migração é fazer o GLPI enxergar um computador conhecido como uma máquina nova. O projeto adota o formato de device ID do agente Perl e, na primeira execução, pode importar dumps existentes de FusionInventory/GLPI Agent. Preserve também o diretório vardir: nele ficam estado e identificadores persistentes.
Em uma troca controlada, faça um piloto: selecione alguns hosts, compare o ativo antes e depois no GLPI, valide serial/UUID/hostname, e só então habilite o timer no restante. Em máquinas virtuais, atenção extra a serial genérico; o projeto documenta fallback para UUID quando o SMBIOS devolve valores como 0.
Configurações úteis e seus valores
| Nome | Valor/exemplo | Uso |
|---|---|---|
server |
https://glpi.exemplo.com/front/inventory.php |
destino do inventário remoto. |
local |
/var/tmp/inventario |
grava XML local em vez de enviar. |
tag |
datacenter-sp |
classifica os ativos no GLPI. |
delaytime |
3600 |
intervalo em segundos usado pelo modo daemon. |
lazy |
1 |
não envia se o servidor não solicitar. |
force |
1 |
força envio; use somente quando souber o efeito operacional. |
scan-processes |
0 ou 1 |
inclui processos no inventário; avalie privacidade e volume. |
no-category |
printer,software |
pula categorias separadas por vírgula. |
backend-collect-timeout |
180 |
limite por coletor, em segundos. |
ca-cert-file |
/etc/ssl/certs/minha-ca.pem |
CA privada para TLS. |
Outros sistemas operacionais
- RHEL, Rocky, Alma, Fedora e openSUSE: a release inclui RPM amd64; instale com o gerenciador de pacotes da distribuição.
- Arch Linux: há pacote
.pkg.tar.zstpara instalação compacman -U. - Windows: a release oferece ZIP e MSI. Desde a v0.6.0, o instalador registra o serviço
go-glpi-agent, iniciado automaticamente sob LocalSystem; configuração e executável ficam emC:\Program Files\go-glpi-agent, enquanto estado e logs ficam emC:\ProgramData. - FreeBSD 14 amd64: use o tarball e o
INSTALL.mdincluído; há opção de rc.d ou cron. - macOS 13+ Apple Silicon: a release inclui
.pkge.dmg. Para Mac Intel, a documentação orienta compilar no próprio host Intel.
Limites conhecidos: onde não prometer demais
O projeto cobre inventário local, não todo o catálogo do agente Perl. A documentação lista como lacunas, entre outras: GPUs, monitores via EDID, impressoras, controladoras PCI/RAID/IPMI, descoberta e inventário de rede, deploy, Wake-on-LAN, ESX e inventários de Snap, Flatpak, Nix ou Gentoo. Isso não é defeito oculto: é critério para decidir se ele atende seu ambiente ou se o agente oficial continua necessário em parte da frota.
Também não é uma ferramenta de monitoramento. Para métricas e alertas, complemente o inventário com Prometheus e Node Exporter; para a história do ITSM e do inventário no servidor, veja a história do GLPI. Inventário responde “o que existe”; monitoramento responde “o que está acontecendo agora”.
Versão atual e roteiro de adoção
A release atual, v0.6.0, foi publicada em 10 de julho de 2026. Ela troca a tarefa agendada do Windows por um serviço real e mantém a configuração ao lado do executável em upgrades. A série anterior também registrou correções para o protocolo nativo do GLPI 11; por isso vale seguir a release e o changelog em vez de copiar comandos antigos de tutoriais.
- faça backup e escolha cinco máquinas-piloto;
- gere inventário local e revise identidade e categorias;
- aponte para um GLPI de teste ou para uma entidade de piloto;
- confirme se os ativos foram atualizados, não duplicados;
- habilite o timer gradualmente e acompanhe journal e filas do GLPI;
- documente as categorias desativadas e a CA usada, para que a operação seja reproduzível.
Referências
- go-glpi-agent — repositório e README
- Referência técnica: coletores, configuração e instalação
- Release v0.6.0
- Changelog do projeto
- GLPI Agent oficial
O go-glpi-agent não substitui uma política de inventário; ele torna essa política mais fácil de distribuir. Quando o piloto confirma identidade, TLS e cobertura de coleta, o binário único vira uma alternativa prática para manter o GLPI alimentado em ambientes Linux, Windows, FreeBSD e macOS.