Commit Graph

8 Commits

Author SHA1 Message Date
Stavros Kontopoulos 6c2f94a4d6
Unregister views to avoid slow oom issue during meter cleanup (#2005)
* unregister views

* add a test

* fix string issue

* fix

* fixes

* fixe races in tests

* fix exporter issue

* stop meter in cleanup

* fixes

* typo

* revert timeout change

* fixes

* change msg
2021-02-17 02:17:02 -08:00
Markus Thömmes ba2137c16f
Fix excessive allocation in the resource metrics (#1964)
* Fix excessive allocation in the resource metrics

* Optimize further

* Fix lint

* Prettify

* Add comment to lambda

* Even prettier
2020-12-15 09:37:58 -08:00
Montgomery Carter 21cb070a8b
Introduce pkg/metrics allMeter cache (#1741)
We currently keep all metrics exporters created since start.
For a busy, long running server, this will be a problem.  Clean
these up when they get old so we don't dedicate memory to non-existent
2020-10-05 10:51:34 -07:00
Ian Milligan 9128d4b9c1
Deep copy views to avoid races (#1720)
* Deep copy views to avoid races

* Use copy instead of append

* Update metrics/resource_view.go

Co-authored-by: Victor Agababov <vagababov@gmail.com>

* Update metrics/resource_view.go

Co-authored-by: Matt Moore <mattmoor@vmware.com>

Co-authored-by: Victor Agababov <vagababov@gmail.com>
Co-authored-by: Matt Moore <mattmoor@vmware.com>
2020-09-21 15:22:37 -07:00
Evan Anderson e487a47312
Use real synchronization to make sure we get four exports in the OpenCensus test (#1591)
* Use real synchronization to make sure we get four exports in the OpenCensus test.

* Fix a few bugs in the metrics implementation:

1. We could create two OpenCensus exporters for the empty resource, which would cause double-reporting
2. Add a mechanism to clear out background Meter threads to to prevent them exporting in subsequent tests.
2020-08-07 11:51:29 -07:00
jjzeng-seattle bac0302109
Set reporting period for all meters (#1575)
* Set reporting period for all meters

* using switch statement to simplify

* Change 60 seconds to a minute

* Add a test case for openCencus customed reporting period
2020-08-04 15:06:28 -07:00
Ian Milligan c3c869a344
Remove resourceToKey map (#1579)
There is currently no mechanism to resolve a resource to a unique pointer causing this map to leak
memory.
2020-08-03 22:12:27 -07:00
Evan Anderson e7bd895fbd
Introduce `pkg/metrics` support for multiple Resources (#1392)
* Update OpenCensus to include #1196.

* Extend OpenCensus to track per-Resource stats.

* Add generic ResourceView mechanics, part 1. TODO: wire newFactory, tests

* Move factory creation to where it can be customized per-backend

* Integrate opencensus export with Resource-based exporters

* Add stackdriver support for resource views

* address feedbacks

* add test cases

* make KnativeRevision a map

* Update go modules to point to latest opencensus which includes `view.Meter`.

* Add support for Resources to Prometheus Exporter.

This involved copying/improving much of the contrib prometheus exporter.

* add resource_view tests and fix minor issues

* add recorder tests for meter

* Update resource_view_test with an e2e export test.

* Fix prometheus e2e resource_view_test.

Found a fun circular lock.

Found a fun double-registration in metricproducer/Meter.

Found some unnecessary extra code.

Fixed prometheus string sanitization.

Removed a layer of Prometheus wrapping which made debugging more challenging.

* Add test for standard view exports and non-resourced views to e2e test.

* Add UnregisterResourceView to fix tests

* Add OpenCensus e2e resource export test.

Still a little flaky, so work around that with "<=".

* Fix tests for OpenCensus export.

* Fix flakiness / timing issues in OpenCensus exporter e2e test.

* Update to latest ocagent to fix `Resources` bug.

* Don't swallow errors from stackdriver init.

* Get Stackdriver export mostly working in e2e tests

Tests still fail because stackdriver converts custom metrics to a namespaced format and seems to lose Resource information.

* Add support for Stackdriver resource export.

* ./hack/update-codegen.sh

* Fix data race with graceful shutdown.

* Fix issues noticed by @vagababov

* Address mattmoor-bot comments.

* Remove MonitoredResource and apply suggestions from yanweiguo

* More cleanup to stackdriver_exporter_test.go

* Update tests (particularly config_test.go) for Stackdriver recorder changes which sometimes record with additional resources.

* Avoid setting two `view.WithRecorder` options on record

* Add stackdriver tests

* Address comments

* Switch Prometheus port due to possible conflict in test env

* Fix missing :=

* FIx data races around *view.Data shared across Meters.

Cleanup resource_view_test.

* Remove unneeded monitored_resources.go

* Use sync.WaitGroup to avoid data races on closing channel.

* Sort the map for ResourceAsString

* Apply lint and vagababov changes.

* Fix typos

* refactor ResourceAsString

* Update stackdriver exporter version

* Update metrics/resource_view_test.go

Remove accidental paste

* Fix go.sum

* Address yanweiguo comments on comments

* Fix autogen/go mod

* Handling resource extraction when custom metrics are allowed

* Add tests for AllowCustomMetrics set to true

* Address vagababov and yanweiguo comments.

Signed-off-by: Evan Anderson <evan.k.anderson@gmail.com>

* address comments

* Renaming

* Reduce some condition nesting

* go fmt

* Sleep for 1ms to allow metrics being sent (#9)

* Address yanweiguo comments

Co-authored-by: JJ Zeng <jjzeng@google.com>
Co-authored-by: jjzeng-seattle <56568376+jjzeng-seattle@users.noreply.github.com>
2020-07-14 10:46:19 -07:00