
Asset inventory only works when the agent can run across the entire fleet, identify the machine in a stable way and deliver data that GLPI understands. The go-glpi-agent is a Go reimplementation of the FusionInventory/GLPI ecosystem inventory agent: a static binary that collects local hardware and software and sends the result to GLPI 10+ — without Perl runtime, module tree, or SSH access to the endpoint.
What is go-glpi-agent
The project is not the official agent glpi-agent, nor does it try to overwrite it. It is a separate implementation, designed to coexist with the official agent and with the old fusioninventory-agent. The compatibility point is deliberate: it reads the format agent.cfg already used by the Perl agent and reuses existing identifiers, reducing the risk of a machine reappearing in GLPI as another asset after a migration.
The flow is straightforward:
- the binary discovers local hardware, system, and software data;
- assembles the inventory in the project's internal model;
- attempts to send it to
/front/inventory.phpusing GLPI's native JSON protocol; - when necessary, it automatically falls back to the legacy OCS/FusionInventory XML flow;
- GLPI associates the inventory with the computer identified by the agent.
There is also a local mode: go-glpi-agent run --local DIRETÓRIO saves the XML without sending it. This is the best first step to check what will be collected before pointing a fleet to production.
Why a Go binary changes operations
- Simple deployment: the project publishes native packages for Linux, plus files for Windows, FreeBSD, and macOS. For an infrastructure team, this reduces dependencies on the host.
- One code, four systems: the same codebase covers Linux amd64, Windows amd64, FreeBSD amd64 and macOS 13+ on Apple Silicon; Intel Mac requires compilation on an Intel host.
- Predictable schedule: on Linux, the package installs a timer systemd per hour with random delay. On Windows, version 0.6.0 switched to using a Windows service instead of the previous scheduled task.
- 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.
What it collects
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 and pacman. No Windows, combina WMI, Registro e gopsutil; no FreeBSD, usa kenv, pkg, geom, sysctl and usbconfig; no macOS, usa system_profiler, ioreg, sysctl and 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. |
Installation on Ubuntu and 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.
Configure the destination and test without sending anything
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.
Schedule with 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.
How to maintain asset identity
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.
Useful settings and their values
| Name | 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 or 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. |
Other operating systems
- 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
.pkgand.dmg. Para Mac Intel, a documentação orienta compilar no próprio host Intel.
Known limits: where not to overpromise
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 and 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”.
Current version and adoption roadmap
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.
References
- 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.