-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add collector for database/sql#DBStats #866
Conversation
Signed-off-by: Mitsuo Heijo <mitsuo.heijo@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good in general, but I have a few requests for the code structures and the naming.
var fqName func(name string) string | ||
if opts.DriverName == "" { | ||
fqName = func(name string) string { | ||
return "go_db_stats_" + name |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you think about go_sql_
as prefix rather than go_db_stats_
? The package it's coming from is called sql
. And that kind of says everything. Obviously, it's about a database, and obviously, metrics ar "stats". go_sql_open_connections
reads nicely, doesn't it?
type DBStatsCollectorOpts struct { | ||
// DriverName holds the name of driver. | ||
// It will not used for empty strings. | ||
DriverName string |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about just calling this Name
or DBName
? A user could create different *sql.DB
instances with the same driver.
In different news: Do you anticipate that we need more fields in this options struct? An options struct is great for later non-breaking additions, but if those additions never happen, it's just overhead. I cannot think about anything needed here right now, so I would tend towards just having a dbName argument on the NewDBStatsCollector constructor.
} | ||
} else { | ||
fqName = func(name string) string { | ||
return "go_" + opts.DriverName + "_db_stats_" + name |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm pretty sure the driver name should not be part of the metric name. It should be a label, perhaps called db_name
.
That label has to be a const label when creating the descriptors, see comment below.
maxOpenConnections: prometheus.NewDesc( | ||
fqName("max_open_connections"), | ||
"Maximum number of open connections to the database.", | ||
nil, nil, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To add the const label as suggested above, this line needs to be
nil, prometheus.Labels{"db_name": opts.DriverName},
@@ -0,0 +1,129 @@ | |||
// Copyright 2021 The Prometheus Authors |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would call this file dbstats_collector_pre_1.15.go
.
Also, I think, you can avoid duplicating most of the code here.
For example, you could have the Desc
for MaxIdleTimeClosed
in any case, but do not Describe
it and do not Collect
the corresponding metric. Instead, have additional method calls there DescribeGo115Stats
and CollectGo115Stats
, and then just have those methods here (as empty), and the proper methods in a separate file with // +build go1.15
as a tag.
// See the License for the specific language governing permissions and | ||
// limitations under the License. | ||
|
||
//go:build !go1.15 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is this for? Isn't the directive in the next line the proper one?
Signed-off-by: Mitsuo Heijo <mitsuo.heijo@gmail.com>
7f6e05e
to
c20bd79
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks.
You didn't implement my suggestion about reducing the code duplication for different Go versions. I think it's easiest if we merge this now and then I'll send you a PR to review.
Sorry, I couldn't fully understand and implement your idea. Looking forward to your additional PR. |
….1 [SECURITY] (#15855) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/prometheus/client_golang](https://togithub.com/prometheus/client_golang) | indirect | minor | `v1.1.0` -> `v1.11.1` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. ### GitHub Vulnerability Alerts #### [CVE-2022-21698](https://togithub.com/prometheus/client_golang/security/advisories/GHSA-cg3q-j54f-5p7p) This is the Go client library for Prometheus. It has two separate parts, one for instrumenting application code, and one for creating clients that talk to the Prometheus HTTP API. client_golang is the instrumentation library for Go applications in Prometheus, and the promhttp package in client_golang provides tooling around HTTP servers and clients. ### Impact HTTP server susceptible to a Denial of Service through unbounded cardinality, and potential memory exhaustion, when handling requests with non-standard HTTP methods. ### Affected Configuration In order to be affected, an instrumented software must * Use any of `promhttp.InstrumentHandler*` middleware except `RequestsInFlight`. * Do not filter any specific methods (e.g GET) before middleware. * Pass metric with `method` label name to our middleware. * Not have any firewall/LB/proxy that filters away requests with unknown `method`. ### Patches * [https://github.com/prometheus/client_golang/pull/962](https://togithub.com/prometheus/client_golang/pull/962) * [https://github.com/prometheus/client_golang/pull/987](https://togithub.com/prometheus/client_golang/pull/987) ### Workarounds If you cannot upgrade to [v1.11.1 or above](https://togithub.com/prometheus/client_golang/releases/tag/v1.11.1), in order to stop being affected you can: * Remove `method` label name from counter/gauge you use in the InstrumentHandler. * Turn off affected promhttp handlers. * Add custom middleware before promhttp handler that will sanitize the request method given by Go http.Request. * Use a reverse proxy or web application firewall, configured to only allow a limited set of methods. ### For more information If you have any questions or comments about this advisory: * Open an issue in https://github.com/prometheus/client_golang * Email us at `prometheus-team@googlegroups.com` --- ### Release Notes <details> <summary>prometheus/client_golang (github.com/prometheus/client_golang)</summary> ### [`v1.11.1`](https://togithub.com/prometheus/client_golang/releases/tag/v1.11.1): 1.11.1 / 2022-02-15 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.11.0...v1.11.1) - \[SECURITY FIX] promhttp: Check validity of method and code label values[https://github.com/prometheus/client_golang/pull/987](https://togithub.com/prometheus/client_golang/pull/987)7 (Addressed [`CVE-2022-21698`](https://togithub.com/prometheus/client_golang/security/advisories/GHSA-cg3q-j54f-5p7p)) #### What's Changed - promhttp: Check validity of method and code label values by [@​bwplotka](https://togithub.com/bwplotka) and [@​kakkoyun](https://togithub.com/kakkoyun) in [https://github.com/prometheus/client_golang/pull/987](https://togithub.com/prometheus/client_golang/pull/987) **Full Changelog**: prometheus/client_golang@v1.11.0...v1.11.1 ### [`v1.11.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.11.0): / 2021-06-07 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.10.0...v1.11.0) - \[CHANGE] Add new collectors package. [#​862](https://togithub.com/prometheus/client_golang/issues/862) - \[CHANGE] `prometheus.NewExpvarCollector` is deprecated, use `collectors.NewExpvarCollector` instead. [#​862](https://togithub.com/prometheus/client_golang/issues/862) - \[CHANGE] `prometheus.NewGoCollector` is deprecated, use `collectors.NewGoCollector` instead. [#​862](https://togithub.com/prometheus/client_golang/issues/862) - \[CHANGE] `prometheus.NewBuildInfoCollector` is deprecated, use `collectors.NewBuildInfoCollector` instead. [#​862](https://togithub.com/prometheus/client_golang/issues/862) - \[FEATURE] Add new collector for database/sql#DBStats. [#​866](https://togithub.com/prometheus/client_golang/issues/866) - \[FEATURE] API client: Add exemplars API support. [#​861](https://togithub.com/prometheus/client_golang/issues/861) - \[ENHANCEMENT] API client: Add newer fields to Rules API. [#​855](https://togithub.com/prometheus/client_golang/issues/855) - \[ENHANCEMENT] API client: Add missing fields to Targets API. [#​856](https://togithub.com/prometheus/client_golang/issues/856) #### What's Changed - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/846](https://togithub.com/prometheus/client_golang/pull/846) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/849](https://togithub.com/prometheus/client_golang/pull/849) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/853](https://togithub.com/prometheus/client_golang/pull/853) - Add newer fields to Rules API by [@​gouthamve](https://togithub.com/gouthamve) in [https://github.com/prometheus/client_golang/pull/855](https://togithub.com/prometheus/client_golang/pull/855) - Add missing fields to targets API by [@​yeya24](https://togithub.com/yeya24) in [https://github.com/prometheus/client_golang/pull/856](https://togithub.com/prometheus/client_golang/pull/856) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/857](https://togithub.com/prometheus/client_golang/pull/857) - Add exemplars API support by [@​yeya24](https://togithub.com/yeya24) in [https://github.com/prometheus/client_golang/pull/861](https://togithub.com/prometheus/client_golang/pull/861) - Improve description of MaxAge in summary docs by [@​Dean-Coakley](https://togithub.com/Dean-Coakley) in [https://github.com/prometheus/client_golang/pull/864](https://togithub.com/prometheus/client_golang/pull/864) - Add new collectors package by [@​johejo](https://togithub.com/johejo) in [https://github.com/prometheus/client_golang/pull/862](https://togithub.com/prometheus/client_golang/pull/862) - Add collector for database/sql#DBStats by [@​johejo](https://togithub.com/johejo) in [https://github.com/prometheus/client_golang/pull/866](https://togithub.com/prometheus/client_golang/pull/866) - Make dbStatsCollector more DRY by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/867](https://togithub.com/prometheus/client_golang/pull/867) - Change maintainers from [@​beorn7](https://togithub.com/beorn7) to @​bwplotka/[@​kakkoyun](https://togithub.com/kakkoyun) by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/873](https://togithub.com/prometheus/client_golang/pull/873) - Document implications of negative observations by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/871](https://togithub.com/prometheus/client_golang/pull/871) - Update Go modules by [@​SuperQ](https://togithub.com/SuperQ) in [https://github.com/prometheus/client_golang/pull/875](https://togithub.com/prometheus/client_golang/pull/875) #### New Contributors - [@​gouthamve](https://togithub.com/gouthamve) made their first contribution in [https://github.com/prometheus/client_golang/pull/855](https://togithub.com/prometheus/client_golang/pull/855) **Full Changelog**: prometheus/client_golang@v1.10.0...v1.11.0 ### [`v1.10.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.10.0): 1.10.0 / 2021-03-18 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.9.0...v1.10.0) - \[CHANGE] Minimum required Go version is now 1.13. - \[CHANGE] API client: Add matchers to `LabelNames` and `LabesValues`. [#​828](https://togithub.com/prometheus/client_golang/issues/828) - \[FEATURE] API client: Add buildinfo call. [#​841](https://togithub.com/prometheus/client_golang/issues/841) - \[BUGFIX] Fix build on riscv64. [#​833](https://togithub.com/prometheus/client_golang/issues/833) #### What's Changed - Add SECURITY.md by [@​roidelapluie](https://togithub.com/roidelapluie) in [https://github.com/prometheus/client_golang/pull/831](https://togithub.com/prometheus/client_golang/pull/831) - Bump prometheus/procfs to 0.3.0 to fix building on riscv64 by [@​zhsj](https://togithub.com/zhsj) in [https://github.com/prometheus/client_golang/pull/833](https://togithub.com/prometheus/client_golang/pull/833) - Fix typo in comments in [https://github.com/prometheus/client_golang/pull/835](https://togithub.com/prometheus/client_golang/pull/835) - Support matchers in labels API by [@​yeya24](https://togithub.com/yeya24) in [https://github.com/prometheus/client_golang/pull/828](https://togithub.com/prometheus/client_golang/pull/828) - Add buildinfo method by [@​ntk148v](https://togithub.com/ntk148v) in [https://github.com/prometheus/client_golang/pull/841](https://togithub.com/prometheus/client_golang/pull/841) - Update dependencies by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/843](https://togithub.com/prometheus/client_golang/pull/843) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/844](https://togithub.com/prometheus/client_golang/pull/844) - Cut v1.10.0 by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/845](https://togithub.com/prometheus/client_golang/pull/845) #### New Contributors - [@​zhsj](https://togithub.com/zhsj) made their first contribution in [https://github.com/prometheus/client_golang/pull/833](https://togithub.com/prometheus/client_golang/pull/833) - [@​ntk148v](https://togithub.com/ntk148v) made their first contribution in [https://github.com/prometheus/client_golang/pull/841](https://togithub.com/prometheus/client_golang/pull/841) **Full Changelog**: prometheus/client_golang@v1.9.0...v1.10.0 ### [`v1.9.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.9.0): 1.9.0 / 2020-12-17 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.8.0...v1.9.0) - \[FEATURE] `NewPidFileFn` helper to create process collectors for processes whose PID is read from a file. [#​804](https://togithub.com/prometheus/client_golang/issues/804) - \[BUGFIX] promhttp: Prevent endless loop in `InstrumentHandler...` middlewares with invalid metric or label names. [#​823](https://togithub.com/prometheus/client_golang/issues/823) #### What's Changed - add the NewPidFileFn to helper by [@​sbookworm](https://togithub.com/sbookworm) in [https://github.com/prometheus/client_golang/pull/804](https://togithub.com/prometheus/client_golang/pull/804) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/809](https://togithub.com/prometheus/client_golang/pull/809) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/811](https://togithub.com/prometheus/client_golang/pull/811) - Added example api code showing how to add auth tokens and user agents to prom client. by [@​bwplotka](https://togithub.com/bwplotka) in [https://github.com/prometheus/client_golang/pull/817](https://togithub.com/prometheus/client_golang/pull/817) - Correct spelling: possibilites -> possibilities by [@​jubalh](https://togithub.com/jubalh) in [https://github.com/prometheus/client_golang/pull/819](https://togithub.com/prometheus/client_golang/pull/819) - Be more explicit about the multi-line properties of MultiError by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/821](https://togithub.com/prometheus/client_golang/pull/821) - promhttp: Correctly detect invalid metric and label names by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/823](https://togithub.com/prometheus/client_golang/pull/823) -  Cut release 1.9.0 by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/826](https://togithub.com/prometheus/client_golang/pull/826) #### New Contributors - [@​sbookworm](https://togithub.com/sbookworm) made their first contribution in [https://github.com/prometheus/client_golang/pull/804](https://togithub.com/prometheus/client_golang/pull/804) - [@​jubalh](https://togithub.com/jubalh) made their first contribution in [https://github.com/prometheus/client_golang/pull/819](https://togithub.com/prometheus/client_golang/pull/819) **Full Changelog**: prometheus/client_golang@v1.8.0...v1.9.0 ### [`v1.8.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.8.0): 1.8.0 / 2020-10-15 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.7.1...v1.8.0) - \[CHANGE] API client: Use `time.Time` rather than `string` for timestamps in `RuntimeinfoResult`. [#​777](https://togithub.com/prometheus/client_golang/issues/777) - \[FEATURE] Export `MetricVec` to facilitate implementation of vectors of custom `Metric` types. [#​803](https://togithub.com/prometheus/client_golang/issues/803) - \[FEATURE API client: Support `/status/tsdb` endpoint. [#​773](https://togithub.com/prometheus/client_golang/issues/773) - \[ENHANCEMENT] API client: Enable GET fallback on status code 501. [#​802](https://togithub.com/prometheus/client_golang/issues/802) - \[ENHANCEMENT] Remove `Metric` references after reslicing to free up more memory. [#​784](https://togithub.com/prometheus/client_golang/issues/784) #### What's Changed - Add support for tsdb endpoint by [@​HimaVarsha94](https://togithub.com/HimaVarsha94) in [https://github.com/prometheus/client_golang/pull/773](https://togithub.com/prometheus/client_golang/pull/773) - Use time.Time for timestamps in Runtimeinfo by [@​mxey](https://togithub.com/mxey) in [https://github.com/prometheus/client_golang/pull/777](https://togithub.com/prometheus/client_golang/pull/777) - fix tests warning about string(int) type conversions by [@​johejo](https://togithub.com/johejo) in [https://github.com/prometheus/client_golang/pull/779](https://togithub.com/prometheus/client_golang/pull/779) - Update collector comment about GC stop-the-world by [@​roidelapluie](https://togithub.com/roidelapluie) in [https://github.com/prometheus/client_golang/pull/783](https://togithub.com/prometheus/client_golang/pull/783) - Remove reference to Metric after reslicing by [@​hummerd](https://togithub.com/hummerd) in [https://github.com/prometheus/client_golang/pull/784](https://togithub.com/prometheus/client_golang/pull/784) - Support go 1.15 by [@​roidelapluie](https://togithub.com/roidelapluie) in [https://github.com/prometheus/client_golang/pull/792](https://togithub.com/prometheus/client_golang/pull/792) - Replace with the standard library constant. by [@​johncming](https://togithub.com/johncming) in [https://github.com/prometheus/client_golang/pull/793](https://togithub.com/prometheus/client_golang/pull/793) - Synchronize common files from prometheus/prometheus by [@​prombot](https://togithub.com/prombot) in [https://github.com/prometheus/client_golang/pull/797](https://togithub.com/prometheus/client_golang/pull/797) - Remove spurious commas from links to the docs site by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/800](https://togithub.com/prometheus/client_golang/pull/800) - API client: Enable fallback on status code 501, too by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/802](https://togithub.com/prometheus/client_golang/pull/802) - Export MetricVec (again) by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/803](https://togithub.com/prometheus/client_golang/pull/803) - Cut v1.8.0 by [@​beorn7](https://togithub.com/beorn7) in [https://github.com/prometheus/client_golang/pull/806](https://togithub.com/prometheus/client_golang/pull/806) #### New Contributors - [@​HimaVarsha94](https://togithub.com/HimaVarsha94) made their first contribution in [https://github.com/prometheus/client_golang/pull/773](https://togithub.com/prometheus/client_golang/pull/773) - [@​mxey](https://togithub.com/mxey) made their first contribution in [https://github.com/prometheus/client_golang/pull/777](https://togithub.com/prometheus/client_golang/pull/777) - [@​hummerd](https://togithub.com/hummerd) made their first contribution in [https://github.com/prometheus/client_golang/pull/784](https://togithub.com/prometheus/client_golang/pull/784) - [@​johncming](https://togithub.com/johncming) made their first contribution in [https://github.com/prometheus/client_golang/pull/793](https://togithub.com/prometheus/client_golang/pull/793) **Full Changelog**: prometheus/client_golang@v1.7.1...v1.8.0 ### [`v1.7.1`](https://togithub.com/prometheus/client_golang/releases/tag/v1.7.1): 1.7.1 / 2020-06-23 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.7.0...v1.7.1) - \[BUGFIX] API client: Actually propagate start/end parameters of `LabelNames` and `LabelValues`. [#​771](https://togithub.com/prometheus/client_golang/issues/771) ### [`v1.7.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.7.0): 1.7.0 / 2020-06-17 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.6.0...v1.7.0) - \[CHANGE] API client: Add start/end parameters to `LabelNames` and `LabelValues`. [#​767](https://togithub.com/prometheus/client_golang/issues/767) - \[FEATURE] testutil: Add `GatherAndCount` and enable filtering in `CollectAndCount` [#​753](https://togithub.com/prometheus/client_golang/issues/753) - \[FEATURE] API client: Add support for `status` and `runtimeinfo` endpoints. [#​755](https://togithub.com/prometheus/client_golang/issues/755) - \[ENHANCEMENT] Wrapping `nil` with a `WrapRegistererWith...` function creates a no-op `Registerer`. [#​764](https://togithub.com/prometheus/client_golang/issues/764) - \[ENHANCEMENT] promlint: Allow Kelvin as a base unit for cases like color temperature. [#​761](https://togithub.com/prometheus/client_golang/issues/761) - \[BUGFIX] push: Properly handle empty job and label values. [#​752](https://togithub.com/prometheus/client_golang/issues/752) ### [`v1.6.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.6.0): 1.6.0 / 2020-04-28 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.5.1...v1.6.0) - \[FEATURE] testutil: Add lint checks for metrics, including a sub-package `promlint` to expose the linter engine for external usage. [#​739](https://togithub.com/prometheus/client_golang/issues/739) [#​743](https://togithub.com/prometheus/client_golang/issues/743) - \[ENHANCEMENT] API client: Improve error messages. [#​731](https://togithub.com/prometheus/client_golang/issues/731) - \[BUGFIX] process collector: Fix `process_resident_memory_bytes` on 32bit MS Windows. [#​734](https://togithub.com/prometheus/client_golang/issues/734) ### [`v1.5.1`](https://togithub.com/prometheus/client_golang/releases/tag/v1.5.1): 1.5.1 / 2020-03-14 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.5.0...v1.5.1) - \[BUGFIX] promhttp: Remove another superfluous `WriteHeader` call. ### [`v1.5.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.5.0): 1.5.0 / 2020-03-03 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.4.1...v1.5.0) - \[FEATURE] promauto: Add a factory to allow automatic registration with a local registry. [#​713](https://togithub.com/prometheus/client_golang/issues/713) - \[FEATURE] promauto: Add `NewUntypedFunc`. [#​713](https://togithub.com/prometheus/client_golang/issues/713) - \[FEATURE] API client: Support new metadata endpoint. [#​718](https://togithub.com/prometheus/client_golang/issues/718) ### [`v1.4.1`](https://togithub.com/prometheus/client_golang/releases/tag/v1.4.1): 1.4.1 / 2020-02-07 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.4.0...v1.4.1) - \[BUGFIX] Fix timestamp of exemplars in `CounterVec`. [#​710](https://togithub.com/prometheus/client_golang/issues/710) ### [`v1.4.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.4.0): 1.4.0 / 2020-01-27 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.3.0...v1.4.0) - \[CHANGE] Go collector: Improve doc string for `go_gc_duration_seconds`. [#​702](https://togithub.com/prometheus/client_golang/issues/702) - \[FEATURE] Support a subset of OpenMetrics, including exemplars. Needs opt-in via `promhttp.HandlerOpts`. **EXPERIMENTAL** [#​706](https://togithub.com/prometheus/client_golang/issues/706) - \[FEATURE] Add `testutil.CollectAndCount`. [#​703](https://togithub.com/prometheus/client_golang/issues/703) ### [`v1.3.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.3.0): 1.3.0 / 2019-12-21 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.2.1...v1.3.0) - \[FEATURE] Support tags in Graphite bridge. [#​668](https://togithub.com/prometheus/client_golang/issues/668) - \[BUGFIX] API client: Actually return Prometheus warnings. [#​699](https://togithub.com/prometheus/client_golang/issues/699) ### [`v1.2.1`](https://togithub.com/prometheus/client_golang/releases/tag/v1.2.1): 1.2.1 / 2019-10-17 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.2.0...v1.2.1) #### 1.2.1 / 2019-10-17 - \[BUGFIX] Fix regression in the implementation of `Registerer.Unregister`. [#​663](https://togithub.com/prometheus/client_golang/issues/663) ### [`v1.2.0`](https://togithub.com/prometheus/client_golang/releases/tag/v1.2.0): 1.2.0 / 2019-10-15 [Compare Source](https://togithub.com/prometheus/client_golang/compare/v1.1.0...v1.2.0) - \[FEATURE] Support pushing to Pushgateway v0.10+. [#​652](https://togithub.com/prometheus/client_golang/issues/652) - \[ENHANCEMENT] Improve hashing to make a spurious `AlreadyRegisteredError` less likely to occur. [#​657](https://togithub.com/prometheus/client_golang/issues/657) - \[ENHANCEMENT] API client: Add godoc examples. [#​630](https://togithub.com/prometheus/client_golang/issues/630) - \[BUGFIX] promhttp: Correctly call WriteHeader in HTTP middleware. [#​634](https://togithub.com/prometheus/client_golang/issues/634) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://togithub.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xMTAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjExMC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->
Signed-off-by: Mitsuo Heijo mitsuo.heijo@gmail.com
This is redo of #848