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():