add POST /logs installer log relay to VictoriaLogs
A host being PXE-discovered or installed is not in Kubernetes, so vlagent cannot collect its logs and a failed install leaves no record; the installer environment has no internal-CA trust or credentials for the HTTPS log ingest, and bootapi is already the plain-HTTP broker it can reach. - add POST /logs, token-guarded like POST /provisioned, relaying ndjson to vlinsert's jsonline endpoint keyed on serial+phase - stamp observed source IP and resolved NetBox device name into extra_fields - return 202 on a sink failure so logs never block an install - add BOOTAPI_VLINSERT_URL/_TIMEOUT and bootapi_log_relay metrics
This commit is contained in:
@@ -28,6 +28,8 @@ type metrics struct {
|
||||
netboxLookups *prometheus.CounterVec // by field,result
|
||||
netboxDuration *prometheus.HistogramVec
|
||||
provisioned *prometheus.CounterVec // by result
|
||||
logRelay *prometheus.CounterVec // by result
|
||||
logLines prometheus.Counter
|
||||
ipxeGated prometheus.Counter
|
||||
}
|
||||
|
||||
@@ -56,12 +58,20 @@ func newMetrics(cache cacheStats, git gitStats) *metrics {
|
||||
Name: "bootapi_provisioned_total",
|
||||
Help: "Provisioned callbacks, by result (ok|unauthorized|notfound|error|disabled).",
|
||||
}, []string{"result"}),
|
||||
logRelay: prometheus.NewCounterVec(prometheus.CounterOpts{
|
||||
Name: "bootapi_log_relay_total",
|
||||
Help: "Installer log batches relayed to VictoriaLogs, by result (ok|error|unauthorized|disabled).",
|
||||
}, []string{"result"}),
|
||||
logLines: prometheus.NewCounter(prometheus.CounterOpts{
|
||||
Name: "bootapi_log_relay_lines_total",
|
||||
Help: "Installer log lines successfully relayed to VictoriaLogs.",
|
||||
}),
|
||||
ipxeGated: prometheus.NewCounter(prometheus.CounterOpts{
|
||||
Name: "bootapi_ipxe_gated_total",
|
||||
Help: "Known hosts served the local-boot fallback because pxe_enabled=false.",
|
||||
}),
|
||||
}
|
||||
reg.MustRegister(m.httpRequests, m.renders, m.netboxLookups, m.netboxDuration, m.provisioned, m.ipxeGated)
|
||||
reg.MustRegister(m.httpRequests, m.renders, m.netboxLookups, m.netboxDuration, m.provisioned, m.logRelay, m.logLines, m.ipxeGated)
|
||||
if cache != nil {
|
||||
reg.MustRegister(newCacheCollector(cache))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user