Documentation
¶
Overview ¶
Package loghub_ident fornece a identidade do software dentro do ecossistema Loghub. A biblioteca é carregada uma única vez na inicialização do processo (Initialize) e expõe os seis valores de identidade em um singleton imutável (ID).
Os seis campos resolvidos são:
- DataDir — diretório de dados (env DATADIR ou /data)
- MachineID — identificador único da máquina (env MACHINE_ID ou arquivo configurável via env MACHINE_ID_FILE, padrão /etc/machine-id)
- AgentName — nome do agente (env, arquivo ou argv[0])
- AgentUUID — UUID v4 persistente do agente (env, arquivo ou gerado localmente via crypto/rand)
- Hostname — hostname da máquina (env ou os.Hostname)
- Workspace — workspace lógico (env ou arquivo; obrigatório)
Cada campo segue a precedência: variável de ambiente → arquivo de disco → fallback do sistema (quando disponível). Todos são normalizados para lowercase.
Em caso de falha na resolução de qualquer campo, a biblioteca escreve uma mensagem de erro em stderr e encerra o processo via os.Exit com um código específico (100–112). Consulte a documentação de Initialize para detalhes.
A biblioteca não possui dependências externas; utiliza apenas a biblioteca padrão do Go. Compatível com qualquer plataforma suportada por Go (UUID gerado via crypto/rand, sem dependência de /proc).
Uso rápido ¶
package main
import (
"fmt"
"github.com/patrickbrandao/go-loghub-ident"
)
func main() {
loghub_ident.Initialize()
fmt.Println("Agent:", loghub_ident.ID.AgentName)
fmt.Println("UUID:", loghub_ident.ID.AgentUUID)
}
Index ¶
Constants ¶
const DefaultDataDir = "/data"
DefaultDataDir é o caminho padrão do diretório de dados quando a variável de ambiente DATADIR não está definida.
const DefaultMachineIDFile = "/etc/machine-id"
DefaultMachineIDFile é o caminho padrão do arquivo de machine-id quando a variável de ambiente MACHINE_ID_FILE não está definida.
Variables ¶
This section is empty.
Functions ¶
func Initialize ¶
func Initialize()
Initialize popula ID lendo variáveis de ambiente, arquivos e fallbacks. Em qualquer falha, escreve no stderr e chama os.Exit com o código específico (100–112). Chamar duas vezes encerra com código 112.
Deve ser chamada no início do main, antes de spawn de qualquer goroutine que vá ler ID.
Códigos de saída:
100 — DATADIR não existe ou não é diretório 101 — MACHINE_ID: env vazio e arquivo de machine-id ausente 102 — MACHINE_ID: formato inválido 103 — AGENT_NAME: todas as fontes vazias 104 — AGENT_NAME: formato inválido 105 — AGENT_UUID: falha na geração local de UUID v4 106 — AGENT_UUID: gravação em $DATADIR/agent_uuid falhou 107 — AGENT_UUID: não é UUID v4 canônico 108 — HOSTNAME: os.Hostname() falhou 109 — HOSTNAME: formato inválido 110 — WORKSPACE: env vazio e arquivo ausente 111 — WORKSPACE: formato inválido 112 — Initialize() chamado mais de uma vez
Types ¶
type Identity ¶
type Identity struct {
DataDir string // diretório existente; ex.: "/data"
MachineID string // 32 hex chars [0-9a-f], sem hífen
AgentName string // [a-z0-9._-]+
AgentUUID string // UUID v4 canônico
Hostname string // [a-z0-9.-]+
Workspace string // [a-z0-9.-]+
}
Identity contém os seis valores de identidade do agente. Todos em lowercase. Imutável após Initialize.
var ID *Identity
ID é o singleton populado por Initialize. Antes de Initialize é nil. Após Initialize, nunca é reatribuído nem mutado. Sem mutex porque é write-once antes das goroutines do consumidor existirem.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package loghub_ident fornece a identidade do software dentro do ecossistema Loghub.
|
Package loghub_ident fornece a identidade do software dentro do ecossistema Loghub. |