Quellcode durchsuchen

HUE-8514 [core] Log metrics when calling is_alive

e.g.
[22/Aug/2018 01:26:34 +0000] views        INFO     Is Alive Metrics [request.response-time]: {'1m_rate': 0.015968514579055966, '999_percentile': 0.04640817642211914, '15m_rate': 0.0011079245239195763, '99_percentile': 0.04640817642211914, 'mean_rate': 0.04787727257376919, 'max': 0.04640817642211914, 'sum': 0.07637619972229004, 'min': 0.0299680233001709, '5m_rate': 0.0033047635098500667, 'count': 2.0, '75_percentile': 0.04640817642211914, 'median': 0.03818809986114502, 'std_dev': 0.011624943756274791, '95_percentile': 0.04640817642211914, 'avg': 0.03818809986114502}
Romain Rigaux vor 7 Jahren
Ursprung
Commit
c9bd71c

+ 2 - 1
desktop/core/src/desktop/lib/metrics/file_reporter.py

@@ -18,14 +18,15 @@ import json
 import logging
 import os
 import tempfile
-import threading
 
 from pyformance.reporters.reporter import Reporter
 
 from desktop.lib.metrics import global_registry
 
+
 LOG = logging.getLogger(__name__)
 
+
 class FileReporter(Reporter):
   def __init__(self, location, *args, **kwargs):
     super(FileReporter, self).__init__(*args, **kwargs)

+ 1 - 1
desktop/core/src/desktop/lib/metrics/views.py

@@ -40,7 +40,7 @@ def index(request):
       'timestamp': datetime.datetime.utcnow().isoformat(),
       'metric': global_registry().dump_metrics(),
   }
-  LOG.debug('Metrics: %s' % json.dumps(rep, indent=indent))
+
   if request.is_ajax():
     return JsonResponse(rep, json_dumps_params={'indent': indent})
   else:

+ 23 - 23
desktop/core/src/desktop/templates/metrics.mako

@@ -125,44 +125,44 @@ ${layout.menubar(section='metrics')}
         </thead>
         <tfoot>
           <tr>
-             <td colspan="2">${ _('There are no metrics matching your filter') }</td>
+              <td colspan="2">${ _('There are no metrics matching your filter') }</td>
           </tr>
         </tfoot>
       </table>
       <!-- /ko -->
       <div data-bind="foreach: {data: Object.keys($root.filteredMetrics()).sort(), as: '_masterkey'}">
-       <!-- ko if: ($root.selectedMetric() === 'All' && $root.filteredMetrics()[_masterkey]) || $root.selectedMetric() === _masterkey-->
-       <!-- ko ifnot: $root.isUnusedMetric(_masterkey)-->
-       <h4 data-bind="text: _masterkey"></h4>
-       <table class="table table-condensed">
-         <thead>
-           <tr>
+      <!-- ko if: ($root.selectedMetric() === 'All' && $root.filteredMetrics()[_masterkey]) || $root.selectedMetric() === _masterkey-->
+      <!-- ko ifnot: $root.isUnusedMetric(_masterkey)-->
+      <h4 data-bind="text: _masterkey"></h4>
+      <table class="table table-condensed">
+        <thead>
+          <tr>
             <th width="30%">${ _('Name') }</th>
             <th>${ _('Value') }</th>
-           </tr>
-         </thead>
-         <!-- ko if: $root.filteredMetrics()[_masterkey] -->
-         <tbody data-bind="foreach: {'data': Object.keys($root.filteredMetrics()[_masterkey])}">
-           <tr>
+          </tr>
+        </thead>
+        <!-- ko if: $root.filteredMetrics()[_masterkey] -->
+        <tbody data-bind="foreach: {'data': Object.keys($root.filteredMetrics()[_masterkey])}">
+          <tr>
             <td data-bind="text: $data"></td>
             <td data-bind="text: $root.filteredMetrics()[_masterkey][$data]"></td>
-           </tr>
-         </tbody>
-         <!-- /ko -->
-         <!-- ko ifnot: $root.filteredMetrics()[_masterkey] -->
-         <tfoot>
-           <tr>
+          </tr>
+        </tbody>
+        <!-- /ko -->
+        <!-- ko ifnot: $root.filteredMetrics()[_masterkey] -->
+        <tfoot>
+          <tr>
             <td colspan="2">${ _('There are no metrics matching your filter') }</td>
-           </tr>
-           </tfoot>
-         <!-- /ko -->
+          </tr>
+          </tfoot>
+        <!-- /ko -->
         </table>
         <!-- /ko -->
         <!-- /ko -->
       </div>
-  </div>
+    </div>
   <!-- /ko -->
- </div>
+  </div>
 </div>
 
 

+ 7 - 2
desktop/core/src/desktop/views.py

@@ -48,25 +48,30 @@ import desktop.log.log_buffer
 
 from desktop import appmanager
 from desktop.api import massaged_tags_for_json, massaged_documents_for_json, _get_docs
-
+from desktop.auth.backend import is_admin
 from desktop.conf import USE_NEW_EDITOR, IS_HUE_4, HUE_LOAD_BALANCER, get_clusters, DISABLE_HUE_3
 from desktop.lib import django_mako
 from desktop.lib.conf import GLOBAL_CONFIG, BoundConfig, _configs_from_dir
 from desktop.lib.config_spec_dump import ConfigSpec
 from desktop.lib.django_util import JsonResponse, login_notrequired, render
 from desktop.lib.i18n import smart_str
+from desktop.lib.metrics.registry import global_registry
 from desktop.lib.paths import get_desktop_root
 from desktop.lib.thread_util import dump_traceback
 from desktop.log.access import access_log_level, access_warn, AccessInfo
 from desktop.log import set_all_debug as _set_all_debug, reset_all_debug as _reset_all_debug, get_all_debug as _get_all_debug
 from desktop.models import Settings, hue_version, _get_apps, UserPreferences
 
-from desktop.auth.backend import is_admin
 
 LOG = logging.getLogger(__name__)
 
 
 def is_alive(request):
+  metrics = global_registry().dump_metrics()
+
+  if 'requests.response-time' in metrics:
+    LOG.info('Is Alive Metrics [request.response-time]: %(requests.response-time)s' % metrics)
+
   return HttpResponse('')