@cryptotaxi247 / netdata-1 / commits / 826a34b7d

web_log: bugfix (squid)

Ilya committed Jun 14, 2017 at 10:31 UTC 826a34b7dba0175d51b15e57b652ad08631318ab
1 file changed +29 -13
python.d/web_log.chart.py
+29 -13
@@ -7,6 +7,7 @@ from os import access, R_OK
7 from os.path import getsize
8 from collections import namedtuple, defaultdict
9 from copy import deepcopy
10 +
11 try:
12 from itertools import filterfalse
13 except ImportError:
@@ -620,7 +621,7 @@ class Web(Mixin):
621 return time * 1000000
622
623 r_regex = [apache_ext_insert, apache_ext_append,
623 - nginx_ext2_insert, nginx_ext_insert, nginx_ext_append,
624 + nginx_ext2_insert, nginx_ext_insert, nginx_ext_append,
625 default]
626 r_function = [func_usec, func_usec, func_sec, func_sec, func_sec, func_usec]
627 regex_function = zip(r_regex, r_function)
@@ -835,16 +836,23 @@ class Squid(Mixin):
836 if not match:
837 self.error('Regex not matches (%s)' % self.storage['regex'].pattern)
838 return False
838 - self.storage['dynamic'] = {'squid_code': {'chart': 'squid_code',
839 - 'func': None},
840 - 'http_code': {'chart': 'squid_detailed_response_codes',
841 - 'func': None},
842 - 'hier_code': {'chart': 'squid_hier_code',
843 - 'func': lambda v: v.replace('HIER_', '')},
844 - 'method': {'chart': 'squid_method',
845 - 'func': None},
846 - 'mime_type': {'chart': 'squid_mime_type',
847 - 'func': lambda v: v.split('/')[0]}}
839 + self.storage['dynamic'] = {
840 + 'http_code':
841 + {'chart': 'squid_detailed_response_codes',
842 + 'func_dim_id': None,
843 + 'func_dim': None},
844 + 'hier_code': {
845 + 'chart': 'squid_hier_code',
846 + 'func_dim_id': None,
847 + 'func_dim': lambda v: v.replace('HIER_', '')},
848 + 'method': {
849 + 'chart': 'squid_method',
850 + 'func_dim_id': None,
851 + 'func_dim': None},
852 + 'mime_type': {
853 + 'chart': 'squid_mime_type',
854 + 'func_dim_id': lambda v: v.split('/')[0],
855 + 'func_dim': None}}
856 return True
857
858 def get_data(self, raw_data=None):
@@ -887,10 +895,12 @@ class Squid(Mixin):
895 for key, values in self.storage['dynamic'].items():
896 if match[key] == '-':
897 continue
890 - dimension_id = values['func'](match[key]) if values['func'] else match[key]
898 + dimension_id = values['func_dim_id'](match[key]) if values['func_dim_id'] else match[key]
899 if dimension_id not in self.data:
900 + dimension = values['func_dim'](match[key]) if values['func_dim'] else dimension_id
901 self.add_new_dimension(dimension_id=dimension_id,
893 - chart_key=values['chart'])
902 + chart_key=values['chart'],
903 + dimension=dimension)
904 self.data[dimension_id] += 1
905 else:
906 self.data['unmatched'] += 1
@@ -923,6 +933,11 @@ class Squid(Mixin):
933 :param code: str: squid response code. Ex.: 'TCP_MISS', 'TCP_MISS_ABORTED'
934 :return:
935 """
936 + if code not in self.data:
937 + self.add_new_dimension(dimension_id=code, chart_key='squid_code')
938 + self.data[code] += 1
939 + if '_' not in code:
940 + return
941 for tag in code.split('_'):
942 try:
943 chart_key = SQUID_CODES[tag]
@@ -1002,6 +1017,7 @@ def check_patterns(string, dimension_regex_dict):
1017 def func_search(pattern):
1018 def closure(v):
1019 return pattern.search(v)
1020 +
1021 return closure
1022
1023 for dimension, regex in dimension_regex_dict.items():