diff --git a/README.md b/README.md index e61a51da8..64024f285 100644 --- a/README.md +++ b/README.md @@ -311,7 +311,8 @@ VictoriaMetrics maps Influx data using the following rules: unless `db` tag exists in the Influx line. * Field names are mapped to time series names prefixed with `{measurement}{separator}` value, where `{separator}` equals to `_` by default. It can be changed with `-influxMeasurementFieldSeparator` command-line flag. - See also `-influxSkipSingleField` command-line flag. If `{measurement}` is empty, then time series names correspond to field names. + See also `-influxSkipSingleField` command-line flag. + If `{measurement}` is empty or `-influxSkipMeasurement` command-line flag is set, then time series names correspond to field names. * Field values are mapped to time series values. * Tags are mapped to Prometheus labels as-is. diff --git a/app/vmagent/influx/request_handler.go b/app/vmagent/influx/request_handler.go index 642bd3d87..a17ef60f8 100644 --- a/app/vmagent/influx/request_handler.go +++ b/app/vmagent/influx/request_handler.go @@ -19,6 +19,7 @@ import ( var ( measurementFieldSeparator = flag.String("influxMeasurementFieldSeparator", "_", "Separator for '{measurement}{separator}{field_name}' metric name when inserted via Influx line protocol") skipSingleField = flag.Bool("influxSkipSingleField", false, "Uses '{measurement}' instead of '{measurement}{separator}{field_name}' for metic name if Influx line contains only a single field") + skipMeasurement = flag.Bool("influxSkipMeasurement", false, "Uses '{field_name}' as a metric name while ignoring '{measurement}' and '-influxMeasurementFieldSeparator'") ) var ( @@ -79,7 +80,10 @@ func insertRows(db string, rows []parser.Row) error { Value: db, }) } - ctx.metricGroupBuf = append(ctx.metricGroupBuf[:0], r.Measurement...) + ctx.metricGroupBuf = ctx.metricGroupBuf[:0] + if !*skipMeasurement { + ctx.metricGroupBuf = append(ctx.metricGroupBuf, r.Measurement...) + } skipFieldKey := len(r.Fields) == 1 && *skipSingleField if len(ctx.metricGroupBuf) > 0 && !skipFieldKey { ctx.metricGroupBuf = append(ctx.metricGroupBuf, *measurementFieldSeparator...) diff --git a/app/vminsert/influx/request_handler.go b/app/vminsert/influx/request_handler.go index 1395fb8b4..e7e4ef53a 100644 --- a/app/vminsert/influx/request_handler.go +++ b/app/vminsert/influx/request_handler.go @@ -19,6 +19,7 @@ import ( var ( measurementFieldSeparator = flag.String("influxMeasurementFieldSeparator", "_", "Separator for '{measurement}{separator}{field_name}' metric name when inserted via Influx line protocol") skipSingleField = flag.Bool("influxSkipSingleField", false, "Uses '{measurement}' instead of '{measurement}{separator}{field_name}' for metic name if Influx line contains only a single field") + skipMeasurement = flag.Bool("influxSkipMeasurement", false, "Uses '{field_name}' as a metric name while ignoring '{measurement}' and '-influxMeasurementFieldSeparator'") ) var ( @@ -75,7 +76,10 @@ func insertRows(db string, rows []parser.Row) error { if len(db) > 0 && !hasDBLabel { ic.AddLabel("db", db) } - ctx.metricGroupBuf = append(ctx.metricGroupBuf[:0], r.Measurement...) + ctx.metricGroupBuf = ctx.metricGroupBuf[:0] + if !*skipMeasurement { + ctx.metricGroupBuf = append(ctx.metricGroupBuf, r.Measurement...) + } skipFieldKey := len(r.Fields) == 1 && *skipSingleField if len(ctx.metricGroupBuf) > 0 && !skipFieldKey { ctx.metricGroupBuf = append(ctx.metricGroupBuf, *measurementFieldSeparator...)