VictoriaMetrics/lib
Aliaksandr Valialkin ac5528cb46
lib/promscrape: properly add exported_ prefix to labels, which clash with target labels if honor_labels: true option isn't set.
The issue was in the `labels := dst[offset:]` line in the beginning of appendExtraLabels() function.
The `dst` may be re-allocated when adding extra labels to it. In this case the addition of `exported_`
prefix to labels inside `labels` slice become invisible in the returned `dst` labels.

While at it, properly handle some corner cases:

- Add additional `exported_` prefix to clashing metric labels with already existing `exported_` prefix.
- Store scraped metric names in `exported___name__` label if scrape target contains `__name__` label.

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3278

Thanks to @jplanckeel for the initial attempt to fix this issue
at https://github.com/VictoriaMetrics/VictoriaMetrics/pull/3281
2022-10-28 22:15:31 +03:00
..
appmetrics all: add ability to push internal metrics to remote storage system specified via -pushmetrics.url 2022-07-21 20:15:29 +03:00
auth app/vminsert: allows parsing tenant id from labels (#3009) 2022-09-30 17:28:35 +03:00
awsapi lib/promscrape/discovery/ec2: expose __meta_ec2_region label in the same way as Prometheus 2.39 does 2022-09-30 20:49:08 +03:00
backup lib/envtemplate: allow referring env vars from other env vars via %{ENV_VAR} syntax 2022-10-26 14:51:02 +03:00
blockcache all: remove explicit "xxhash" name when importing github.com/cespare/xxhash/v2 package 2022-06-21 20:24:28 +03:00
bloomfilter lib/promscrape: add the ability to limit the number of unique series per each scrape target 2021-09-01 16:08:12 +03:00
buildinfo all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
bytesutil lib/bytesutil: make sure that the string passed to FastStringMather.Match() is copied before using it as a key in the internal cache map 2022-10-14 09:52:18 +03:00
cgroup all: use os.{Read|Write}File instead of ioutil.{Read|Write}File 2022-08-21 23:55:20 +03:00
consts app/vminsert: reduce the max packet size, which vminsert can send to vmstorage 2022-04-05 15:39:58 +03:00
decimal all: fix build issues and tests for Apple M1 2021-10-27 15:07:19 +03:00
encoding lib/storage: validate timestamps in the block only if they use encoding, which needs validation 2022-10-21 00:54:37 +03:00
envflag lib/envtemplate: allow referring env vars from other env vars via %{ENV_VAR} syntax 2022-10-26 14:51:02 +03:00
envtemplate lib/envtemplate: allow referring env vars from other env vars via %{ENV_VAR} syntax 2022-10-26 14:51:02 +03:00
fastnum Makefile: add build and test rules with enabled race detector. These rules have -race suffix 2020-03-05 12:05:16 +02:00
fasttime lib: extract common code for returning fast unix timestamp into lib/fasttime 2020-05-14 23:06:50 +03:00
filestream lib/fs: add vm_filestream_read_duration_seconds_total and vm_filestream_write_duration_seconds_total metrics 2021-12-02 09:13:20 +02:00
flagutil app/vmagent/remotewrite: allow specifying per--remoteWrite.url disk limits for persistent queue with pending data 2022-10-01 18:41:21 +03:00
fs lib/fs: add canOverwrite arg to WriteFileAtomically when it is allowed to overwrite the file atomically if it already exists 2022-10-26 01:08:35 +03:00
handshake all: substitute zeroTime with time.Time{}, since this generates more optimal binary code 2022-02-07 14:36:41 +02:00
httpserver lib/flagutil: rename Array to ArrayString 2022-10-01 18:28:19 +03:00
influxutils lib/flagutil: rename Array to ArrayString 2022-10-01 18:28:19 +03:00
ingestserver lib/httpserver: extract the code responsible for initializing server-side TLS config into netutil.GetServerTLSConfig 2022-03-17 19:46:20 +02:00
leveledbytebufferpool all: make fmt via the upcoming Go1.19 2022-07-11 19:23:25 +03:00
logger lib/logger: prettify logging the defined command-line flags 2022-08-07 22:58:41 +03:00
lrucache all: remove explicit "xxhash" name when importing github.com/cespare/xxhash/v2 package 2022-06-21 20:24:28 +03:00
memory lib/memory: export process_memory_limit_bytes metric, which shows the amounts of memory the current process has access to 2022-04-07 15:24:08 +03:00
mergeset lib/fs: add canOverwrite arg to WriteFileAtomically when it is allowed to overwrite the file atomically if it already exists 2022-10-26 01:08:35 +03:00
metricsql all: make fmt via the upcoming Go1.19 2022-07-11 19:23:25 +03:00
netutil app/{vminsert,vmselect}/netstorage: allow calling Init()+MustStop() in a loop 2022-10-25 14:43:05 +03:00
pacelimiter lib/pacelimiter: increase scalability for multi-CPU system 2020-08-06 18:33:07 +03:00
persistentqueue lib/fs: add canOverwrite arg to WriteFileAtomically when it is allowed to overwrite the file atomically if it already exists 2022-10-26 01:08:35 +03:00
procutil lib/procutil: stop immediately after receiving the second SIGINT or SIGTERM signal 2022-10-20 21:58:49 +03:00
promauth lib/{httpserver,netutil}: allow to define min and max TLS version of the http server (#3109) 2022-09-26 17:38:43 +03:00
prompb app/vminsert: moved -maxInsertRequestSize command-line flag out of lib/prompb in order to prevent its inclusion in vmselect and vmstorage apps 2020-01-28 22:53:50 +02:00
prompbmarshal all: use %w instead of %s for wrapping errors in fmt.Errorf 2020-06-30 23:33:46 +03:00
promrelabel lib/envtemplate: allow referring env vars from other env vars via %{ENV_VAR} syntax 2022-10-26 14:51:02 +03:00
promscrape lib/promscrape: properly add exported_ prefix to labels, which clash with target labels if honor_labels: true option isn't set. 2022-10-28 22:15:31 +03:00
promutils lib/promscrape: properly implement ScrapeConfig.clone() 2022-05-07 00:06:19 +03:00
protoparser lib/protoparser/clusternative: allocate unmarshalWork after reading the data from input connection 2022-10-18 00:24:04 +03:00
proxy lib/promauth: add ability to send additional http headers in requests to scrape targets 2022-06-22 20:40:50 +03:00
pushmetrics lib/flagutil: rename Array to ArrayString 2022-10-01 18:28:19 +03:00
querytracer lib/querytracer: fix comment (#3135) 2022-09-22 13:59:17 +02:00
regexutil lib/promrelabel: there is no need in calling regex.HasPrefix() after the optimization at 17289ff481 2022-09-30 12:28:25 +03:00
snapshot all: subsitute ioutil.ReadAll with io.ReadAll 2022-08-22 00:16:04 +03:00
storage lib/fs: add canOverwrite arg to WriteFileAtomically when it is allowed to overwrite the file atomically if it already exists 2022-10-26 01:08:35 +03:00
storagepacelimiter lib/storage: remove prioritizing of merging small parts over merging big parts, since it doesn't work as expected 2020-07-30 20:02:22 +03:00
syncwg all: open-sourcing single-node version 2019-05-23 00:18:06 +03:00
tenantmetrics app/vminsert: allows parsing tenant id from labels (#3009) 2022-09-30 17:28:35 +03:00
timerpool lib/timerpool: use timer pool in concurrency limiters 2019-05-28 17:30:10 +03:00
uint64set Revert "lib/uint64set: allow reusing bucket16 structs inside uint64set.Set via uint64set.Release method" 2021-07-06 18:26:56 +03:00
vmselectapi lib/vmselectapi: do not log connection accept/close from vmselect 2022-08-12 09:15:29 +03:00
workingsetcache lib/workingsetcache: increase default cache expiration from 10 minutes to 20 minutes 2022-10-20 21:59:08 +03:00
writeconcurrencylimiter fix: change thrashing typo (#2317) 2022-03-16 13:05:55 +02:00