Closed blesaffre closed 4 years ago
Hi @blesaffre ,
Sorry, I don't really understand what's the issue is from your explanation, and Graphite have no time()
function, but if it's Grafana-related you need to ask it on Grafana repo?
I am talking about timeFunction.
I already asked on Grafana repo, and was told "Probably a graphite issue so closing for now"
The issue is that when I use the mentionned above function on any metric, I get an Internal Server Error, and the graph stops displaying.
When I look for more information about this error in the network tab, I can see
TypeError |
---|
timeFunction() takes at most 3 arguments (4 given)
while I only pass 1 and, according to the documentation, it takes a "name" parameter, and an optionnal "step".
@blesaffre : Oh, sorry, forgot about that function. But works for me: I'm running Grafana 5.2.4 and Graphite 1.1.4:
Could you please copy/paste the full error message? Do you have any exceptions in the graphite-web logs?
What are the parameters you gave? Any special characters in them? (*?|/)
Here is the full error message I get in Grafana query inspector :
{
"xhrStatus": "complete",
"request": {
"method": "POST",
"url": "api/datasources/proxy/1/render",
"data": "target=timeFunction(stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count%2C%20'%22The.time.series%22')&target=stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.REGISTER.count&from=-24h&until=now&format=json&maxDataPoints=960"
},
"response": {
"error": "Internal Server Error",
"response": "\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">\n <meta name=\"robots\" content=\"NONE,NOARCHIVE\">\n <title>TypeError at /render</title>\n <style type=\"text/css\">\n html * { padding:0; margin:0; }\n body * { padding:10px 20px; }\n body * * { padding:0; }\n body { font:small sans-serif; }\n body>div { border-bottom:1px solid #ddd; }\n h1 { font-weight:normal; }\n h2 { margin-bottom:.8em; }\n h2 span { font-size:80%; color:#666; font-weight:normal; }\n h3 { margin:1em 0 .5em 0; }\n h4 { margin:0 0 .5em 0; font-weight: normal; }\n code, pre { font-size: 100%; white-space: pre-wrap; }\n table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }\n tbody td, tbody th { vertical-align:top; padding:2px 3px; }\n thead th {\n padding:1px 6px 1px 3px; background:#fefefe; text-align:left;\n font-weight:normal; font-size:11px; border:1px solid #ddd;\n }\n tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; }\n table.vars { margin:5px 0 2px 40px; }\n table.vars td, table.req td { font-family:monospace; }\n table td.code { width:100%; }\n table td.code pre { overflow:hidden; }\n table.source th { color:#666; }\n table.source td { font-family:monospace; white-space:pre; border-bottom:1px solid #eee; }\n ul.traceback { list-style-type:none; color: #222; }\n ul.traceback li.frame { padding-bottom:1em; color:#666; }\n ul.traceback li.user { background-color:#e0e0e0; color:#000 }\n div.context { padding:10px 0; overflow:hidden; }\n div.context ol { padding-left:30px; margin:0 10px; list-style-position: inside; }\n div.context ol li { font-family:monospace; white-space:pre; color:#777; cursor:pointer; padding-left: 2px; }\n div.context ol li pre { display:inline; }\n div.context ol.context-line li { color:#505050; background-color:#dfdfdf; padding: 3px 2px; }\n div.context ol.context-line li span { position:absolute; right:32px; }\n .user div.context ol.context-line li { background-color:#bbb; color:#000; }\n .user div.context ol li { color:#666; }\n div.commands { margin-left: 40px; }\n div.commands a { color:#555; text-decoration:none; }\n .user div.commands a { color: black; }\n #summary { background: #ffc; }\n #summary h2 { font-weight: normal; color: #666; }\n #explanation { background:#eee; }\n #template, #template-not-exist { background:#f6f6f6; }\n #template-not-exist ul { margin: 0 0 10px 20px; }\n #template-not-exist .postmortem-section { margin-bottom: 3px; }\n #unicode-hint { background:#eee; }\n #traceback { background:#eee; }\n #requestinfo { background:#f6f6f6; padding-left:120px; }\n #summary table { border:none; background:transparent; }\n #requestinfo h2, #requestinfo h3 { position:relative; margin-left:-100px; }\n #requestinfo h3 { margin-bottom:-1em; }\n .error { background: #ffc; }\n .specific { color:#cc3300; font-weight:bold; }\n h2 span.commands { font-size:.7em;}\n span.commands a:link {color:#5E5694;}\n pre.exception_value { font-family: sans-serif; color: #666; font-size: 1.5em; margin: 10px 0 10px 0; }\n .append-bottom { margin-bottom: 10px; }\n </style>\n \n <script type=\"text/javascript\">\n //<!--\n function getElementsByClassName(oElm, strTagName, strClassName){\n // Written by Jonathan Snook, http://www.snook.ca/jon; Add-ons by Robert Nyman, http://www.robertnyman.com\n var arrElements = (strTagName == \"*\" && document.all)? document.all :\n oElm.getElementsByTagName(strTagName);\n var arrReturnElements = new Array();\n strClassName = strClassName.replace(/\\-/g, \"\\\\-\");\n var oRegExp = new RegExp(\"(^|\\\\s)\" + strClassName + \"(\\\\s|$)\");\n var oElement;\n for(var i=0; i<arrElements.length; i++){\n oElement = arrElements[i];\n if(oRegExp.test(oElement.className)){\n arrReturnElements.push(oElement);\n }\n }\n return (arrReturnElements)\n }\n function hideAll(elems) {\n for (var e = 0; e < elems.length; e++) {\n elems[e].style.display = 'none';\n }\n }\n window.onload = function() {\n hideAll(getElementsByClassName(document, 'table', 'vars'));\n hideAll(getElementsByClassName(document, 'ol', 'pre-context'));\n hideAll(getElementsByClassName(document, 'ol', 'post-context'));\n hideAll(getElementsByClassName(document, 'div', 'pastebin'));\n }\n function toggle() {\n for (var i = 0; i < arguments.length; i++) {\n var e = document.getElementById(arguments[i]);\n if (e) {\n e.style.display = e.style.display == 'none' ? 'block': 'none';\n }\n }\n return false;\n }\n function varToggle(link, id) {\n toggle('v' + id);\n var s = link.getElementsByTagName('span')[0];\n var uarr = String.fromCharCode(0x25b6);\n var darr = String.fromCharCode(0x25bc);\n s.textContent = s.textContent == uarr ? darr : uarr;\n return false;\n }\n function switchPastebinFriendly(link) {\n s1 = \"Switch to copy-and-paste view\";\n s2 = \"Switch back to interactive view\";\n link.textContent = link.textContent.trim() == s1 ? s2: s1;\n toggle('browserTraceback', 'pastebinTraceback');\n return false;\n }\n //-->\n </script>\n \n</head>\n<body>\n<div id=\"summary\">\n <h1>TypeError at /render</h1>\n <pre class=\"exception_value\">unsupported type for timedelta seconds component: unicode</pre>\n <table class=\"meta\">\n\n <tr>\n <th>Request Method:</th>\n <td>POST</td>\n </tr>\n <tr>\n <th>Request URL:</th>\n <td>http://localhost:81/render</td>\n </tr>\n\n <tr>\n <th>Django Version:</th>\n <td>1.11.16</td>\n </tr>\n\n <tr>\n <th>Exception Type:</th>\n <td>TypeError</td>\n </tr>\n\n\n <tr>\n <th>Exception Value:</th>\n <td><pre>unsupported type for timedelta seconds component: unicode</pre></td>\n </tr>\n\n\n <tr>\n <th>Exception Location:</th>\n <td>/opt/graphite/webapp/graphite/render/functions.py in timeFunction, line 5210</td>\n </tr>\n\n <tr>\n <th>Python Executable:</th>\n <td>/usr/bin/python</td>\n </tr>\n <tr>\n <th>Python Version:</th>\n <td>2.7.5</td>\n </tr>\n <tr>\n <th>Python Path:</th>\n <td><pre>['/usr/lib64/python27.zip',\n '/usr/lib64/python2.7',\n '/usr/lib64/python2.7/plat-linux2',\n '/usr/lib64/python2.7/lib-tk',\n '/usr/lib64/python2.7/lib-old',\n '/usr/lib64/python2.7/lib-dynload',\n '/usr/lib64/python2.7/site-packages',\n '/usr/lib64/python2.7/site-packages/gtk-2.0',\n '/usr/lib/python2.7/site-packages',\n '/opt/graphite/webapp']</pre></td>\n </tr>\n <tr>\n <th>Server time:</th>\n <td>Mon, 24 Dec 2018 09:43:30 +0100</td>\n </tr>\n </table>\n</div>\n\n\n\n\n<div id=\"traceback\">\n <h2>Traceback <span class=\"commands\"><a href=\"#\" onclick=\"return switchPastebinFriendly(this);\">\n Switch to copy-and-paste view</a></span>\n </h2>\n <div id=\"browserTraceback\">\n <ul class=\"traceback\">\n \n \n <li class=\"frame django\">\n <code>/usr/lib64/python2.7/site-packages/django/core/handlers/exception.py</code> in <code>inner</code>\n\n \n <div class=\"context\" id=\"c140530490956256\">\n \n <ol start=\"34\" class=\"pre-context\" id=\"pre140530490956256\">\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre> This decorator is automatically applied to all middleware to ensure that</pre></li>\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre> no middleware leaks an exception and that the next middleware in the stack</pre></li>\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre> can rely on getting a response instead of an exception.</pre></li>\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre> """</pre></li>\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre> @wraps(get_response, assigned=available_attrs(get_response))</pre></li>\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre> def inner(request):</pre></li>\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre> try:</pre></li>\n \n </ol>\n \n <ol start=\"41\" class=\"context-line\">\n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre>\n response = get_response(request)</pre> <span>...</span></li></ol>\n \n <ol start='42' class=\"post-context\" id=\"post140530490956256\">\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre> except Exception as exc:</pre></li>\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre> response = response_for_exception(request, exc)</pre></li>\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre> return response</pre></li>\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre> return inner</pre></li>\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530490956256', 'post140530490956256')\"><pre></pre></li>\n \n </ol>\n \n </div>\n \n\n \n <div class=\"commands\">\n \n <a href=\"#\" onclick=\"return varToggle(this, '140530490956256')\"><span>▶</span> Local vars</a>\n \n </div>\n <table class=\"vars\" id=\"v140530490956256\">\n <thead>\n <tr>\n <th>Variable</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n \n <tr>\n <td>exc</td>\n <td class=\"code\"><pre>TypeError('unsupported type for timedelta seconds component: unicode',)</pre></td>\n </tr>\n \n <tr>\n <td>get_response</td>\n <td class=\"code\"><pre><bound method WSGIHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7fcfe00b8190>></pre></td>\n </tr>\n \n <tr>\n <td>request</td>\n <td class=\"code\"><pre><WSGIRequest: POST '/render'></pre></td>\n </tr>\n \n </tbody>\n </table>\n \n </li>\n \n \n <li class=\"frame django\">\n <code>/usr/lib64/python2.7/site-packages/django/core/handlers/base.py</code> in <code>_get_response</code>\n\n \n <div class=\"context\" id=\"c140530490955464\">\n \n <ol start=\"180\" class=\"pre-context\" id=\"pre140530490955464\">\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre> break</pre></li>\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre> if response is None:</pre></li>\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li>\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre> try:</pre></li>\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre> response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre></li>\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre> except Exception as e:</pre></li>\n \n </ol>\n \n <ol start=\"187\" class=\"context-line\">\n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre>\n response = self.process_exception_by_middleware(e, request)</pre> <span>...</span></li></ol>\n \n <ol start='188' class=\"post-context\" id=\"post140530490955464\">\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre> # Complain if the view returned None (a common error).</pre></li>\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre> if response is None:</pre></li>\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre> if isinstance(callback, types.FunctionType): # FBV</pre></li>\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre> view_name = callback.__name__</pre></li>\n \n <li onclick=\"toggle('pre140530490955464', 'post140530490955464')\"><pre> else: # CBV</pre></li>\n \n </ol>\n \n </div>\n \n\n \n <div class=\"commands\">\n \n <a href=\"#\" onclick=\"return varToggle(this, '140530490955464')\"><span>▶</span> Local vars</a>\n \n </div>\n <table class=\"vars\" id=\"v140530490955464\">\n <thead>\n <tr>\n <th>Variable</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n \n <tr>\n <td>callback</td>\n <td class=\"code\"><pre><function renderView at 0x7fcfd428a488></pre></td>\n </tr>\n \n <tr>\n <td>callback_args</td>\n <td class=\"code\"><pre>()</pre></td>\n </tr>\n \n <tr>\n <td>callback_kwargs</td>\n <td class=\"code\"><pre>{}</pre></td>\n </tr>\n \n <tr>\n <td>e</td>\n <td class=\"code\"><pre>TypeError('unsupported type for timedelta seconds component: unicode',)</pre></td>\n </tr>\n \n <tr>\n <td>request</td>\n <td class=\"code\"><pre><WSGIRequest: POST '/render'></pre></td>\n </tr>\n \n <tr>\n <td>resolver</td>\n <td class=\"code\"><pre><RegexURLResolver 'graphite.urls' (None:None) ^/></pre></td>\n </tr>\n \n <tr>\n <td>resolver_match</td>\n <td class=\"code\"><pre>ResolverMatch(func=graphite.render.views.renderView, args=(), kwargs={}, url_name=render, app_names=[], namespaces=[])</pre></td>\n </tr>\n \n <tr>\n <td>response</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>self</td>\n <td class=\"code\"><pre><django.core.handlers.wsgi.WSGIHandler object at 0x7fcfe00b8190></pre></td>\n </tr>\n \n <tr>\n <td>wrapped_callback</td>\n <td class=\"code\"><pre><function renderView at 0x7fcfd428a488></pre></td>\n </tr>\n \n </tbody>\n </table>\n \n </li>\n \n \n <li class=\"frame django\">\n <code>/usr/lib64/python2.7/site-packages/django/core/handlers/base.py</code> in <code>_get_response</code>\n\n \n <div class=\"context\" id=\"c140530490954672\">\n \n <ol start=\"178\" class=\"pre-context\" id=\"pre140530490954672\">\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre> response = middleware_method(request, callback, callback_args, callback_kwargs)</pre></li>\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre> if response:</pre></li>\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre> break</pre></li>\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre> if response is None:</pre></li>\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre> wrapped_callback = self.make_view_atomic(callback)</pre></li>\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre> try:</pre></li>\n \n </ol>\n \n <ol start=\"185\" class=\"context-line\">\n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre>\n response = wrapped_callback(request, *callback_args, **callback_kwargs)</pre> <span>...</span></li></ol>\n \n <ol start='186' class=\"post-context\" id=\"post140530490954672\">\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre> except Exception as e:</pre></li>\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre> response = self.process_exception_by_middleware(e, request)</pre></li>\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre> # Complain if the view returned None (a common error).</pre></li>\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre> if response is None:</pre></li>\n \n <li onclick=\"toggle('pre140530490954672', 'post140530490954672')\"><pre> if isinstance(callback, types.FunctionType): # FBV</pre></li>\n \n </ol>\n \n </div>\n \n\n \n <div class=\"commands\">\n \n <a href=\"#\" onclick=\"return varToggle(this, '140530490954672')\"><span>▶</span> Local vars</a>\n \n </div>\n <table class=\"vars\" id=\"v140530490954672\">\n <thead>\n <tr>\n <th>Variable</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n \n <tr>\n <td>callback</td>\n <td class=\"code\"><pre><function renderView at 0x7fcfd428a488></pre></td>\n </tr>\n \n <tr>\n <td>callback_args</td>\n <td class=\"code\"><pre>()</pre></td>\n </tr>\n \n <tr>\n <td>callback_kwargs</td>\n <td class=\"code\"><pre>{}</pre></td>\n </tr>\n \n <tr>\n <td>e</td>\n <td class=\"code\"><pre>TypeError('unsupported type for timedelta seconds component: unicode',)</pre></td>\n </tr>\n \n <tr>\n <td>request</td>\n <td class=\"code\"><pre><WSGIRequest: POST '/render'></pre></td>\n </tr>\n \n <tr>\n <td>resolver</td>\n <td class=\"code\"><pre><RegexURLResolver 'graphite.urls' (None:None) ^/></pre></td>\n </tr>\n \n <tr>\n <td>resolver_match</td>\n <td class=\"code\"><pre>ResolverMatch(func=graphite.render.views.renderView, args=(), kwargs={}, url_name=render, app_names=[], namespaces=[])</pre></td>\n </tr>\n \n <tr>\n <td>response</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>self</td>\n <td class=\"code\"><pre><django.core.handlers.wsgi.WSGIHandler object at 0x7fcfe00b8190></pre></td>\n </tr>\n \n <tr>\n <td>wrapped_callback</td>\n <td class=\"code\"><pre><function renderView at 0x7fcfd428a488></pre></td>\n </tr>\n \n </tbody>\n </table>\n \n </li>\n \n \n <li class=\"frame user\">\n <code>/opt/graphite/webapp/graphite/render/views.py</code> in <code>renderView</code>\n\n \n <div class=\"context\" id=\"c140530490955968\">\n \n <ol start=\"111\" class=\"pre-context\" id=\"pre140530490955968\">\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre> log.cache("Data-Cache miss [%s]" % dataKey)</pre></li>\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre> if cachedData is not None:</pre></li>\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre> requestContext['data'] = data = cachedData</pre></li>\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre> else: # Have to actually retrieve the data now</pre></li>\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre> targets = requestOptions['targets']</pre></li>\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre></pre></li>\n \n </ol>\n \n <ol start=\"118\" class=\"context-line\">\n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre>\n data.extend(evaluateTarget(requestContext, targets))</pre> <span>...</span></li></ol>\n \n <ol start='119' class=\"post-context\" id=\"post140530490955968\">\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre> if useCache:</pre></li>\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre> cache.add(dataKey, data, cacheTimeout)</pre></li>\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre> renderStart = time()</pre></li>\n \n <li onclick=\"toggle('pre140530490955968', 'post140530490955968')\"><pre></pre></li>\n \n </ol>\n \n </div>\n \n\n \n <div class=\"commands\">\n \n <a href=\"#\" onclick=\"return varToggle(this, '140530490955968')\"><span>▶</span> Local vars</a>\n \n </div>\n <table class=\"vars\" id=\"v140530490955968\">\n <thead>\n <tr>\n <th>Variable</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n \n <tr>\n <td>cacheTimeout</td>\n <td class=\"code\"><pre>60</pre></td>\n </tr>\n \n <tr>\n <td>cachedData</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>data</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>dataKey</td>\n <td class=\"code\"><pre>'810d5d986488b218bca6d3d800c90414'</pre></td>\n </tr>\n \n <tr>\n <td>endTime</td>\n <td class=\"code\"><pre>datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>)</pre></td>\n </tr>\n \n <tr>\n <td>graphOptions</td>\n <td class=\"code\"><pre>{'height': 250, 'outputFormat': 'png', 'width': 330}</pre></td>\n </tr>\n \n <tr>\n <td>request</td>\n <td class=\"code\"><pre><WSGIRequest: POST '/render'></pre></td>\n </tr>\n \n <tr>\n <td>requestContext</td>\n <td class=\"code\"><pre>{'args': ([([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]})], {}),\n 'data': [],\n 'endTime': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'forwardHeaders': {},\n 'localOnly': False,\n 'now': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'prefetched': {(1545554609, 1545641009, 1545641009): defaultdict(<type 'list'>, {u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count': [(u'stats.sets.stats.kamailio.marek.customer.TUTOR.registration.775b949a-74f818be10.141.0.5.200.count', ((1545554640, 1545641040, 60), [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... <trimmed 464867 bytes string></pre></td>\n </tr>\n \n <tr>\n <td>requestKey</td>\n <td class=\"code\"><pre>'72eed04c5bfc8aa228bc6b53e9bffc76'</pre></td>\n </tr>\n \n <tr>\n <td>requestOptions</td>\n <td class=\"code\"><pre>{'cacheTimeout': 60,\n 'endTime': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'format': u'json',\n 'forwardHeaders': {},\n 'graphClass': <class graphite.render.glyph.LineGraph at 0x7fcfd4312ce8>,\n 'graphType': 'line',\n 'localOnly': False,\n 'maxDataPoints': 960,\n 'now': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'pieMode': 'average',\n 'pretty': False,\n 'startTime': datetime.datetime(2018, 12, 23, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'targets': [u'timeFunction(stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count, \\'"The.time.series"\\')',\n u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.REGISTER.count'],\n 'template': {},\n 'tzinfo': <DstTzInfo 'Europe/Paris' PMT+0:09:00 STD>,\n 'xFilesFactor': 0.0}</pre></td>\n </tr>\n \n <tr>\n <td>response</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>start</td>\n <td class=\"code\"><pre>1545641009.670845</pre></td>\n </tr>\n \n <tr>\n <td>startTime</td>\n <td class=\"code\"><pre>datetime.datetime(2018, 12, 23, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>)</pre></td>\n </tr>\n \n <tr>\n <td>targets</td>\n <td class=\"code\"><pre>[u'timeFunction(stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count, \\'"The.time.series"\\')',\n u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.REGISTER.count']</pre></td>\n </tr>\n \n <tr>\n <td>useCache</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n </tbody>\n </table>\n \n </li>\n \n \n <li class=\"frame user\">\n <code>/opt/graphite/webapp/graphite/render/evaluator.py</code> in <code>evaluateTarget</code>\n\n \n <div class=\"context\" id=\"c140530490954960\">\n \n <ol start=\"21\" class=\"pre-context\" id=\"pre140530490954960\">\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre> continue</pre></li>\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre> if isinstance(target, six.string_types):</pre></li>\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre> if not target.strip():</pre></li>\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre> continue</pre></li>\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre> target = grammar.parseString(target)</pre></li>\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre></pre></li>\n \n </ol>\n \n <ol start=\"28\" class=\"context-line\">\n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre>\n result = evaluateTokens(requestContext, target)</pre> <span>...</span></li></ol>\n \n <ol start='29' class=\"post-context\" id=\"post140530490954960\">\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre> # we have to return a list of TimeSeries objects</pre></li>\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre> if isinstance(result, TimeSeries):</pre></li>\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre> seriesList.append(result)</pre></li>\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre> elif result:</pre></li>\n \n <li onclick=\"toggle('pre140530490954960', 'post140530490954960')\"><pre> seriesList.extend(result)</pre></li>\n \n </ol>\n \n </div>\n \n\n \n <div class=\"commands\">\n \n <a href=\"#\" onclick=\"return varToggle(this, '140530490954960')\"><span>▶</span> Local vars</a>\n \n </div>\n <table class=\"vars\" id=\"v140530490954960\">\n <thead>\n <tr>\n <th>Variable</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n \n <tr>\n <td>pathExpressions</td>\n <td class=\"code\"><pre>[u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count',\n u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.REGISTER.count']</pre></td>\n </tr>\n \n <tr>\n <td>requestContext</td>\n <td class=\"code\"><pre>{'args': ([([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]})], {}),\n 'data': [],\n 'endTime': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'forwardHeaders': {},\n 'localOnly': False,\n 'now': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'prefetched': {(1545554609, 1545641009, 1545641009): defaultdict(<type 'list'>, {u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count': [(u'stats.sets.stats.kamailio.marek.customer.TUTOR.registration.775b949a-74f818be10.141.0.5.200.count', ((1545554640, 1545641040, 60), [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... <trimmed 464867 bytes string></pre></td>\n </tr>\n \n <tr>\n <td>seriesList</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>target</td>\n <td class=\"code\"><pre>([([([0, u'timeFunction', ([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 108], {'start': [(0, 0)], 'args': [(([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), 2), (([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 3)], 'end': [(108, 4)], 'funcname': [(u'timeFunction', 1)]}), ([], {})], {'pipedCalls': [(([], {}), 1)], 'call': [(([0, u'timeFunction', ([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 108], {'start': [(0, 0)], 'args': [(([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), 2), (([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 3)], 'end': [(108, 4)], 'funcname': [(u'timeFunction', 1)]}), 0)]})], {'expression': [(([([0, u'timeFunction', ([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 108], {'start': [(0, 0)], 'args': [(([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), 2), (([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 3)], 'end': [(108, 4)], 'funcname': [(u'timeFunction', 1)]}), ([], {})], {'pipedCalls': [(([], {}), 1)], 'call': [(([0, u'timeFunction', ([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200... <trimmed 5113 bytes string></pre></td>\n </tr>\n \n <tr>\n <td>targets</td>\n <td class=\"code\"><pre>[u'timeFunction(stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count, \\'"The.time.series"\\')',\n u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.REGISTER.count']</pre></td>\n </tr>\n \n </tbody>\n </table>\n \n </li>\n \n \n <li class=\"frame user\">\n <code>/opt/graphite/webapp/graphite/render/evaluator.py</code> in <code>evaluateTokens</code>\n\n \n <div class=\"context\" id=\"c140530490996856\">\n \n <ol start=\"50\" class=\"pre-context\" id=\"pre140530490996856\">\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre> if tokens.expression:</pre></li>\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre> if tokens.expression.pipedCalls:</pre></li>\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre> # when the expression has piped calls, we pop the right-most call and pass the remaining</pre></li>\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre> # expression into it via pipedArg, to get the same result as a nested call</pre></li>\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre> rightMost = tokens.expression.pipedCalls.pop()</pre></li>\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre> return evaluateTokens(requestContext, rightMost, replacements, tokens)</pre></li>\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre></pre></li>\n \n </ol>\n \n <ol start=\"57\" class=\"context-line\">\n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre>\n return evaluateTokens(requestContext, tokens.expression, replacements)</pre> <span>...</span></li></ol>\n \n <ol start='58' class=\"post-context\" id=\"post140530490996856\">\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre> if tokens.pathExpression:</pre></li>\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre> expression = tokens.pathExpression</pre></li>\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre> if replacements:</pre></li>\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre> for name in replacements:</pre></li>\n \n <li onclick=\"toggle('pre140530490996856', 'post140530490996856')\"><pre> if expression == '$'+name:</pre></li>\n \n </ol>\n \n </div>\n \n\n \n <div class=\"commands\">\n \n <a href=\"#\" onclick=\"return varToggle(this, '140530490996856')\"><span>▶</span> Local vars</a>\n \n </div>\n <table class=\"vars\" id=\"v140530490996856\">\n <thead>\n <tr>\n <th>Variable</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n \n <tr>\n <td>pipedArg</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>replacements</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>requestContext</td>\n <td class=\"code\"><pre>{'args': ([([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]})], {}),\n 'data': [],\n 'endTime': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'forwardHeaders': {},\n 'localOnly': False,\n 'now': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'prefetched': {(1545554609, 1545641009, 1545641009): defaultdict(<type 'list'>, {u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count': [(u'stats.sets.stats.kamailio.marek.customer.TUTOR.registration.775b949a-74f818be10.141.0.5.200.count', ((1545554640, 1545641040, 60), [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... <trimmed 464867 bytes string></pre></td>\n </tr>\n \n <tr>\n <td>tokens</td>\n <td class=\"code\"><pre>([([([0, u'timeFunction', ([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 108], {'start': [(0, 0)], 'args': [(([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), 2), (([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 3)], 'end': [(108, 4)], 'funcname': [(u'timeFunction', 1)]}), ([], {})], {'pipedCalls': [(([], {}), 1)], 'call': [(([0, u'timeFunction', ([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 108], {'start': [(0, 0)], 'args': [(([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), 2), (([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 3)], 'end': [(108, 4)], 'funcname': [(u'timeFunction', 1)]}), 0)]})], {'expression': [(([([0, u'timeFunction', ([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 108], {'start': [(0, 0)], 'args': [(([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), 2), (([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 3)], 'end': [(108, 4)], 'funcname': [(u'timeFunction', 1)]}), ([], {})], {'pipedCalls': [(([], {}), 1)], 'call': [(([0, u'timeFunction', ([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200... <trimmed 5113 bytes string></pre></td>\n </tr>\n \n </tbody>\n </table>\n \n </li>\n \n \n <li class=\"frame user\">\n <code>/opt/graphite/webapp/graphite/render/evaluator.py</code> in <code>evaluateTokens</code>\n\n \n <div class=\"context\" id=\"c140530644020400\">\n \n <ol start=\"86\" class=\"pre-context\" id=\"pre140530644020400\">\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre> if pipedArg is not None:</pre></li>\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre> rawArgs.insert(0, pipedArg)</pre></li>\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre> args = [evaluateTokens(requestContext, arg, replacements) for arg in rawArgs]</pre></li>\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre> requestContext['args'] = rawArgs</pre></li>\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre> kwargs = dict([(kwarg.argname, evaluateTokens(requestContext, kwarg.args[0], replacements))</pre></li>\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre> for kwarg in tokens.call.kwargs])</pre></li>\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre> try:</pre></li>\n \n </ol>\n \n <ol start=\"93\" class=\"context-line\">\n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre>\n return func(requestContext, *args, **kwargs)</pre> <span>...</span></li></ol>\n \n <ol start='94' class=\"post-context\" id=\"post140530644020400\">\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre> except NormalizeEmptyResultError:</pre></li>\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre> return []</pre></li>\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre> return evaluateScalarTokens(tokens)</pre></li>\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530644020400', 'post140530644020400')\"><pre></pre></li>\n \n </ol>\n \n </div>\n \n\n \n <div class=\"commands\">\n \n <a href=\"#\" onclick=\"return varToggle(this, '140530644020400')\"><span>▶</span> Local vars</a>\n \n </div>\n <table class=\"vars\" id=\"v140530644020400\">\n <thead>\n <tr>\n <th>Variable</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n \n <tr>\n <td>arg</td>\n <td class=\"code\"><pre>([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]})</pre></td>\n </tr>\n \n <tr>\n <td>args</td>\n <td class=\"code\"><pre>[[TimeSeries(name=stats.sets.stats.kamailio.marek.customer.LEGOS.registration.51cc3fa2-992430fc10.141.0.19.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.LEGOS.registration.6297b5a5-e9e1fb4310.141.0.9.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.LEGOS.registration.663c7873-17c866cd10.141.0.9.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.LEGOS.registration.86bd53d4-2049da7210.141.0.19.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.LEGOS.registration.8cb892ba-b58238c410.141.0.19.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.NOMOTECH.registration.909eed5e-c02cf6ca10.141.0.5.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.TUTOR.registration.775b949a-74f818be10.141.0.5.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.00022356-9DFC-E811-8AD6-61C77B1F482D192.168.56.25.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.0010DD94-1401-E911-977F-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.002ACC58-92FC-E811-8AB6-61C77B1F482D192.168.56.25.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.006A3F97-1401-E911-979F-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.00781A63-1901-E911-97DA-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.0087D424-2001-E911-97FE-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.00894991-1401-E911-974F-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.00977098-1401-E911-97AF-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.009AD221-1201-E911-972C-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.00B67A92-1401-E911-975F-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.cu... <trimmed 7503 bytes string></pre></td>\n </tr>\n \n <tr>\n <td>func</td>\n <td class=\"code\"><pre><function timeFunction at 0x7fcfd4304de8></pre></td>\n </tr>\n \n <tr>\n <td>kwargs</td>\n <td class=\"code\"><pre>{}</pre></td>\n </tr>\n \n <tr>\n <td>pipedArg</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>rawArgs</td>\n <td class=\"code\"><pre>([([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]})], {})</pre></td>\n </tr>\n \n <tr>\n <td>replacements</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>requestContext</td>\n <td class=\"code\"><pre>{'args': ([([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]})], {}),\n 'data': [],\n 'endTime': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'forwardHeaders': {},\n 'localOnly': False,\n 'now': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'prefetched': {(1545554609, 1545641009, 1545641009): defaultdict(<type 'list'>, {u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count': [(u'stats.sets.stats.kamailio.marek.customer.TUTOR.registration.775b949a-74f818be10.141.0.5.200.count', ((1545554640, 1545641040, 60), [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... <trimmed 464867 bytes string></pre></td>\n </tr>\n \n <tr>\n <td>tokens</td>\n <td class=\"code\"><pre>([([0, u'timeFunction', ([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 108], {'start': [(0, 0)], 'args': [(([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), 2), (([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 3)], 'end': [(108, 4)], 'funcname': [(u'timeFunction', 1)]}), ([], {})], {'pipedCalls': [(([], {}), 1)], 'call': [(([0, u'timeFunction', ([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 108], {'start': [(0, 0)], 'args': [(([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), 2), (([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]}), 3)], 'end': [(108, 4)], 'funcname': [(u'timeFunction', 1)]}), 0)]})</pre></td>\n </tr>\n \n </tbody>\n </table>\n \n </li>\n \n \n <li class=\"frame user\">\n <code>/opt/graphite/webapp/graphite/render/functions.py</code> in <code>timeFunction</code>\n\n \n <div class=\"context\" id=\"c140530644019752\">\n \n <ol start=\"5203\" class=\"pre-context\" id=\"pre140530644019752\">\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre> This would create a series named "The.time.series" that contains in Y the same</pre></li>\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre> value (in seconds) as X.</pre></li>\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre> Accepts optional second argument as 'step' parameter (default step is 60 sec)</pre></li>\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre> """</pre></li>\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre> # TODO: align both startTime and endTime when creating the TimeSeries.</pre></li>\n \n </ol>\n \n <ol start=\"5210\" class=\"context-line\">\n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre>\n delta = timedelta(seconds=step)</pre> <span>...</span></li></ol>\n \n <ol start='5211' class=\"post-context\" id=\"post140530644019752\">\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre> when = requestContext["startTime"]</pre></li>\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre> values = []</pre></li>\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre></pre></li>\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre> while when < requestContext["endTime"]:</pre></li>\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre> values.append(time.mktime(when.timetuple()))</pre></li>\n \n <li onclick=\"toggle('pre140530644019752', 'post140530644019752')\"><pre> when += delta</pre></li>\n \n </ol>\n \n </div>\n \n\n \n <div class=\"commands\">\n \n <a href=\"#\" onclick=\"return varToggle(this, '140530644019752')\"><span>▶</span> Local vars</a>\n \n </div>\n <table class=\"vars\" id=\"v140530644019752\">\n <thead>\n <tr>\n <th>Variable</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n \n <tr>\n <td>name</td>\n <td class=\"code\"><pre>[TimeSeries(name=stats.sets.stats.kamailio.marek.customer.LEGOS.registration.51cc3fa2-992430fc10.141.0.19.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.LEGOS.registration.6297b5a5-e9e1fb4310.141.0.9.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.LEGOS.registration.663c7873-17c866cd10.141.0.9.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.LEGOS.registration.86bd53d4-2049da7210.141.0.19.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.LEGOS.registration.8cb892ba-b58238c410.141.0.19.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.NOMOTECH.registration.909eed5e-c02cf6ca10.141.0.5.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.TUTOR.registration.775b949a-74f818be10.141.0.5.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.00022356-9DFC-E811-8AD6-61C77B1F482D192.168.56.25.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.0010DD94-1401-E911-977F-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.002ACC58-92FC-E811-8AB6-61C77B1F482D192.168.56.25.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.006A3F97-1401-E911-979F-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.00781A63-1901-E911-97DA-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.0087D424-2001-E911-97FE-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.00894991-1401-E911-974F-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.00977098-1401-E911-97AF-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.009AD221-1201-E911-972C-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.registration.00B67A92-1401-E911-975F-294F3246EEF8192.168.56.59.200.count, start=1545554640, end=1545641040, step=60, valuesPerPoint=1, consolidationFunc=average, xFilesFactor=0.0),\n TimeSeries(name=stats.sets.stats.kamailio.marek.customer.VIALIS.regi... <trimmed 7448 bytes string></pre></td>\n </tr>\n \n <tr>\n <td>requestContext</td>\n <td class=\"code\"><pre>{'args': ([([([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]})], {'expression': [(([u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', ([], {})], {'pipedCalls': [(([], {}), 1)], 'pathExpression': [(u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count', 0)]}), 0)]}), ([u'\\'"The.time.series"\\''], {'string': [(u'\\'"The.time.series"\\'', 0)]})], {}),\n 'data': [],\n 'endTime': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'forwardHeaders': {},\n 'localOnly': False,\n 'now': datetime.datetime(2018, 12, 24, 9, 43, 29, 671663, tzinfo=<DstTzInfo 'Europe/Paris' CET+1:00:00 STD>),\n 'prefetched': {(1545554609, 1545641009, 1545641009): defaultdict(<type 'list'>, {u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.200.count': [(u'stats.sets.stats.kamailio.marek.customer.TUTOR.registration.775b949a-74f818be10.141.0.5.200.count', ((1545554640, 1545641040, 60), [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... <trimmed 464867 bytes string></pre></td>\n </tr>\n \n <tr>\n <td>step</td>\n <td class=\"code\"><pre>u'"The.time.series"'</pre></td>\n </tr>\n \n </tbody>\n </table>\n \n </li>\n \n </ul>\n </div>\n <form action=\"http://dpaste.com/\" name=\"pasteform\" id=\"pasteform\" method=\"post\">\n\n <div id=\"pastebinTraceback\" class=\"pastebin\">\n <input type=\"hidden\" name=\"language\" value=\"PythonConsole\">\n <input type=\"hidden\" name=\"title\"\n value=\"TypeError at /render\">\n <input type=\"hidden\" name=\"source\" value=\"Django Dpaste Agent\">\n <input type=\"hidden\" name=\"poster\" value=\"Django\">\n <textarea name=\"content\" id=\"traceback_area\" cols=\"140\" rows=\"25\">\nEnvironment:\n\n\nRequest Method: POST\nRequest URL: http://localhost:81/render\n\nDjango Version: 1.11.16\nPython Version: 2.7.5\nInstalled Applications:\n('graphite.account',\n 'graphite.browser',\n 'graphite.composer',\n 'graphite.dashboard',\n 'graphite.events',\n 'graphite.functions',\n 'graphite.metrics',\n 'graphite.render',\n 'graphite.tags',\n 'graphite.url_shortener',\n 'graphite.whitelist',\n 'django.contrib.auth',\n 'django.contrib.sessions',\n 'django.contrib.admin',\n 'django.contrib.contenttypes',\n 'django.contrib.staticfiles',\n 'tagging')\nInstalled Middleware:\n('graphite.middleware.LogExceptionsMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.gzip.GZipMiddleware',\n 'django.contrib.sessions.middleware.SessionMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'whitenoise.middleware.WhiteNoiseMiddleware')\n\n\n\nTraceback:\n\nFile \"/usr/lib64/python2.7/site-packages/django/core/handlers/exception.py\" in inner\n 41. response = get_response(request)\n\nFile \"/usr/lib64/python2.7/site-packages/django/core/handlers/base.py\" in _get_response\n 187. response = self.process_exception_by_middleware(e, request)\n\nFile \"/usr/lib64/python2.7/site-packages/django/core/handlers/base.py\" in _get_response\n 185. response = wrapped_callback(request, *callback_args, **callback_kwargs)\n\nFile \"/opt/graphite/webapp/graphite/render/views.py\" in renderView\n 118. data.extend(evaluateTarget(requestContext, targets))\n\nFile \"/opt/graphite/webapp/graphite/render/evaluator.py\" in evaluateTarget\n 28. result = evaluateTokens(requestContext, target)\n\nFile \"/opt/graphite/webapp/graphite/render/evaluator.py\" in evaluateTokens\n 57. return evaluateTokens(requestContext, tokens.expression, replacements)\n\nFile \"/opt/graphite/webapp/graphite/render/evaluator.py\" in evaluateTokens\n 93. return func(requestContext, *args, **kwargs)\n\nFile \"/opt/graphite/webapp/graphite/render/functions.py\" in timeFunction\n 5210. delta = timedelta(seconds=step)\n\nException Type: TypeError at /render\nException Value: unsupported type for timedelta seconds component: unicode\n</textarea>\n <br><br>\n <input type=\"submit\" value=\"Share this traceback on a public website\">\n </div>\n</form>\n</div>\n\n\n\n<div id=\"requestinfo\">\n <h2>Request information</h2>\n\n\n \n <h3 id=\"user-info\">USER</h3>\n <p>AnonymousUser</p>\n \n\n <h3 id=\"get-info\">GET</h3>\n \n <p>No GET data</p>\n \n\n <h3 id=\"post-info\">POST</h3>\n \n <table class=\"req\">\n <thead>\n <tr>\n <th>Variable</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n \n <tr>\n <td>format</td>\n <td class=\"code\"><pre>u'json'</pre></td>\n </tr>\n \n <tr>\n <td>from</td>\n <td class=\"code\"><pre>u'-24h'</pre></td>\n </tr>\n \n <tr>\n <td>target</td>\n <td class=\"code\"><pre>u'stats.sets.stats.kamailio.marek.customer.*.registration.*.*.*.*.REGISTER.count'</pre></td>\n </tr>\n \n <tr>\n <td>maxDataPoints</td>\n <td class=\"code\"><pre>u'960'</pre></td>\n </tr>\n \n <tr>\n <td>until</td>\n <td class=\"code\"><pre>u'now'</pre></td>\n </tr>\n \n </tbody>\n </table>\n \n <h3 id=\"files-info\">FILES</h3>\n \n <p>No FILES data</p>\n \n\n\n <h3 id=\"cookie-info\">COOKIES</h3>\n \n <p>No cookie data</p>\n \n\n <h3 id=\"meta-info\">META</h3>\n <table class=\"req\">\n <thead>\n <tr>\n <th>Variable</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n \n <tr>\n <td>CONTENT_LENGTH</td>\n <td class=\"code\"><pre>'259'</pre></td>\n </tr>\n \n <tr>\n <td>CONTENT_TYPE</td>\n <td class=\"code\"><pre>'application/x-www-form-urlencoded'</pre></td>\n </tr>\n \n <tr>\n <td>CONTEXT_DOCUMENT_ROOT</td>\n <td class=\"code\"><pre>'/opt/graphite/webapp'</pre></td>\n </tr>\n \n <tr>\n <td>CONTEXT_PREFIX</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>DOCUMENT_ROOT</td>\n <td class=\"code\"><pre>'/opt/graphite/webapp'</pre></td>\n </tr>\n \n <tr>\n <td>GATEWAY_INTERFACE</td>\n <td class=\"code\"><pre>'CGI/1.1'</pre></td>\n </tr>\n \n <tr>\n <td>HTTP_ACCEPT</td>\n <td class=\"code\"><pre>'application/json, text/plain, */*'</pre></td>\n </tr>\n \n <tr>\n <td>HTTP_ACCEPT_ENCODING</td>\n <td class=\"code\"><pre>'gzip, deflate, br'</pre></td>\n </tr>\n \n <tr>\n <td>HTTP_ACCEPT_LANGUAGE</td>\n <td class=\"code\"><pre>'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7'</pre></td>\n </tr>\n \n <tr>\n <td>HTTP_HOST</td>\n <td class=\"code\"><pre>'localhost:81'</pre></td>\n </tr>\n \n <tr>\n <td>HTTP_USER_AGENT</td>\n <td class=\"code\"><pre>'Grafana/5.4.2'</pre></td>\n </tr>\n \n <tr>\n <td>HTTP_X_DASHBOARD_ID</td>\n <td class=\"code\"><pre>'2'</pre></td>\n </tr>\n \n <tr>\n <td>HTTP_X_FORWARDED_FOR</td>\n <td class=\"code\"><pre>'10.141.0.40, 10.141.0.40'</pre></td>\n </tr>\n \n <tr>\n <td>HTTP_X_GRAFANA_ORG_ID</td>\n <td class=\"code\"><pre>'1'</pre></td>\n </tr>\n \n <tr>\n <td>HTTP_X_PANEL_ID</td>\n <td class=\"code\"><pre>'8'</pre></td>\n </tr>\n \n <tr>\n <td>PATH_INFO</td>\n <td class=\"code\"><pre>u'/render'</pre></td>\n </tr>\n \n <tr>\n <td>PATH_TRANSLATED</td>\n <td class=\"code\"><pre>'/opt/graphite/conf/graphite.wsgi/render'</pre></td>\n </tr>\n \n <tr>\n <td>QUERY_STRING</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_ADDR</td>\n <td class=\"code\"><pre>'::1'</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_PORT</td>\n <td class=\"code\"><pre>'43938'</pre></td>\n </tr>\n \n <tr>\n <td>REQUEST_METHOD</td>\n <td class=\"code\"><pre>'POST'</pre></td>\n </tr>\n \n <tr>\n <td>REQUEST_SCHEME</td>\n <td class=\"code\"><pre>'http'</pre></td>\n </tr>\n \n <tr>\n <td>REQUEST_URI</td>\n <td class=\"code\"><pre>'/render'</pre></td>\n </tr>\n \n <tr>\n <td>SCRIPT_FILENAME</td>\n <td class=\"code\"><pre>'/opt/graphite/conf/graphite.wsgi'</pre></td>\n </tr>\n \n <tr>\n <td>SCRIPT_NAME</td>\n <td class=\"code\"><pre>u''</pre></td>\n </tr>\n \n <tr>\n <td>SERVER_ADDR</td>\n <td class=\"code\"><pre>'::1'</pre></td>\n </tr>\n \n <tr>\n <td>SERVER_ADMIN</td>\n <td class=\"code\"><pre>'root@localhost'</pre></td>\n </tr>\n \n <tr>\n <td>SERVER_NAME</td>\n <td class=\"code\"><pre>'localhost'</pre></td>\n </tr>\n \n <tr>\n <td>SERVER_PORT</td>\n <td class=\"code\"><pre>'81'</pre></td>\n </tr>\n \n <tr>\n <td>SERVER_PROTOCOL</td>\n <td class=\"code\"><pre>'HTTP/1.1'</pre></td>\n </tr>\n \n <tr>\n <td>SERVER_SIGNATURE</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>SERVER_SOFTWARE</td>\n <td class=\"code\"><pre>'Apache/2.4.6 (Red Hat Enterprise Linux) PHP/5.4.16 mod_wsgi/3.4 Python/2.7.5'</pre></td>\n </tr>\n \n <tr>\n <td>UNIQUE_ID</td>\n <td class=\"code\"><pre>'XCCcMRHQdbgmbW3TAHor7wAAAAA'</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.application_group</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.callable_object</td>\n <td class=\"code\"><pre>'application'</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.enable_sendfile</td>\n <td class=\"code\"><pre>'0'</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.handler_script</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.input_chunked</td>\n <td class=\"code\"><pre>'0'</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.listener_host</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.listener_port</td>\n <td class=\"code\"><pre>'81'</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.process_group</td>\n <td class=\"code\"><pre>'graphite'</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.queue_start</td>\n <td class=\"code\"><pre>'1545641009669303'</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.request_handler</td>\n <td class=\"code\"><pre>'wsgi-script'</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.script_reloading</td>\n <td class=\"code\"><pre>'1'</pre></td>\n </tr>\n \n <tr>\n <td>mod_wsgi.version</td>\n <td class=\"code\"><pre>(3, 4)</pre></td>\n </tr>\n \n <tr>\n <td>wsgi.errors</td>\n <td class=\"code\"><pre><mod_wsgi.Log object at 0x7fcfcdfbb330></pre></td>\n </tr>\n \n <tr>\n <td>wsgi.file_wrapper</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>wsgi.input</td>\n <td class=\"code\"><pre><mod_wsgi.Input object at 0x7fcfcdfbb170></pre></td>\n </tr>\n \n <tr>\n <td>wsgi.multiprocess</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n <tr>\n <td>wsgi.multithread</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n <tr>\n <td>wsgi.run_once</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>wsgi.url_scheme</td>\n <td class=\"code\"><pre>'http'</pre></td>\n </tr>\n \n <tr>\n <td>wsgi.version</td>\n <td class=\"code\"><pre>(1, 0)</pre></td>\n </tr>\n \n </tbody>\n </table>\n\n\n <h3 id=\"settings-info\">Settings</h3>\n <h4>Using settings module <code>graphite.local_settings</code></h4>\n <table class=\"req\">\n <thead>\n <tr>\n <th>Setting</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n \n <tr>\n <td>ABSOLUTE_URL_OVERRIDES</td>\n <td class=\"code\"><pre>{}</pre></td>\n </tr>\n \n <tr>\n <td>ADMINS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>ALLOWED_HOSTS</td>\n <td class=\"code\"><pre>['*']</pre></td>\n </tr>\n \n <tr>\n <td>ALLOW_ANONYMOUS_CLI</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n <tr>\n <td>APPEND_SLASH</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>AUTHENTICATION_BACKENDS</td>\n <td class=\"code\"><pre>['django.contrib.auth.backends.ModelBackend']</pre></td>\n </tr>\n \n <tr>\n <td>AUTH_PASSWORD_VALIDATORS</td>\n <td class=\"code\"><pre>u'********************'</pre></td>\n </tr>\n \n <tr>\n <td>AUTH_USER_MODEL</td>\n <td class=\"code\"><pre>u'auth.User'</pre></td>\n </tr>\n \n <tr>\n <td>AUTO_REFRESH_INTERVAL</td>\n <td class=\"code\"><pre>60</pre></td>\n </tr>\n \n <tr>\n <td>CACHES</td>\n <td class=\"code\"><pre>{'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}}</pre></td>\n </tr>\n \n <tr>\n <td>CACHE_MIDDLEWARE_ALIAS</td>\n <td class=\"code\"><pre>u'default'</pre></td>\n </tr>\n \n <tr>\n <td>CACHE_MIDDLEWARE_KEY_PREFIX</td>\n <td class=\"code\"><pre>u'********************'</pre></td>\n </tr>\n \n <tr>\n <td>CACHE_MIDDLEWARE_SECONDS</td>\n <td class=\"code\"><pre>600</pre></td>\n </tr>\n \n <tr>\n <td>CARBONLINK_HASHING_KEYFUNC</td>\n <td class=\"code\"><pre>u'********************'</pre></td>\n </tr>\n \n <tr>\n <td>CARBONLINK_HASHING_TYPE</td>\n <td class=\"code\"><pre>'carbon_ch'</pre></td>\n </tr>\n \n <tr>\n <td>CARBONLINK_HOSTS</td>\n <td class=\"code\"><pre>['127.0.0.1:7002']</pre></td>\n </tr>\n \n <tr>\n <td>CARBONLINK_RETRY_DELAY</td>\n <td class=\"code\"><pre>15</pre></td>\n </tr>\n \n <tr>\n <td>CARBONLINK_TIMEOUT</td>\n <td class=\"code\"><pre>1.0</pre></td>\n </tr>\n \n <tr>\n <td>CARBON_METRIC_PREFIX</td>\n <td class=\"code\"><pre>'carbon'</pre></td>\n </tr>\n \n <tr>\n <td>CERES_DIR</td>\n <td class=\"code\"><pre>'/opt/graphite/storage/ceres/'</pre></td>\n </tr>\n \n <tr>\n <td>CLUSTER_SERVERS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>CONF_DIR</td>\n <td class=\"code\"><pre>'/opt/graphite/conf'</pre></td>\n </tr>\n \n <tr>\n <td>CSRF_COOKIE_AGE</td>\n <td class=\"code\"><pre>31449600</pre></td>\n </tr>\n \n <tr>\n <td>CSRF_COOKIE_DOMAIN</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>CSRF_COOKIE_HTTPONLY</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>CSRF_COOKIE_NAME</td>\n <td class=\"code\"><pre>u'csrftoken'</pre></td>\n </tr>\n \n <tr>\n <td>CSRF_COOKIE_PATH</td>\n <td class=\"code\"><pre>u'/'</pre></td>\n </tr>\n \n <tr>\n <td>CSRF_COOKIE_SECURE</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>CSRF_FAILURE_VIEW</td>\n <td class=\"code\"><pre>u'django.views.csrf.csrf_failure'</pre></td>\n </tr>\n \n <tr>\n <td>CSRF_HEADER_NAME</td>\n <td class=\"code\"><pre>u'HTTP_X_CSRFTOKEN'</pre></td>\n </tr>\n \n <tr>\n <td>CSRF_TRUSTED_ORIGINS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>CSRF_USE_SESSIONS</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>DASHBOARD_CONF</td>\n <td class=\"code\"><pre>'/opt/graphite/conf/dashboard.conf'</pre></td>\n </tr>\n \n <tr>\n <td>DASHBOARD_REQUIRE_AUTHENTICATION</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>DASHBOARD_REQUIRE_EDIT_GROUP</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>DASHBOARD_REQUIRE_PERMISSIONS</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>DATABASES</td>\n <td class=\"code\"><pre>{'default': {'ATOMIC_REQUESTS': False,\n 'AUTOCOMMIT': True,\n 'CONN_MAX_AGE': 0,\n 'ENGINE': 'django.db.backends.sqlite3',\n 'HOST': '',\n 'NAME': '/opt/graphite/storage/graphite.db',\n 'OPTIONS': {},\n 'PASSWORD': u'********************',\n 'PORT': '',\n 'TEST': {'CHARSET': None,\n 'COLLATION': None,\n 'MIRROR': None,\n 'NAME': None},\n 'TIME_ZONE': None,\n 'USER': ''}}</pre></td>\n </tr>\n \n <tr>\n <td>DATABASE_ROUTERS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>DATA_UPLOAD_MAX_MEMORY_SIZE</td>\n <td class=\"code\"><pre>2621440</pre></td>\n </tr>\n \n <tr>\n <td>DATA_UPLOAD_MAX_NUMBER_FIELDS</td>\n <td class=\"code\"><pre>1000</pre></td>\n </tr>\n \n <tr>\n <td>DATETIME_FORMAT</td>\n <td class=\"code\"><pre>u'N j, Y, P'</pre></td>\n </tr>\n \n <tr>\n <td>DATETIME_INPUT_FORMATS</td>\n <td class=\"code\"><pre>[u'%Y-%m-%d %H:%M:%S',\n u'%Y-%m-%d %H:%M:%S.%f',\n u'%Y-%m-%d %H:%M',\n u'%Y-%m-%d',\n u'%m/%d/%Y %H:%M:%S',\n u'%m/%d/%Y %H:%M:%S.%f',\n u'%m/%d/%Y %H:%M',\n u'%m/%d/%Y',\n u'%m/%d/%y %H:%M:%S',\n u'%m/%d/%y %H:%M:%S.%f',\n u'%m/%d/%y %H:%M',\n u'%m/%d/%y']</pre></td>\n </tr>\n \n <tr>\n <td>DATE_FORMAT</td>\n <td class=\"code\"><pre>'%m/%d'</pre></td>\n </tr>\n \n <tr>\n <td>DATE_INPUT_FORMATS</td>\n <td class=\"code\"><pre>[u'%Y-%m-%d',\n u'%m/%d/%Y',\n u'%m/%d/%y',\n u'%b %d %Y',\n u'%b %d, %Y',\n u'%d %b %Y',\n u'%d %b, %Y',\n u'%B %d %Y',\n u'%B %d, %Y',\n u'%d %B %Y',\n u'%d %B, %Y']</pre></td>\n </tr>\n \n <tr>\n <td>DEBUG</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n <tr>\n <td>DEBUG_PROPAGATE_EXCEPTIONS</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>DECIMAL_SEPARATOR</td>\n <td class=\"code\"><pre>u'.'</pre></td>\n </tr>\n \n <tr>\n <td>DEFAULT_CACHE_DURATION</td>\n <td class=\"code\"><pre>60</pre></td>\n </tr>\n \n <tr>\n <td>DEFAULT_CACHE_POLICY</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>DEFAULT_CHARSET</td>\n <td class=\"code\"><pre>u'utf-8'</pre></td>\n </tr>\n \n <tr>\n <td>DEFAULT_CONTENT_TYPE</td>\n <td class=\"code\"><pre>u'text/html'</pre></td>\n </tr>\n \n <tr>\n <td>DEFAULT_EXCEPTION_REPORTER_FILTER</td>\n <td class=\"code\"><pre>u'django.views.debug.SafeExceptionReporterFilter'</pre></td>\n </tr>\n \n <tr>\n <td>DEFAULT_FILE_STORAGE</td>\n <td class=\"code\"><pre>u'django.core.files.storage.FileSystemStorage'</pre></td>\n </tr>\n \n <tr>\n <td>DEFAULT_FROM_EMAIL</td>\n <td class=\"code\"><pre>u'webmaster@localhost'</pre></td>\n </tr>\n \n <tr>\n <td>DEFAULT_INDEX_TABLESPACE</td>\n <td class=\"code\"><pre>u''</pre></td>\n </tr>\n \n <tr>\n <td>DEFAULT_TABLESPACE</td>\n <td class=\"code\"><pre>u''</pre></td>\n </tr>\n \n <tr>\n <td>DEFAULT_XFILES_FACTOR</td>\n <td class=\"code\"><pre>0</pre></td>\n </tr>\n \n <tr>\n <td>DISALLOWED_USER_AGENTS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>DJANGO_VERSION</td>\n <td class=\"code\"><pre>(1, 11, 16, u'final', 0)</pre></td>\n </tr>\n \n <tr>\n <td>DOCUMENTATION_URL</td>\n <td class=\"code\"><pre>'https://graphite.readthedocs.io/en/latest/'</pre></td>\n </tr>\n \n <tr>\n <td>DOCUMENTATION_VERSION</td>\n <td class=\"code\"><pre>'latest'</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_BACKEND</td>\n <td class=\"code\"><pre>u'django.core.mail.backends.smtp.EmailBackend'</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_HOST</td>\n <td class=\"code\"><pre>u'localhost'</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_HOST_PASSWORD</td>\n <td class=\"code\"><pre>u'********************'</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_HOST_USER</td>\n <td class=\"code\"><pre>u''</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_PORT</td>\n <td class=\"code\"><pre>25</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_SSL_CERTFILE</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_SSL_KEYFILE</td>\n <td class=\"code\"><pre>u'********************'</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_SUBJECT_PREFIX</td>\n <td class=\"code\"><pre>u'[Django] '</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_TIMEOUT</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_USE_LOCALTIME</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_USE_SSL</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>EMAIL_USE_TLS</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>FETCH_TIMEOUT</td>\n <td class=\"code\"><pre>6.0</pre></td>\n </tr>\n \n <tr>\n <td>FILE_CHARSET</td>\n <td class=\"code\"><pre>u'utf-8'</pre></td>\n </tr>\n \n <tr>\n <td>FILE_UPLOAD_DIRECTORY_PERMISSIONS</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>FILE_UPLOAD_HANDLERS</td>\n <td class=\"code\"><pre>[u'django.core.files.uploadhandler.MemoryFileUploadHandler',\n u'django.core.files.uploadhandler.TemporaryFileUploadHandler']</pre></td>\n </tr>\n \n <tr>\n <td>FILE_UPLOAD_MAX_MEMORY_SIZE</td>\n <td class=\"code\"><pre>2621440</pre></td>\n </tr>\n \n <tr>\n <td>FILE_UPLOAD_PERMISSIONS</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>FILE_UPLOAD_TEMP_DIR</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>FIND_CACHE_DURATION</td>\n <td class=\"code\"><pre>300</pre></td>\n </tr>\n \n <tr>\n <td>FIND_TIMEOUT</td>\n <td class=\"code\"><pre>3.0</pre></td>\n </tr>\n \n <tr>\n <td>FIND_TOLERANCE</td>\n <td class=\"code\"><pre>600</pre></td>\n </tr>\n \n <tr>\n <td>FIRST_DAY_OF_WEEK</td>\n <td class=\"code\"><pre>0</pre></td>\n </tr>\n \n <tr>\n <td>FIXTURE_DIRS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>FLUSHRRDCACHED</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>FORCE_SCRIPT_NAME</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>FORMAT_MODULE_PATH</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>FORM_RENDERER</td>\n <td class=\"code\"><pre>u'django.forms.renderers.DjangoTemplates'</pre></td>\n </tr>\n \n <tr>\n <td>FUNCTION_PLUGINS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>GRAPHITE_ROOT</td>\n <td class=\"code\"><pre>'/opt/graphite'</pre></td>\n </tr>\n \n <tr>\n <td>GRAPHITE_WEB_APP_SETTINGS_LOADED</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n <tr>\n <td>GRAPHTEMPLATES_CONF</td>\n <td class=\"code\"><pre>'/opt/graphite/conf/graphTemplates.conf'</pre></td>\n </tr>\n \n <tr>\n <td>IGNORABLE_404_URLS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>INDEX_FILE</td>\n <td class=\"code\"><pre>'/opt/graphite/storage/index'</pre></td>\n </tr>\n \n <tr>\n <td>INSTALLED_APPS</td>\n <td class=\"code\"><pre>('graphite.account',\n 'graphite.browser',\n 'graphite.composer',\n 'graphite.dashboard',\n 'graphite.events',\n 'graphite.functions',\n 'graphite.metrics',\n 'graphite.render',\n 'graphite.tags',\n 'graphite.url_shortener',\n 'graphite.whitelist',\n 'django.contrib.auth',\n 'django.contrib.sessions',\n 'django.contrib.admin',\n 'django.contrib.contenttypes',\n 'django.contrib.staticfiles',\n 'tagging')</pre></td>\n </tr>\n \n <tr>\n <td>INTERNAL_IPS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>INTRACLUSTER_HTTPS</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>JAVASCRIPT_DEBUG</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>LANGUAGES</td>\n <td class=\"code\"><pre>[(u'af', u'Afrikaans'),\n (u'ar', u'Arabic'),\n (u'ast', u'Asturian'),\n (u'az', u'Azerbaijani'),\n (u'bg', u'Bulgarian'),\n (u'be', u'Belarusian'),\n (u'bn', u'Bengali'),\n (u'br', u'Breton'),\n (u'bs', u'Bosnian'),\n (u'ca', u'Catalan'),\n (u'cs', u'Czech'),\n (u'cy', u'Welsh'),\n (u'da', u'Danish'),\n (u'de', u'German'),\n (u'dsb', u'Lower Sorbian'),\n (u'el', u'Greek'),\n (u'en', u'English'),\n (u'en-au', u'Australian English'),\n (u'en-gb', u'British English'),\n (u'eo', u'Esperanto'),\n (u'es', u'Spanish'),\n (u'es-ar', u'Argentinian Spanish'),\n (u'es-co', u'Colombian Spanish'),\n (u'es-mx', u'Mexican Spanish'),\n (u'es-ni', u'Nicaraguan Spanish'),\n (u'es-ve', u'Venezuelan Spanish'),\n (u'et', u'Estonian'),\n (u'eu', u'Basque'),\n (u'fa', u'Persian'),\n (u'fi', u'Finnish'),\n (u'fr', u'French'),\n (u'fy', u'Frisian'),\n (u'ga', u'Irish'),\n (u'gd', u'Scottish Gaelic'),\n (u'gl', u'Galician'),\n (u'he', u'Hebrew'),\n (u'hi', u'Hindi'),\n (u'hr', u'Croatian'),\n (u'hsb', u'Upper Sorbian'),\n (u'hu', u'Hungarian'),\n (u'ia', u'Interlingua'),\n (u'id', u'Indonesian'),\n (u'io', u'Ido'),\n (u'is', u'Icelandic'),\n (u'it', u'Italian'),\n (u'ja', u'Japanese'),\n (u'ka', u'Georgian'),\n (u'kk', u'Kazakh'),\n (u'km', u'Khmer'),\n (u'kn', u'Kannada'),\n (u'ko', u'Korean'),\n (u'lb', u'Luxembourgish'),\n (u'lt', u'Lithuanian'),\n (u'lv', u'Latvian'),\n (u'mk', u'Macedonian'),\n (u'ml', u'Malayalam'),\n (u'mn', u'Mongolian'),\n (u'mr', u'Marathi'),\n (u'my', u'Burmese'),\n (u'nb', u'Norwegian Bokm\\xe5l'),\n (u'ne', u'Nepali'),\n (u'nl', u'Dutch'),\n (u'nn', u'Norwegian Nynorsk'),\n (u'os', u'Ossetic'),\n (u'pa', u'Punjabi'),\n (u'pl', u'Polish'),\n (u'pt', u'Portuguese'),\n (u'pt-br', u'Brazilian Portuguese'),\n (u'ro', u'Romanian'),\n (u'ru', u'Russian'),\n (u'sk', u'Slovak'),\n (u'sl', u'Slovenian'),\n (u'sq', u'Albanian'),\n (u'sr', u'Serbian'),\n (u'sr-latn', u'Serbian Latin'),\n (u'sv', u'Swedish'),\n (u'sw', u'Swahili'),\n (u'ta', u'Tamil'),\n (u'te', u'Telugu'),\n (u'th', u'Thai'),\n (u'tr', u'Turkish'),\n (u'tt', u'Tatar'),\n (u'udm', u'Udmurt'),\n (u'uk', u'Ukrainian'),\n (u'ur', u'Urdu'),\n (u'vi', u'Vietnamese'),\n (u'zh-hans', u'Simplified Chinese'),\n (u'zh-hant', u'Traditional Chinese')]</pre></td>\n </tr>\n \n <tr>\n <td>LANGUAGES_BIDI</td>\n <td class=\"code\"><pre>[u'he', u'ar', u'fa', u'ur']</pre></td>\n </tr>\n \n <tr>\n <td>LANGUAGE_CODE</td>\n <td class=\"code\"><pre>'en-us'</pre></td>\n </tr>\n \n <tr>\n <td>LANGUAGE_COOKIE_AGE</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>LANGUAGE_COOKIE_DOMAIN</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>LANGUAGE_COOKIE_NAME</td>\n <td class=\"code\"><pre>u'django_language'</pre></td>\n </tr>\n \n <tr>\n <td>LANGUAGE_COOKIE_PATH</td>\n <td class=\"code\"><pre>u'/'</pre></td>\n </tr>\n \n <tr>\n <td>LDAP_BASE_PASS</td>\n <td class=\"code\"><pre>u'********************'</pre></td>\n </tr>\n \n <tr>\n <td>LDAP_BASE_USER</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>LDAP_PORT</td>\n <td class=\"code\"><pre>389</pre></td>\n </tr>\n \n <tr>\n <td>LDAP_SEARCH_BASE</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>LDAP_SERVER</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>LDAP_URI</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>LDAP_USER_DN_TEMPLATE</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>LDAP_USER_QUERY</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>LDAP_USE_TLS</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>LEGEND_MAX_ITEMS</td>\n <td class=\"code\"><pre>10</pre></td>\n </tr>\n \n <tr>\n <td>LOCALE_PATHS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>LOGGING</td>\n <td class=\"code\"><pre>{}</pre></td>\n </tr>\n \n <tr>\n <td>LOGGING_CONFIG</td>\n <td class=\"code\"><pre>u'logging.config.dictConfig'</pre></td>\n </tr>\n \n <tr>\n <td>LOGIN_REDIRECT_URL</td>\n <td class=\"code\"><pre>u'/accounts/profile/'</pre></td>\n </tr>\n \n <tr>\n <td>LOGIN_URL</td>\n <td class=\"code\"><pre>u'/account/login'</pre></td>\n </tr>\n \n <tr>\n <td>LOGOUT_REDIRECT_URL</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>LOG_CACHE_PERFORMANCE</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>LOG_DIR</td>\n <td class=\"code\"><pre>'/opt/graphite/storage/log/webapp'</pre></td>\n </tr>\n \n <tr>\n <td>LOG_FILE_CACHE</td>\n <td class=\"code\"><pre>'cache.log'</pre></td>\n </tr>\n \n <tr>\n <td>LOG_FILE_EXCEPTION</td>\n <td class=\"code\"><pre>'exception.log'</pre></td>\n </tr>\n \n <tr>\n <td>LOG_FILE_INFO</td>\n <td class=\"code\"><pre>'info.log'</pre></td>\n </tr>\n \n <tr>\n <td>LOG_FILE_RENDERING</td>\n <td class=\"code\"><pre>'rendering.log'</pre></td>\n </tr>\n \n <tr>\n <td>LOG_RENDERING_PERFORMANCE</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>LOG_ROTATION</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n <tr>\n <td>LOG_ROTATION_COUNT</td>\n <td class=\"code\"><pre>1</pre></td>\n </tr>\n \n <tr>\n <td>MANAGERS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>MAX_FETCH_RETRIES</td>\n <td class=\"code\"><pre>2</pre></td>\n </tr>\n \n <tr>\n <td>MAX_TAG_LENGTH</td>\n <td class=\"code\"><pre>50</pre></td>\n </tr>\n \n <tr>\n <td>MEDIA_ROOT</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>MEDIA_URL</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>MEMCACHE_HOSTS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>MEMCACHE_KEY_PREFIX</td>\n <td class=\"code\"><pre>u'********************'</pre></td>\n </tr>\n \n <tr>\n <td>MEMCACHE_OPTIONS</td>\n <td class=\"code\"><pre>{}</pre></td>\n </tr>\n \n <tr>\n <td>MESSAGE_STORAGE</td>\n <td class=\"code\"><pre>u'django.contrib.messages.storage.fallback.FallbackStorage'</pre></td>\n </tr>\n \n <tr>\n <td>METRICS_FIND_FAILURE_THRESHOLD</td>\n <td class=\"code\"><pre>inf</pre></td>\n </tr>\n \n <tr>\n <td>METRICS_FIND_WARNING_THRESHOLD</td>\n <td class=\"code\"><pre>inf</pre></td>\n </tr>\n \n <tr>\n <td>MIDDLEWARE</td>\n <td class=\"code\"><pre>('graphite.middleware.LogExceptionsMiddleware',\n 'django.middleware.common.CommonMiddleware',\n 'django.middleware.gzip.GZipMiddleware',\n 'django.contrib.sessions.middleware.SessionMiddleware',\n 'django.contrib.auth.middleware.AuthenticationMiddleware',\n 'django.contrib.messages.middleware.MessageMiddleware',\n 'whitenoise.middleware.WhiteNoiseMiddleware')</pre></td>\n </tr>\n \n <tr>\n <td>MIDDLEWARE_CLASSES</td>\n <td class=\"code\"><pre>[u'django.middleware.common.CommonMiddleware',\n u'django.middleware.csrf.CsrfViewMiddleware']</pre></td>\n </tr>\n \n <tr>\n <td>MIGRATION_MODULES</td>\n <td class=\"code\"><pre>{}</pre></td>\n </tr>\n \n <tr>\n <td>MONTH_DAY_FORMAT</td>\n <td class=\"code\"><pre>u'F j'</pre></td>\n </tr>\n \n <tr>\n <td>NUMBER_GROUPING</td>\n <td class=\"code\"><pre>0</pre></td>\n </tr>\n \n <tr>\n <td>PASSWORD_HASHERS</td>\n <td class=\"code\"><pre>u'********************'</pre></td>\n </tr>\n \n <tr>\n <td>PASSWORD_RESET_TIMEOUT_DAYS</td>\n <td class=\"code\"><pre>u'********************'</pre></td>\n </tr>\n \n <tr>\n <td>POOL_MAX_WORKERS</td>\n <td class=\"code\"><pre>10</pre></td>\n </tr>\n \n <tr>\n <td>PREPEND_WWW</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_BUFFER_SIZE</td>\n <td class=\"code\"><pre>1048576</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_EXCLUDE_LOCAL</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_FETCH_TIMEOUT</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_FIND_TIMEOUT</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_RENDERING</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_RENDER_CONNECT_TIMEOUT</td>\n <td class=\"code\"><pre>1.0</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_RETRY_DELAY</td>\n <td class=\"code\"><pre>60.0</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_STORE_FORWARD_HEADERS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_STORE_MERGE_RESULTS</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_STORE_USE_POST</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_USER_BACKEND</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>REMOTE_USER_MIDDLEWARE</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>RENDERING_HOSTS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>REPLICATION_FACTOR</td>\n <td class=\"code\"><pre>1</pre></td>\n </tr>\n \n <tr>\n <td>ROOT_URLCONF</td>\n <td class=\"code\"><pre>'graphite.urls'</pre></td>\n </tr>\n \n <tr>\n <td>RRD_CF</td>\n <td class=\"code\"><pre>'AVERAGE'</pre></td>\n </tr>\n \n <tr>\n <td>RRD_DIR</td>\n <td class=\"code\"><pre>'/opt/graphite/storage/rrd/'</pre></td>\n </tr>\n \n <tr>\n <td>SECRET_KEY</td>\n <td class=\"code\"><pre>u'********************'</pre></td>\n </tr>\n \n <tr>\n <td>SECURE_BROWSER_XSS_FILTER</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>SECURE_CONTENT_TYPE_NOSNIFF</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>SECURE_HSTS_INCLUDE_SUBDOMAINS</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>SECURE_HSTS_PRELOAD</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>SECURE_HSTS_SECONDS</td>\n <td class=\"code\"><pre>0</pre></td>\n </tr>\n \n <tr>\n <td>SECURE_PROXY_SSL_HEADER</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>SECURE_REDIRECT_EXEMPT</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>SECURE_SSL_HOST</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>SECURE_SSL_REDIRECT</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>SERVER_EMAIL</td>\n <td class=\"code\"><pre>u'root@localhost'</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_CACHE_ALIAS</td>\n <td class=\"code\"><pre>u'default'</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_COOKIE_AGE</td>\n <td class=\"code\"><pre>1209600</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_COOKIE_DOMAIN</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_COOKIE_HTTPONLY</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_COOKIE_NAME</td>\n <td class=\"code\"><pre>u'sessionid'</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_COOKIE_PATH</td>\n <td class=\"code\"><pre>u'/'</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_COOKIE_SECURE</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_ENGINE</td>\n <td class=\"code\"><pre>u'django.contrib.sessions.backends.db'</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_EXPIRE_AT_BROWSER_CLOSE</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_FILE_PATH</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_SAVE_EVERY_REQUEST</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>SESSION_SERIALIZER</td>\n <td class=\"code\"><pre>u'django.contrib.sessions.serializers.JSONSerializer'</pre></td>\n </tr>\n \n <tr>\n <td>SETTINGS_MODULE</td>\n <td class=\"code\"><pre>'graphite.local_settings'</pre></td>\n </tr>\n \n <tr>\n <td>SHORT_DATETIME_FORMAT</td>\n <td class=\"code\"><pre>u'm/d/Y P'</pre></td>\n </tr>\n \n <tr>\n <td>SHORT_DATE_FORMAT</td>\n <td class=\"code\"><pre>u'm/d/Y'</pre></td>\n </tr>\n \n <tr>\n <td>SIGNING_BACKEND</td>\n <td class=\"code\"><pre>u'django.core.signing.TimestampSigner'</pre></td>\n </tr>\n \n <tr>\n <td>SILENCED_SYSTEM_CHECKS</td>\n <td class=\"code\"><pre>['urls.W002']</pre></td>\n </tr>\n \n <tr>\n <td>SMTP_SERVER</td>\n <td class=\"code\"><pre>'localhost'</pre></td>\n </tr>\n \n <tr>\n <td>STANDARD_DIRS</td>\n <td class=\"code\"><pre>['/opt/graphite/storage/whisper/']</pre></td>\n </tr>\n \n <tr>\n <td>STATICFILES_DIRS</td>\n <td class=\"code\"><pre>('/opt/graphite/webapp/content',)</pre></td>\n </tr>\n \n <tr>\n <td>STATICFILES_FINDERS</td>\n <td class=\"code\"><pre>[u'django.contrib.staticfiles.finders.FileSystemFinder',\n u'django.contrib.staticfiles.finders.AppDirectoriesFinder']</pre></td>\n </tr>\n \n <tr>\n <td>STATICFILES_STORAGE</td>\n <td class=\"code\"><pre>u'django.contrib.staticfiles.storage.StaticFilesStorage'</pre></td>\n </tr>\n \n <tr>\n <td>STATIC_ROOT</td>\n <td class=\"code\"><pre>'/opt/graphite/static'</pre></td>\n </tr>\n \n <tr>\n <td>STATIC_URL</td>\n <td class=\"code\"><pre>'/static/'</pre></td>\n </tr>\n \n <tr>\n <td>STORAGE_DIR</td>\n <td class=\"code\"><pre>'/opt/graphite/storage'</pre></td>\n </tr>\n \n <tr>\n <td>STORAGE_FINDERS</td>\n <td class=\"code\"><pre>('graphite.finders.remote.RemoteFinder',\n 'graphite.finders.standard.StandardFinder')</pre></td>\n </tr>\n \n <tr>\n <td>STORE_FAIL_ON_ERROR</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>TAGDB</td>\n <td class=\"code\"><pre>'graphite.tags.localdatabase.LocalDatabaseTagDB'</pre></td>\n </tr>\n \n <tr>\n <td>TAGDB_AUTOCOMPLETE_LIMIT</td>\n <td class=\"code\"><pre>100</pre></td>\n </tr>\n \n <tr>\n <td>TAGDB_CACHE_DURATION</td>\n <td class=\"code\"><pre>60</pre></td>\n </tr>\n \n <tr>\n <td>TAGDB_HTTP_AUTOCOMPLETE</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>TAGDB_HTTP_PASSWORD</td>\n <td class=\"code\"><pre>u'********************'</pre></td>\n </tr>\n \n <tr>\n <td>TAGDB_HTTP_URL</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>TAGDB_HTTP_USER</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>TAGDB_REDIS_DB</td>\n <td class=\"code\"><pre>0</pre></td>\n </tr>\n \n <tr>\n <td>TAGDB_REDIS_HOST</td>\n <td class=\"code\"><pre>'localhost'</pre></td>\n </tr>\n \n <tr>\n <td>TAGDB_REDIS_PORT</td>\n <td class=\"code\"><pre>6379</pre></td>\n </tr>\n \n <tr>\n <td>TEMPLATES</td>\n <td class=\"code\"><pre>[{'APP_DIRS': True,\n 'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'DIRS': ['/opt/graphite/webapp/graphite/templates'],\n 'OPTIONS': {'context_processors': ['django.contrib.auth.context_processors.auth',\n 'django.template.context_processors.debug',\n 'django.template.context_processors.i18n',\n 'django.template.context_processors.media',\n 'django.template.context_processors.static',\n 'django.template.context_processors.tz',\n 'django.contrib.messages.context_processors.messages']}}]</pre></td>\n </tr>\n \n <tr>\n <td>TEMPLATE_DEBUG</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>TEST_NON_SERIALIZED_APPS</td>\n <td class=\"code\"><pre>[]</pre></td>\n </tr>\n \n <tr>\n <td>TEST_RUNNER</td>\n <td class=\"code\"><pre>u'django.test.runner.DiscoverRunner'</pre></td>\n </tr>\n \n <tr>\n <td>THOUSAND_SEPARATOR</td>\n <td class=\"code\"><pre>u','</pre></td>\n </tr>\n \n <tr>\n <td>TIME_FORMAT</td>\n <td class=\"code\"><pre>u'P'</pre></td>\n </tr>\n \n <tr>\n <td>TIME_INPUT_FORMATS</td>\n <td class=\"code\"><pre>[u'%H:%M:%S', u'%H:%M:%S.%f', u'%H:%M']</pre></td>\n </tr>\n \n <tr>\n <td>TIME_ZONE</td>\n <td class=\"code\"><pre>'Europe/Paris'</pre></td>\n </tr>\n \n <tr>\n <td>URL_PREFIX</td>\n <td class=\"code\"><pre>''</pre></td>\n </tr>\n \n <tr>\n <td>USE_ETAGS</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>USE_I18N</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n <tr>\n <td>USE_L10N</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>USE_LDAP_AUTH</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>USE_REMOTE_USER_AUTHENTICATION</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>USE_THOUSAND_SEPARATOR</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>USE_TZ</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n <tr>\n <td>USE_WORKER_POOL</td>\n <td class=\"code\"><pre>True</pre></td>\n </tr>\n \n <tr>\n <td>USE_X_FORWARDED_HOST</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>USE_X_FORWARDED_PORT</td>\n <td class=\"code\"><pre>False</pre></td>\n </tr>\n \n <tr>\n <td>WEBAPP_DIR</td>\n <td class=\"code\"><pre>'/opt/graphite/webapp'</pre></td>\n </tr>\n \n <tr>\n <td>WEBAPP_VERSION</td>\n <td class=\"code\"><pre>'1.2.0-dev'</pre></td>\n </tr>\n \n <tr>\n <td>WEB_DIR</td>\n <td class=\"code\"><pre>'/opt/graphite/webapp/graphite'</pre></td>\n </tr>\n \n <tr>\n <td>WHISPER_DIR</td>\n <td class=\"code\"><pre>'/opt/graphite/storage/whisper/'</pre></td>\n </tr>\n \n <tr>\n <td>WHITELIST_FILE</td>\n <td class=\"code\"><pre>'/opt/graphite/storage/lists/whitelist'</pre></td>\n </tr>\n \n <tr>\n <td>WSGI_APPLICATION</td>\n <td class=\"code\"><pre>None</pre></td>\n </tr>\n \n <tr>\n <td>X_FRAME_OPTIONS</td>\n <td class=\"code\"><pre>u'SAMEORIGIN'</pre></td>\n </tr>\n \n <tr>\n <td>YEAR_MONTH_FORMAT</td>\n <td class=\"code\"><pre>u'F Y'</pre></td>\n </tr>\n \n </tbody>\n </table>\n\n</div>\n\n <div id=\"explanation\">\n <p>\n You're seeing this error because you have <code>DEBUG = True</code> in your\n Django settings file. Change that to <code>False</code>, and Django will\n display a standard page generated by the handler for this status code.\n </p>\n </div>\n\n</body>\n</html>\n",
"message": "Internal Server Error"
}
}
I get the following exception in graphite-web :
Traceback (most recent call last):
File "/usr/lib64/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/graphite/webapp/graphite/render/views.py", line 118, in renderView
data.extend(evaluateTarget(requestContext, targets))
File "/opt/graphite/webapp/graphite/render/evaluator.py", line 28, in evaluateTarget
result = evaluateTokens(requestContext, target)
File "/opt/graphite/webapp/graphite/render/evaluator.py", line 57, in evaluateTokens
return evaluateTokens(requestContext, tokens.expression, replacements)
File "/opt/graphite/webapp/graphite/render/evaluator.py", line 93, in evaluateTokens
return func(requestContext, *args, **kwargs)
File "/opt/graphite/webapp/graphite/render/functions.py", line 5210, in timeFunction
delta = timedelta(seconds=step)
TypeError: unsupported type for timedelta seconds component: unicode
I gave one parameter which is the one given in the exemple from Graphite's documentation ("The.time.series") and also tried with 2 parameters, adding the default "60" as step. No special character.
@blesaffre : According to error you calling function like timeFunction(stats.sets.stats.kamailio.marek.customer..registration.....200.count, '"The.time.series"')
, i.e. providing it with second parameter string "The.time.series".
According to documentation, the second parameter should be step
and it should be integer
, not string.
Yes I know that, but that is the problem, because I am calling the function like that : timeFunction("The.time.series") and not as it is displayed in the error.
In the error, the first parameter you see is the metric I apply the function to, not the parameter I give to it.
@blesaffre : Ah, I know what's going on.
In Graphite function is accepting time series and usually returns time series - https://graphite.readthedocs.io/en/latest/functions.html
You can chain function calls, but normally you doing that directly. E.g. if you have series stats.sets.stats.kamailio.marek.customer.registration.200.count
, and you need to apply e.g. time()
and alias()
function, you need to do it like this:
alias(time(stats.sets.stats.kamailio.marek.customer.registration.200.count),'blah')
Grafana assuming that you know how Graphite functions work, so, it was hiding that semantic in the user interface, showing that you applying chain of functions to metric name. But in reality, it's good old Graphite under the hood, and first argument is always coming from metric name or previous function call.
You can check real function call if you toggle edit mode (three stripes button -> Toggle Edit mode) or go to Query Inspector and check request.data (but then you need to apply some url decoder).
So, in your case you just need to call timeFunction
function, without parameters. "The.time.series" in the example is only example of series name.
Ah, I'm wrong. Indeed, time()
function IS NOT accepting time series as parameter, so, you can't (and shouldn't) include it in function call chain later. You can use it only as first function in the call chain.
Maybe it will be easier if you describe what are you trying to achieve?
Awesome I didn't know about that.
It seems to work however. Not exactly what I want but I need to change a few things.
What I am trying to achieve is to get the time at which 2 metrics are received to compare delay between them.
So right now what I get, using your example "alias(time(stats.sets.stats.kamailio.marek.customer.registration.200.count),'blah')" and replacing "blah" with what I want to be displayed, is the timestamp of the metric given to time().
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
I am trying to get the timestamp of a value using timeFunction, which works in Graphite-Web, but gives me an internal server error in Grafana.
I am using the latest versions of Graphite and Grafana on RHEL 7.
In the network tab, it says that I passed 4 arguments to the function and it takes 3 at most, while it actually takes 2 at most and I passed 1...