* 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>
* Make updating metricsConfig and updating metricsExporter atomic
This requires doing anything with a kubeclient before obtaining the
metricsMux lock.
* Address PR
* marking the metrics as internal as we need to pre-process them to include
pod_name and container_name...
* removing eventSource
* updates
* rollbacking changes to source
* updating changes to source
* minimizing change
* minimizing change
* Restrict Stackdriver Secret to controlled name & namespace
* Address PR comments
* Lock when reading secret name & namespace
* Export StackdriverClientConfig struct so consumers don't have to
redefine it
* Ensure metrics pkg consumers call SetStackdriverSecretLocation to set
Secret name and namespace
* Export StackdriverClientConfig consts & helper function
* Add TODO for secret watcher
* Add field to metrics config for configuring Stackdriver exporter client
options
* Fix test setting global state and interfering with other tests
* Use correct GCP metadata values & cleanup
* Some code cleanup
* Remove as much test-specific function stubbing as possible
* Remove more stubbed out test code
* Make more descriptive error when getting secret
* Use former locking pattern to avoid deadlock
There is a cyclical dependency between the metrics pkg and client-go
kubeclient where the kubeclient will attempt to read the metricsConfig
to record metrics about kubeclient requests. This prevents using a kubeclient within the metricsMux lock.
* renaming source_name and source_resource_group to name and resource_group,
as they will be used in other resources
* updating
* updates based on code review
* update
* fix
* source stats reporter... should be used by well-behaved sources
* public fields
* moving serialization/deserialization of metrics and logging maps to pkg
* nits
* adding UT
* same order
* updates
* sock-puppet
* unregistration problem?
* removing base64 encoding
* removing TODO
* removing config changes... done in another PR
* to properly address the comment
* changing importer to source
* split and update
* bug fixed
* change the copyright year
* use fake metadata in tests
* exclude test coverage for gcp_metadata
* add record
* add tests
* revert 2019 and add a new var
* change documents
* address comment
* change line
* split and update
* bug fixed
* change the copyright year
* use fake metadata in tests
* exclude test coverage for gcp_metadata
* revert 2019 change on existing files