fix(swarm-otel): tell the log store which field carries the message
The journald receiver leaves the OTLP body empty and carries the entry as a map of journal fields, so VictoriaLogs had no message to index and wrote a placeholder into _msg on every record. Ingest returned 200, every field was present, and a plain search for a line sitting in the store found nothing. _msg_field names the field that holds the text. _stream_fields is the difference between one stream for the whole host and one per unit per machine; both are set by journald itself and both are low-cardinality.
This commit is contained in:
parent
0c755e04c8
commit
1af0138928
1 changed files with 19 additions and 1 deletions
|
|
@ -852,8 +852,26 @@ in
|
||||||
# wrong path and a nonsense path all answer 400. Only its log
|
# wrong path and a nonsense path all answer 400. Only its log
|
||||||
# distinguishes them — the real route complains about the
|
# distinguishes them — the real route complains about the
|
||||||
# encoding, everything else says "unsupported path requested".
|
# encoding, everything else says "unsupported path requested".
|
||||||
|
# 🔑 THE TWO QUERY PARAMETERS ARE NOT TUNING — without the
|
||||||
|
# first one this pipeline fills the store with records that
|
||||||
|
# cannot be searched by message text, which is the only
|
||||||
|
# reason to collect logs at all.
|
||||||
|
#
|
||||||
|
# The journald receiver leaves the OTLP *body* empty and
|
||||||
|
# carries the entry as a map of journal fields, so the store
|
||||||
|
# has no message to index and writes the literal placeholder
|
||||||
|
# `missing _msg field` into `_msg` on EVERY record. Nothing
|
||||||
|
# errors: ingest returns 200, the data is all present, and a
|
||||||
|
# plain search for a line that is sitting right there returns
|
||||||
|
# nothing. `_msg_field` tells the store which field carries
|
||||||
|
# the message. Measured, both with and without.
|
||||||
|
#
|
||||||
|
# `_stream_fields` is the difference between one enormous
|
||||||
|
# stream for the whole host and one per unit per machine —
|
||||||
|
# both low-cardinality, and both fields journald sets itself.
|
||||||
"otlphttp/victorialogs".logs_endpoint =
|
"otlphttp/victorialogs".logs_endpoint =
|
||||||
"http://127.0.0.1:${toString vlCfg.port}/insert/opentelemetry/v1/logs";
|
"http://127.0.0.1:${toString vlCfg.port}/insert/opentelemetry/v1/logs"
|
||||||
|
+ "?_msg_field=MESSAGE&_stream_fields=_HOSTNAME,_SYSTEMD_UNIT";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Moves this collector's self-metrics off the built-in
|
# Moves this collector's self-metrics off the built-in
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue