| push_loki_stream |
function |
go |
infra |
1.0.0 |
impure |
func PushLokiStream(endpoint string, user string, pass string, labels map[string]string, timestampsNs []int64, lines []string) error |
Envia lineas de log a un servidor Grafana Loki via su push API. Construye el cuerpo JSON {"streams":[{"stream":{labels},"values":[["<ts_ns>","<line>"],...]}]} y lo POSTea al endpoint. Soporta Basic Auth opcional, valida que timestamps y lineas tengan igual longitud, es no-op si no hay lineas, y exige status 2xx. Solo stdlib, TLS verificado. |
| loki |
| grafana |
| logs |
| push |
| metrics |
| http |
| json |
| stdlib |
| infra |
| fleet-metrics |
|
|
|
|
false |
error_go_core |
| bytes |
| encoding/json |
| fmt |
| io |
| net/http |
| strconv |
| time |
|
|
|
| name |
desc |
| user |
usuario para Basic Auth; si es cadena vacia no se envia Authorization |
|
| name |
desc |
| pass |
password para Basic Auth; solo se usa cuando user != '' |
|
| name |
desc |
| labels |
labels del stream Loki (ej {instance:lucas, job:journald, unit:ssh.service}); van tal cual en el campo stream |
|
| name |
desc |
| timestampsNs |
timestamps en nanosegundos desde epoch, uno por linea; debe tener la misma longitud que lines |
|
| name |
desc |
| lines |
lineas de log a enviar, alineadas posicionalmente con timestampsNs; si esta vacio la funcion es no-op |
|
|
error si la peticion falla, las longitudes no coinciden o el status no es 2xx; nil en exito (incluido el no-op de 0 lineas) |
true |
| JSON enviado tiene estructura streams/stream/values correcta |
| longitudes desiguales dan error antes del POST |
| len lines cero es no-op sin peticion |
| Basic Auth presente cuando user no vacio |
| status 500 produce error |
|
functions/infra/push_loki_stream_test.go |
functions/infra/push_loki_stream.go |