fixup! fixup! [ADD] monitoring_prometheus_queue_job

This commit is contained in:
Alexandre Fayolle committed 2026-09-18 12:29:34 +02:00
1 parent 47add4311f
commit a369050b04
4 files changed
+53 -2

No files matched your search

+1 -1
View File
@@ -1,2 +1,2 @@
from . import controllers
from . import models from . import models
from . import controllers
+1 -1
View File
@@ -1,3 +1,3 @@
from . import ir_http from . import ir_http
from . import prometheus_metric
from . import prometheus_gatherer from . import prometheus_gatherer
from . import prometheus_metric
@@ -0,0 +1,49 @@
# Copyright 2016-2021 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
import json
from odoo import api, fields, models
class PrometheusMetric(models.Model):
"""Store the metrics gathered by ``prometheus.gatherer``.
A record is stored per metric name/labels combination, because a single
metric name can be reported several times with different labels (e.g.
one gauge value per queue job state and channel).
"""
_name = "prometheus.metric"
_description = "Prometheus Metric"
name = fields.Char(required=True, index=True)
documentation = fields.Char()
# JSON-serialized dict, used both to publish the metric and as part of
# the uniqueness key alongside ``name``.
labels = fields.Char(default="{}")
value = fields.Float(required=True)
@staticmethod
def _labels_key(labels):
return json.dumps(labels or {}, sort_keys=True)
@api.model
def _update_metric(self, metric):
"""Create or update the record matching ``metric``, return it."""
labels_key = self._labels_key(metric.get("labels"))
record = self.search(
[("name", "=", metric["name"]), ("labels", "=", labels_key)],
limit=1,
)
values = {
"name": metric["name"],
"documentation": metric.get("documentation", ""),
"labels": labels_key,
"value": metric["value"],
}
if record:
record.write(values)
else:
record = self.create(values)
return record
@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_prometheus_metric_system,prometheus.metric system,model_prometheus_metric,base.group_system,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_prometheus_metric_system prometheus.metric system model_prometheus_metric base.group_system 1 1 1 1
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.