diff --git a/app/vlagent/kubernetescollector/processor.go b/app/vlagent/kubernetescollector/processor.go index 314a903199..0e5772f84d 100644 --- a/app/vlagent/kubernetescollector/processor.go +++ b/app/vlagent/kubernetescollector/processor.go @@ -188,7 +188,7 @@ func (lfp *logFileProcessor) addLineInternal(timestamp int64, line []byte) { }) } else { // vlagent should override the timestamp from CRI to the timestamp parsed from the log line. - n := fieldIndex(parser.Fields, *timeField) + n := fieldIndex(parser.Fields, getTimeFields()) if n >= 0 { f := &parser.Fields[n] v, ok := logstorage.TryParseTimestampRFC3339Nano(f.Value) @@ -199,12 +199,12 @@ func (lfp *logFileProcessor) addLineInternal(timestamp int64, line []byte) { } } - logstorage.RenameField(parser.Fields, *msgField, "_msg") + logstorage.RenameField(parser.Fields, getMsgFields(), "_msg") } if len(parser.Fields) > 1000 { line := logstorage.MarshalFieldsToJSON(nil, parser.Fields) - logger.Warnf("dropping log line with %d fields; %s", parser.Fields, line) + logger.Warnf("dropping log line with %d fields; %s", len(parser.Fields), line) return } @@ -398,6 +398,24 @@ func initExtraFields() { parsedExtraFields = fields } +var defaultMsgFields = []string{"message", "msg", "log"} + +func getMsgFields() []string { + if len(*msgField) == 0 { + return defaultMsgFields + } + return *msgField +} + +var defaultTimeFields = []string{"time", "timestamp", "ts"} + +func getTimeFields() []string { + if len(*timeField) == 0 { + return defaultTimeFields + } + return *timeField +} + var partialCRIContentBufPool bytesutil.ByteBufferPool var criJSONParserPool fastjson.ParserPool diff --git a/docs/victorialogs/CHANGELOG.md b/docs/victorialogs/CHANGELOG.md index 289676c7dd..8666d9e5cf 100644 --- a/docs/victorialogs/CHANGELOG.md +++ b/docs/victorialogs/CHANGELOG.md @@ -26,6 +26,7 @@ according to the follosing docs: * BUGFIX: [OpenTelemetry data ingestion](https://docs.victoriametrics.com/victorialogs/data-ingestion/opentelemetry/): properly handle `null` values inside arrays. Previously, such arrays could cause a panic during ingestion. See [#869](https://github.com/VictoriaMetrics/VictoriaLogs/issues/869#issuecomment-3627177567). The issue has been introduced in [v1.40.0](https://github.com/VictoriaMetrics/VictoriaLogs/releases/tag/v1.40.0). * BUGFIX: [OpenTelemetry data ingestion](https://docs.victoriametrics.com/victorialogs/data-ingestion/opentelemetry/): properly skip attributes with missing key. See [this report](https://github.com/VictoriaMetrics/VictoriaLogs/issues/869#issuecomment-3631307996). * BUGFIX: [OpenTelemetry data ingestion](https://docs.victoriametrics.com/victorialogs/data-ingestion/opentelemetry/): reduce memory usage after [v1.40.0 release](https://github.com/VictoriaMetrics/VictoriaLogs/releases/tag/v1.40.0). See [#869](https://github.com/VictoriaMetrics/VictoriaLogs/issues/869). +* BUGFIX: [Kubernetes Collector](https://docs.victoriametrics.com/victorialogs/vlagent/#collect-kubernetes-pod-logs): properly handle unset [`-kubernetesCollector.msgField`](https://docs.victoriametrics.com/victorialogs/vlagent/#kubernetes-collector-configuration) and [`-kubernetesCollector.timeField`](https://docs.victoriametrics.com/victorialogs/vlagent/#kubernetes-collector-configuration) flags. Previously, vlagent didn't apply the default values described in the documentation. ## [v1.40.0](https://github.com/VictoriaMetrics/VictoriaLogs/releases/tag/v1.40.0) diff --git a/docs/victorialogs/vlagent.md b/docs/victorialogs/vlagent.md index 75d671df37..220fe8e645 100644 --- a/docs/victorialogs/vlagent.md +++ b/docs/victorialogs/vlagent.md @@ -108,7 +108,7 @@ as [`_msg`](https://docs.victoriametrics.com/victorialogs/keyconcepts/#message-f - `msg` - `log` -You can change the default list of `_msg` fields by passing `-kubernetesCollector.msgFields` command-line flag with comma-separated list of field names. +You can change the default list of `_msg` fields by passing `-kubernetesCollector.msgField` command-line flag with comma-separated list of field names. `vlagent` extracts timestamp from the log line and uses it as [`_time`](https://docs.victoriametrics.com/victorialogs/keyconcepts/#time-field) field, using the following fields: