Эх сурвалжийг харах

HUE-8744 [k8s] Add basic Prometheus metric endpoint

Requires when turned on:
./build/env/bin/pip install django-prometheus
Romain 6 жил өмнө
parent
commit
3a9dacb701

+ 3 - 0
desktop/conf.dist/hue.ini

@@ -297,6 +297,9 @@
   # Number of characters in rest api reponse calls to dump to the logs when debug is enabled. Set to -1 for entire response.
   # Number of characters in rest api reponse calls to dump to the logs when debug is enabled. Set to -1 for entire response.
   ## rest_response_size=2000
   ## rest_response_size=2000
 
 
+  # Turn on Prometheus metrics end point /metrics.
+  ## enable_prometheus=false
+
   # Administrators
   # Administrators
   # ----------------
   # ----------------
   [[django_admins]]
   [[django_admins]]

+ 3 - 0
desktop/conf/pseudo-distributed.ini.tmpl

@@ -301,6 +301,9 @@
   # Number of characters in rest api reponse calls to dump to the logs when debug is enabled. Set to -1 for entire response.
   # Number of characters in rest api reponse calls to dump to the logs when debug is enabled. Set to -1 for entire response.
   ## rest_response_size=2000
   ## rest_response_size=2000
 
 
+  # Turn on Prometheus metrics end point /metrics.
+  ## enable_prometheus=false
+
   # Administrators
   # Administrators
   # ----------------
   # ----------------
   [[django_admins]]
   [[django_admins]]

+ 8 - 0
desktop/core/src/desktop/conf.py

@@ -1649,6 +1649,14 @@ IS_K8S_ONLY = Config(
 )
 )
 
 
 
 
+ENABLE_PROMETHEUS = Config(
+  key='enable_prometheus',
+  default=False,
+  type=coerce_bool,
+  help=_('Turn on Prometheus metrics end point /metrics.')
+)
+
+
 def task_server_default_result_directory():
 def task_server_default_result_directory():
   """Local directory to store task results."""
   """Local directory to store task results."""
   return 'file://%s' % get_run_root('logs')
   return 'file://%s' % get_run_root('logs')

+ 10 - 0
desktop/core/src/desktop/settings.py

@@ -690,3 +690,13 @@ if desktop.conf.TASK_SERVER.ENABLED.get():
   if desktop.conf.TASK_SERVER.BEAT_ENABLED.get():
   if desktop.conf.TASK_SERVER.BEAT_ENABLED.get():
     INSTALLED_APPS.append('django_celery_beat')
     INSTALLED_APPS.append('django_celery_beat')
     INSTALLED_APPS.append('timezone_field')
     INSTALLED_APPS.append('timezone_field')
+
+
+if desktop.conf.ENABLE_PROMETHEUS.get():
+  INSTALLED_APPS.append('django_prometheus')
+  MIDDLEWARE_CLASSES.insert(0, 'django_prometheus.middleware.PrometheusBeforeMiddleware')
+  MIDDLEWARE_CLASSES.append('django_prometheus.middleware.PrometheusAfterMiddleware')
+
+  DATABASES['default']['ENGINE'] = DATABASES['default']['ENGINE'].replace('django.db.backends', 'django_prometheus.db.backends')
+  for name, val in CACHES.items():
+    val['BACKEND'] = val['BACKEND'].replace('django.core.cache.backends', 'django_prometheus.cache.backends')

+ 7 - 1
desktop/core/src/desktop/urls.py

@@ -46,7 +46,7 @@ from desktop import views as desktop_views
 from desktop import api as desktop_api
 from desktop import api as desktop_api
 from desktop import api2 as desktop_api2
 from desktop import api2 as desktop_api2
 from desktop.auth import views as desktop_auth_views
 from desktop.auth import views as desktop_auth_views
-from desktop.conf import METRICS, USE_NEW_EDITOR, ENABLE_DJANGO_DEBUG_TOOL, ANALYTICS, has_connectors
+from desktop.conf import METRICS, USE_NEW_EDITOR, ENABLE_DJANGO_DEBUG_TOOL, ANALYTICS, has_connectors, ENABLE_PROMETHEUS
 from desktop.configuration import api as desktop_configuration_api
 from desktop.configuration import api as desktop_configuration_api
 from desktop.lib.vcs import api as desktop_lib_vcs_api
 from desktop.lib.vcs import api as desktop_lib_vcs_api
 from desktop.settings import is_oidc_configured
 from desktop.settings import is_oidc_configured
@@ -216,6 +216,12 @@ dynamic_patterns += [
   url(r'^admin/?', include(admin.site.urls)),
   url(r'^admin/?', include(admin.site.urls)),
 ]
 ]
 
 
+if ENABLE_PROMETHEUS.get():
+  dynamic_patterns += [
+    url('', include('django_prometheus.urls')),
+  ]
+
+
 static_patterns = []
 static_patterns = []
 
 
 # SAML specific
 # SAML specific