mirror of
https://github.com/camptocamp/odoo-cloud-platform.git
synced 2026-06-24 08:47:40 +00:00
fix
This commit is contained in:
@@ -12,7 +12,6 @@
|
|||||||
"depends": [
|
"depends": [
|
||||||
"cloud_platform",
|
"cloud_platform",
|
||||||
"attachment_azure",
|
"attachment_azure",
|
||||||
"monitoring_prometheus",
|
|
||||||
],
|
],
|
||||||
"excludes": [
|
"excludes": [
|
||||||
"cloud_platform_ovh",
|
"cloud_platform_ovh",
|
||||||
|
|||||||
@@ -1,17 +0,0 @@
|
|||||||
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
|
|
||||||
:alt: License
|
|
||||||
|
|
||||||
==============================
|
|
||||||
Monitoring: Prometheus metrics
|
|
||||||
==============================
|
|
||||||
|
|
||||||
Add an endpoint */metrics* to allow a Prometheus server to fetch application metrics.
|
|
||||||
Current available metrics are:
|
|
||||||
|
|
||||||
* Request completion time with 3 differentiators:
|
|
||||||
* Filestore
|
|
||||||
* Assets
|
|
||||||
* Everything else
|
|
||||||
* Longpolling request count
|
|
||||||
|
|
||||||
No additional configuration is needed, just ensure that the Prometheus server is allowed to communicate with Odoo
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
from . import controllers
|
|
||||||
from . import models
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
# Copyright 2016-2021 Camptocamp SA
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
"name": "Monitoring: Prometheus Metrics",
|
|
||||||
"version": "15.0.1.0.0",
|
|
||||||
"author": "Camptocamp,Odoo Community Association (OCA)",
|
|
||||||
"license": "AGPL-3",
|
|
||||||
"category": "category",
|
|
||||||
"depends": [
|
|
||||||
"base",
|
|
||||||
"web",
|
|
||||||
"server_environment",
|
|
||||||
],
|
|
||||||
"website": "http://www.camptocamp.com",
|
|
||||||
"data": [],
|
|
||||||
"external_dependencies": {
|
|
||||||
"python": ["prometheus_client"],
|
|
||||||
},
|
|
||||||
"installable": True,
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
from . import prometheus_metrics
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
# Copyright 2016-2021 Camptocamp SA
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
|
|
||||||
|
|
||||||
from openerp.http import Controller, route
|
|
||||||
from prometheus_client import generate_latest
|
|
||||||
|
|
||||||
|
|
||||||
class PrometheusController(Controller):
|
|
||||||
@route("/metrics", auth="public")
|
|
||||||
def metrics(self):
|
|
||||||
return generate_latest()
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
from . import ir_http
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
# Copyright 2016-2021 Camptocamp SA
|
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
|
|
||||||
|
|
||||||
from openerp import osv
|
|
||||||
from openerp.http import request
|
|
||||||
from prometheus_client import Summary, Counter
|
|
||||||
|
|
||||||
|
|
||||||
REQUEST_TIME = Summary(
|
|
||||||
"request_latency_sec", "Request response time in sec", ["query_type"]
|
|
||||||
)
|
|
||||||
LONGPOLLING_COUNT = Counter("longpolling", "Longpolling request count")
|
|
||||||
|
|
||||||
|
|
||||||
class IrHttp(osv.osv_abstract):
|
|
||||||
_inherit = "ir.http"
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def _dispatch(cls):
|
|
||||||
path_info = request.httprequest.environ.get("PATH_INFO")
|
|
||||||
|
|
||||||
if path_info.startswith("/longpolling/"):
|
|
||||||
LONGPOLLING_COUNT.inc()
|
|
||||||
return super(IrHttp, self)._dispatch()
|
|
||||||
|
|
||||||
if path_info.startswith("/metrics"):
|
|
||||||
return super(IrHttp, self)._dispatch()
|
|
||||||
|
|
||||||
if path_info.startswith("/web/static"):
|
|
||||||
label = "assets"
|
|
||||||
elif path_info.startswith("/web/content"):
|
|
||||||
label = "filestore"
|
|
||||||
else:
|
|
||||||
label = "client"
|
|
||||||
|
|
||||||
res = None
|
|
||||||
with REQUEST_TIME.labels(label).time():
|
|
||||||
res = super(IrHttp, self)._dispatch()
|
|
||||||
|
|
||||||
return res
|
|
||||||
Reference in New Issue
Block a user