summaryrefslogtreecommitdiffstats
path: root/python.d/phpfpm.chart.py
diff options
context:
space:
mode:
authorClint Armstrong <clint@clintarmstrong.net>2016-09-21 14:20:53 -0400
committerClint Armstrong <clint@clintarmstrong.net>2016-09-21 14:20:53 -0400
commit9d3639f5a8d847eaf59463f6a88893231e3674d0 (patch)
tree5b9200ff8b865874fe4d0207eddd3c06e4d2d5ee /python.d/phpfpm.chart.py
parent534303bfd4bd8778b66bd8355e1c2dffb05f7e47 (diff)
keep backwards compatible and support json without full
Diffstat (limited to 'python.d/phpfpm.chart.py')
-rwxr-xr-xpython.d/phpfpm.chart.py60
1 files changed, 36 insertions, 24 deletions
diff --git a/python.d/phpfpm.chart.py b/python.d/phpfpm.chart.py
index 7f2da9ccb7..d4168cc115 100755
--- a/python.d/phpfpm.chart.py
+++ b/python.d/phpfpm.chart.py
@@ -15,7 +15,7 @@ retries = 60
# 'update_every': update_every,
# 'retries': retries,
# 'priority': priority,
-# 'url': 'http://localhost/status'
+# 'url': 'http://localhost/status?full&json'
# }}
# charts order (can be overridden if you want less charts, or different order)
@@ -88,30 +88,42 @@ class Service(UrlService):
except AttributeError:
return None
- try:
- raw_json = json.loads(raw)
- except ValueError:
- return None
-
- data = {self.assignment[k]: v for k, v in raw_json.items() if k in self.assignment}
-
- c = 0
- for proc in raw_json['processes']:
- if proc['state'] != 'Idle':
- continue
- c += 1
- for k, v in self.proc_assignment.items():
- d = proc[k]
- if v == 'ReqDur':
- d = d/1000
- if v == 'ReqMem':
- d = d/1024
- if 'max' + v not in data or data['max' + v] < d:
- data['max' + v] = d
- if 'avg' + v not in data:
- data['avg' + v] = 0
- data['avg' + v] = (data['avg' + v] + d) / c
+ if '?json' in self.url or '&json' in self.url:
+ try:
+ raw_json = json.loads(raw)
+ except ValueError:
+ return None
+ data = {self.assignment[k]: v for k, v in raw_json.items() if k in self.assignment}
+ if '&full' in self.url or '?full' in self.url:
+ c = 0
+ for proc in raw_json['processes']:
+ if proc['state'] != 'Idle':
+ continue
+ c += 1
+ for k, v in self.proc_assignment.items():
+ d = proc[k]
+ if v == 'ReqDur':
+ d = d/1000
+ if v == 'ReqMem':
+ d = d/1024
+ if 'max' + v not in data or data['max' + v] < d:
+ data['max' + v] = d
+ if 'avg' + v not in data:
+ data['avg' + v] = 0
+ data['avg' + v] = (data['avg' + v] + d) / c
+ if len(data) == 0:
+ return None
+ return data
+ raw = raw.split('\n')
+ data = {}
+ for row in raw:
+ tmp = row.split(":")
+ if str(tmp[0]) in self.assignment:
+ try:
+ data[self.assignment[tmp[0]]] = int(tmp[1])
+ except (IndexError, ValueError):
+ pass
if len(data) == 0:
return None
return data