Documentation
¶
Overview ¶
Package loghubident resolve e expõe a identidade de um software dentro do ecossistema Loghub. É carregado uma única vez no boot do processo (Initialize) e disponibiliza seis valores imutáveis por meio de getters de pacote.
Os seis campos resolvidos são:
- DataDir — diretório de dados persistente (env DATADIR ou /data)
- MachineID — identificador da máquina (env MACHINE_ID, arquivo configurável via MACHINE_ID_FILE, $DATADIR/machine_id, ou gerado)
- AgentName — nome do agente (env AGENT_NAME, $DATADIR/agent_name ou argv[0])
- AgentUUID — UUIDv7 persistente (env AGENT_UUID, $DATADIR/agent_uuid ou gerado)
- Hostname — hostname (env HOSTNAME ou os.Hostname)
- Workspace — workspace/tenant (env WORKSPACE, $DATADIR/workspace ou "default")
Precedência geral de cada campo: variável de ambiente → arquivo de disco → fallback do sistema. Uma fonte ausente cai para a próxima; uma env presente mas inválida encerra o processo com o código do campo. Todos os valores são saneados (1ª linha, sem BOM, sem espaços nem caracteres de controle nas bordas) e normalizados para lowercase antes da validação — env e arquivo passam pelo mesmo pipeline.
As identidades geradas (MachineID e AgentUUID) são persistidas em $DATADIR com permissão 0644 garantida, gravação durável e atômica: processos que sobem ao mesmo tempo sobre o mesmo volume convergem para uma identidade única, e um crash no meio da escrita não deixa arquivo truncado. Descartar uma identidade persistida inválida sempre gera aviso em stderr.
O UUIDv7 é gerado localmente via github.com/patrickbrandao/go-loghub-uuid, sem dependência de /proc, sendo portanto multiplataforma.
Uso rápido ¶
package main
import (
"fmt"
lhident "github.com/patrickbrandao/go-loghub-ident"
)
func main() {
lhident.Initialize() // encerra o processo se algo falhar
fmt.Println("agent:", lhident.AgentName(), lhident.AgentUUID())
}
Defina a variável de ambiente LOGHUB_IDENT_DEBUG para que Initialize escreva em stderr a origem e o valor final de cada um dos seis campos resolvidos.
Index ¶
Constants ¶
const DefaultDataDir = "/data"
DefaultDataDir é o caminho padrão do diretório de dados quando a variável de ambiente DATADIR está ausente ou vazia.
const DefaultMachineIDFile = "/etc/machine-id"
DefaultMachineIDFile é o caminho padrão do arquivo de machine-id quando a variável de ambiente MACHINE_ID_FILE está ausente ou vazia.
const DefaultWorkspace = "default"
DefaultWorkspace é o valor usado para WORKSPACE quando nenhuma fonte fornece um valor.
const EnvDebug = "LOGHUB_IDENT_DEBUG"
EnvDebug é a variável de ambiente que, quando definida (valor não vazio), ativa o log de diagnóstico em stderr durante Initialize.
Variables ¶
This section is empty.
Functions ¶
func AgentUUID ¶ added in v0.2.0
func AgentUUID() string
AgentUUID retorna o UUIDv7 canônico do agente (com hífens).
func DataDir ¶ added in v0.2.0
func DataDir() string
DataDir retorna o diretório de dados resolvido.
func Initialize ¶
func Initialize()
Initialize resolve os seis campos de identidade a partir de variáveis de ambiente, arquivos e fallbacks do sistema, e os disponibiliza pelos getters de pacote (DataDir, MachineID, AgentName, AgentUUID, Hostname, Workspace).
Deve ser chamada UMA ÚNICA VEZ, no início de main(), ANTES de criar qualquer goroutine que vá ler os getters. Esse contrato estabelece a relação happens-before que torna a leitura posterior segura sem sincronização.
Em qualquer falha de resolução, escreve em stderr no formato
lib-loghub-ident: <VARIÁVEL>: <motivo>
e encerra o processo com o código correspondente (ver SPEC.md / README). A segunda chamada encerra com código 112.
Eventos operacionais — hoje, o descarte de uma identidade persistida que estava corrompida — são escritos em stderr SEMPRE, com o prefixo "lib-loghub-ident: aviso: ", independentemente do modo debug.
Se a variável de ambiente LOGHUB_IDENT_DEBUG estiver definida, escreve em stderr uma linha por campo indicando a origem e o valor final resolvido.
Types ¶
This section is empty.
Directories
¶
| Path | Synopsis |
|---|---|
|
Pacote tests contém a suíte de testes de integração da biblioteca go-loghub-ident: exercita a API pública (Initialize e os seis getters) contra o sistema operacional REAL, sem o fakeSystem.
|
Pacote tests contém a suíte de testes de integração da biblioteca go-loghub-ident: exercita a API pública (Initialize e os seis getters) contra o sistema operacional REAL, sem o fakeSystem. |