]> arthur.barton.de Git - netdata.git/blobdiff - python.d/squid.chart.py
Merge pull request #1940 from l2isbad/elasticsearch_plugin_fixes
[netdata.git] / python.d / squid.chart.py
index 6b9edaf5f88ab2149030b11224e223f78233a3fe..e9e8f1d08bbb1f263136a3e59ff0f59d5960d134 100644 (file)
@@ -15,27 +15,27 @@ ORDER = ['clients_net', 'clients_requests', 'servers_net', 'servers_requests']
 
 CHARTS = {
     'clients_net': {
-        'options': [None, "Squid Client Bandwidth", "kilobits/s", "clients", "squid.clients.net", "area"],
+        'options': [None, "Squid Client Bandwidth", "kilobits/s", "clients", "squid.clients_net", "area"],
         'lines': [
             ["client_http_kbytes_in", "in", "incremental", 8, 1],
             ["client_http_kbytes_out", "out", "incremental", -8, 1],
             ["client_http_hit_kbytes_out", "hits", "incremental", -8, 1]
         ]},
     'clients_requests': {
-        'options': [None, "Squid Client Requests", "requests/s", "clients", "squid.clients.requests", 'line'],
+        'options': [None, "Squid Client Requests", "requests/s", "clients", "squid.clients_requests", 'line'],
         'lines': [
             ["client_http_requests", "requests", "incremental"],
             ["client_http_hits", "hits", "incremental"],
             ["client_http_errors", "errors", "incremental", -1, 1]
         ]},
     'servers_net': {
-        'options': [None, "Squid Server Bandwidth", "kilobits/s", "servers", "squid.servers.net", "area"],
+        'options': [None, "Squid Server Bandwidth", "kilobits/s", "servers", "squid.servers_net", "area"],
         'lines': [
             ["server_all_kbytes_in", "in", "incremental", 8, 1],
             ["server_all_kbytes_out", "out", "incremental", -8, 1]
         ]},
     'servers_requests': {
-        'options': [None, "Squid Server Requests", "requests/s", "servers", "squid.servers.requests", 'line'],
+        'options': [None, "Squid Server Requests", "requests/s", "servers", "squid.servers_requests", 'line'],
         'lines': [
             ["server_all_requests", "requests", "incremental"],
             ["server_all_errors", "errors", "incremental", -1, 1]
@@ -58,20 +58,25 @@ class Service(SocketService):
         Get data via http request
         :return: dict
         """
+        response = self._get_raw_data()
+
         data = {}
         try:
             raw = ""
-            for tmp in self._get_raw_data().split('\r\n'):
+            for tmp in response.split('\r\n'):
                 if tmp.startswith("sample_time"):
                     raw = tmp
                     break
+
             if raw.startswith('<'):
                 self.error("invalid data received")
                 return None
+
             for row in raw.split('\n'):
                 if row.startswith(("client", "server.all")):
                     tmp = row.split("=")
                     data[tmp[0].replace('.', '_').strip(' ')] = int(tmp[1])
+
         except (ValueError, AttributeError, TypeError):
             self.error("invalid data received")
             return None
@@ -83,31 +88,19 @@ class Service(SocketService):
             return data
 
     def _check_raw_data(self, data):
-        if "Connection: keep-alive" in data[:1024]:
+        header = data[:1024].lower()
+
+        if "connection: keep-alive" in header:
             self._keep_alive = True
         else:
             self._keep_alive = False
 
-        if "client" in data and "server.all" in data:
+        if data[-7:] == "\r\n0\r\n\r\n" and "transfer-encoding: chunked" in header:  # HTTP/1.1 response
+            self.debug("received full response from squid")
             return True
-        else:
-            return False
-    #     # TODO write some parser of "Transfer-Encoding: chunked"
-    #     if "Transfer-Encoding: chunked" in data[:1024]:
-    #         data = data[self.__last:]
-    #
-    #
-    #     print(data)
-    #     import time
-    #     time.sleep(10)
-    #     return False
-    #     supposed = 0
-    #     if length >= supposed:
-    #         return True
-    #     else:
-    #         return False
-    #
-    #     return False
+
+        self.debug("waiting more data from squid")
+        return False
 
     def check(self):
         """