marcinbudny / ravendb_exporter Goto Github PK
View Code? Open in Web Editor NEWPrometheus exporter for RavenDB 4
License: MIT License
Prometheus exporter for RavenDB 4
License: MIT License
Hey,
i used your project to get the metrics of ravendb 5.4 and it still works without any changes of your Code. I found not much alternatives to your Project to grap the Metrics that are still available in the free version. Is it possible that you update Project the could using a newer image with updated versions from the container side (golang image busybox etc.)?
thanks for your work so far!
Cheers
Contrary to the README, namsral/flag and thus RavenDB Exporter does not parse a config file by default. There has to be a "config" flag defined. Trying to run ravendb_exporter with namsral/flag's default -config parameter ends with error:
$ ./ravendb_exporter -config ./ravendb_exporter.conf
flag provided but not defined: -config
Usage of ./ravendb_exporter:
(...)
I have used that default in #1 . If this PR is merged, the documentation can be amended by usage example, like this:
ravendb_exporter -config ./ravendb_exporter.conf
Hi @marcinbudny,
There seems to be an issue with my last PR #6, that is: metric ravendb_database_tasks
keeps old states. For example, if a task connection_status were to change from NotActive
to Active
, this results in the following series:
ravendb_database_tasks{connection_status="NotActive",database="Demo",type="Subscription"} 2
ravendb_database_tasks{connection_status="Active",database="Demo",type="Subscription"} 2
which is not very helpful as it doesn't represent the current state. This is the only metric with multiple labels, so I assume it would also affect others should they have additional labels.
Looking at the code, a quick fix would be adding a reset in collectPerDatabaseGauge
/collectPerDatabaseCounter
functions
func collectPerDatabaseGauge(stats *stats, vec *prometheus.GaugeVec, collectFunc func(*dbStats) []metricInfo, ch chan<- prometheus.Metric) {
+ vec.Reset()
for _, dbs := range stats.dbStats {
metricInfos := collectFunc(dbs)
for _, metricInfo := range metricInfos {
vec.With(metricInfo.Labels).Set(metricInfo.Value)
}
}
vec.Collect(ch)
}
Any ideas or suggestions?
When trying to run ravendb_exporter with auth enabled and CA and client certs configured and client key that is password-protected, it fails to start with following error:
$ ./ravendb_exporter -config ./ravendb_exporter.conf
INFO[0000] RavenDB exporter configured caCert=/opt/ravendb_exporter/cacert.crt clientCert=/opt/ravendb_exporter/admin.crt clientKey=/opt/ravendb_exporter/admin.key port=9440 ravenDbUrl="https://ravendb-01.gp.local:8080" timeout=10s useAuth=true verbose=false
FATA[0000] tls: failed to parse private key
When using client key without password, it runs as expected.
Using password-protected client key is default in RavenDB and it's generally a good practice. There is no way to provide client key password in ravendb_exporter.
Hi Marc,
we saw when we mirroring the container to one of our private registries something went wrong with the manifest of the new version. Its empty.
VERSION 0.3.0
docker manifest inspect marcinbudny/ravendb_exporter:0.3.0 { "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "config": { "mediaType": "application/vnd.docker.container.image.v1+json", "size": 2170, "digest": "sha256:3b381ce3cf0c4acb5654315388168cb5dadbdbc152f112dd10b17c3b7fe28764" }, "layers": [ { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 723146, "digest": "sha256:07a152489297fc2bca20be96fab3527ceac5668328a30fd543a160cd689ee548" }, { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 3007515, "digest": "sha256:551020feb0f1236e5a1d58a409c9eacf959ad5a972c0ea48b80dde4b436577ae" } ] }
VERSION 0.4.0
docker manifest inspect marcinbudny/ravendb_exporter:0.4.0
no such manifest: docker.io/marcinbudny/ravendb_exporter:0.4.0
I rebuild it locally and pushed it to an private registry and I got an manifest. I would say something went wrong on the gh action build? We also use gh actions for some container builds and i never saw this before but we made good experience with it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.