Quentin D
fae2f6306b
Add constrained labels and Constrained variant for all MetricVecs ( #1151 )
...
* Introduce MetricVecOpts and add constraints to VariableLabels
MetricVecOpts exposes options specific to MetricVec initialisation. The
first option exposed by MetricVecOpts are constraints on VariableLabels,
allowing restrictions on the possible values a label can take, to
prevent cardinality explosion when the label value comes from a
non-trusted source (as a user input or HTTP header).
Signed-off-by: Quentin Devos <4972091+Okhoshi@users.noreply.github.com>
* Add tests
Signed-off-by: Quentin Devos <4972091+Okhoshi@users.noreply.github.com>
Signed-off-by: Quentin Devos <4972091+Okhoshi@users.noreply.github.com>
2022-12-13 13:47:52 +01:00
Soroosh Azary Marhabi
2cfd1eb960
Enable same linters as the Prometheus repo itself ( #1056 )
...
* Add gofumpt to github workflow & fix all files for it
Signed-off-by: sazary <soroosh@azary.ir>
* Add goimports to golangci & fix it's issues
Signed-off-by: sazary <soroosh@azary.ir>
* Add revive to golangci & fix it's issues
Signed-off-by: sazary <soroosh@azary.ir>
* Add errcheck & misspell to golangci and fix their issues
Signed-off-by: sazary <soroosh@azary.ir>
* Add govet & gosimple to golangci and fix their issues
Signed-off-by: sazary <soroosh@azary.ir>
* Enable all default linters of golangci
Signed-off-by: sazary <soroosh@azary.ir>
2022-06-17 09:04:06 +02:00
Bartlomiej Plotka
1f81b3e913
Added Transactional Gatherer allowed cached solutions ( #989 )
...
* Added cached collector.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
update.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
Attempt 2
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
Added blocking registry, with raw collector and transactional handler.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
Added fast path to normal (empty) registry to save 8 allocs and 3K5B per Gather.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
Simplified API, added tests.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
Fix.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
Simplified implementation.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
Added benchmark.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
Optimized.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
* Optimization attempt.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
* Revert "Optimization attempt."
This reverts commit 2fcaf51be9
.
Optimization was not worth it:
benchstat v1.txt v2.txt
name old time/op new time/op delta
CachedTGatherer_Update/Update_of_one_element_without_reset-12 2.64µs ± 0% 4.05µs ± 0% ~ (p=1.000 n=1+1)
CachedTGatherer_Update/Update_of_all_elements_with_reset-12 701ms ± 0% 358ms ± 0% ~ (p=1.000 n=1+1)
CachedTGatherer_Update/Gather-12 535µs ± 0% 703934µs ± 0% ~ (p=1.000 n=1+1)
name old alloc/op new alloc/op delta
CachedTGatherer_Update/Update_of_one_element_without_reset-12 208B ± 0% 208B ± 0% ~ (all equal)
CachedTGatherer_Update/Update_of_all_elements_with_reset-12 40.2MB ± 0% 41.1MB ± 0% ~ (p=1.000 n=1+1)
CachedTGatherer_Update/Gather-12 48.6kB ± 0% 84.3kB ± 0% ~ (p=1.000 n=1+1)
name old allocs/op new allocs/op delta
CachedTGatherer_Update/Update_of_one_element_without_reset-12 3.00 ± 0% 3.00 ± 0% ~ (all equal)
CachedTGatherer_Update/Update_of_all_elements_with_reset-12 6.00 ± 0% 4003.00 ± 0% ~ (p=1.000 n=1+1)
CachedTGatherer_Update/Gather-12 1.00k ± 0% 2.01k ± 0% ~ (p=1.000 n=1+1)
* nit.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
* Another optimization attempt.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
* rename and further optimization.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
* Hopefully final optimization.
benchstat -delta-test=none v6.txt v9.txt
name old time/op new time/op delta
CachedTGatherer_Update/Update_of_one_element_without_reset-12 13.1ms ± 0% 0.0ms ± 0% -99.81%
CachedTGatherer_Update/Update_of_all_elements_with_reset-12 309ms ± 0% 282ms ± 0% -8.77%
CachedTGatherer_Update/Gather-12 422ms ± 0% 0ms ± 0% -99.95%
name old alloc/op new alloc/op delta
CachedTGatherer_Update/Update_of_one_element_without_reset-12 208B ± 0% 208B ± 0% 0.00%
CachedTGatherer_Update/Update_of_all_elements_with_reset-12 2.47kB ± 0% 1.67kB ± 0% -32.56%
CachedTGatherer_Update/Gather-12 52.8kB ± 0% 24.6kB ± 0% -53.34%
name old allocs/op new allocs/op delta
CachedTGatherer_Update/Update_of_one_element_without_reset-12 3.00 ± 0% 3.00 ± 0% 0.00%
CachedTGatherer_Update/Update_of_all_elements_with_reset-12 0.00 0.00 0.00%
CachedTGatherer_Update/Gather-12 1.00k ± 0% 0.00k ± 0% -99.60%
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
* Removed obsolete comment
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
* Fixed tests.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
* Removed cache.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
* Fixed tests.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
* Re-add cache.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
* Removed cache.
Signed-off-by: Bartlomiej Plotka <bwplotka@gmail.com>
2022-02-23 11:22:52 +00:00
beorn7
e92283d644
Fix linter ignores
...
Signed-off-by: beorn7 <beorn@grafana.com>
2021-03-16 17:19:03 +01:00
beorn7
b54b73c7b1
Remove spurious commas from links to the docs site
...
I assume older Nanoc versions rendered the anchors with commas, but
the current doesn't.
Also, this adds the same link to another doc comment where it is also
relevant.
Signed-off-by: beorn7 <beorn@grafana.com>
2020-09-07 22:31:29 +02:00
Tom Wilkie
9c8ba1f945
Review feedback: add comment and tests for WrapRegistererWith.
...
Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
2020-06-04 11:51:51 +01:00
Tom Wilkie
8961609f91
Ensure that nil registers are treat as a no-op, even when wrapping.
...
Signed-off-by: Tom Wilkie <tom.wilkie@gmail.com>
2020-06-04 10:30:51 +01:00
beorn7
dba1478b8a
Add lint:ignore for protobuf deprecation
...
`github.com/golang/protobuf/proto` is deprecated in lieu of
`google.golang.org/protobuf/proto`. However, we cannot simply
migrate. Types from the proto package are exposed to users of packages
in this repo. If we migrate here, users have to migrate to. Thus, we
could only migrate with a major version bump.
In different news, with all the inline lint:ignore comments, including
the existing ones, there is no need to repeat the exception in the
Makefile.
A current version of `staticcheck` is happy with the code after this
commit. golangci-lint is broken at the moment, however, and ignores
the lint:ignore comments in the code as well as those via envvar.
Signed-off-by: beorn7 <beorn@grafana.com>
2020-05-14 20:11:22 +02:00
beorn7
2f3a0f8f2e
Make the AlreadyRegisteredError useful for wrapped registries
...
Signed-off-by: beorn7 <beorn@grafana.com>
2019-06-14 17:55:35 +02:00
beorn7
fe28f32433
Discourage prefixing every metris with WrapRegistererWithPrefix
...
Signed-off-by: beorn7 <beorn@soundcloud.com>
2018-09-14 11:59:13 +02:00
beorn7
cf9b2a8c78
Rename WrapWith... to WrapRegistererWith...
...
Signed-off-by: beorn7 <beorn@soundcloud.com>
2018-09-13 17:43:05 +02:00
beorn7
837c7cb1f4
Update Collector example
...
It now uses the new WrapWith function instead of ConstLabels. Describe
is now implemented via DescribeByCollect.
Signed-off-by: beorn7 <beorn@soundcloud.com>
2018-09-12 15:34:13 +02:00
beorn7
84d7aa0cd9
Add wrapping of Registerers with labels and prefix
...
Essentially middleware for Registerers!
Signed-off-by: beorn7 <beorn@soundcloud.com>
2018-09-12 15:34:07 +02:00