]> arthur.barton.de Git - netdata.git/commitdiff
add proxy-auth and proxy-acc charts; make all charts except auth optional and disable...
authorlgz <lgz@loled2>
Tue, 20 Dec 2016 14:31:28 +0000 (23:31 +0900)
committerlgz <lgz@loled2>
Tue, 20 Dec 2016 14:31:28 +0000 (23:31 +0900)
conf.d/python.d/freeradius.conf
python.d/freeradius.chart.py

index 79e6cf26f69b3caa7a61f8ff33d6b337ee93c4f4..b2c8abf6b10f94f2cf7bd0ffb1dab3f6219cfaa7 100644 (file)
 #
 # Additionally to the above, freeradius also supports the following:
 #
-#     host: 'host'       # ip address or hostname
-#     port: 'port'       # port on which freeradius server listen (type = status)
-#     secret: 'secret'
+#     host: 'host'                     # Default: 'localhost'. Server ip address or hostname.
+#     port: 'port'                     # Default: '18121'. Port on which freeradius server listen (type = status).
+#     secret: 'secret'                 # Default: 'adminsecret'. 
+#     acct: True/False                 # Defalt: False. Freeradius accounting statistics.
+#     proxy_auth: True/False           # Default: False. Freeradius proxy authentication statistics. 
+#     proxy_acct: True/False           # Default: False. Freeradius proxy accounting statistics.
 #
 # ------------------------------------------------------------------------------------------------------------------
 # Freeradius server configuration:
@@ -78,3 +81,6 @@ local:
  host: 'localhost'
  port: '18121'
  secret: 'adminsecret'
+#acct: False
+#proxy_auth: False
+#proxy_acct: False
index cbf3be4e9963a30d597bbbdb297e0f51d3316fc8..b047f37697a53da3c040cf8dc4b384a2a68c02cb 100644 (file)
@@ -10,11 +10,11 @@ from subprocess import Popen, PIPE
 # default module values (can be overridden per job in `config`)
 priority = 60000
 retries = 60
-update_every = 10
-directories = ['/bin/', '/usr/bin/', '/sbin/', '/usr/sbin/']
+update_every = 15
+directories = ['/bin/', '/usr/bin/', '/sbin', '/usr/sbin/']
 
 # charts order (can be overridden if you want less charts, or different order)
-ORDER = ['authentication', 'accounting']
+ORDER = ['authentication', 'accounting', 'proxy-auth', 'proxy-acct']
 
 CHARTS = {
     'authentication': {
@@ -32,21 +32,39 @@ CHARTS = {
             ['acct-dropped-requests', None, 'incremental'], ['acct-duplicate-requests', None, 'incremental'],
             ['acct-invalid-requests', None, 'incremental'], ['acct-malformed-requests', None, 'incremental'],
             ['acct-unknown-types', None, 'incremental']
+        ]},
+    'proxy-auth': {
+        'options': [None, "Proxy Authentication", "packets/s", 'Authentication', 'freerad.proxy.auth', 'line'],
+        'lines': [
+            ['proxy-access-accepts', None, 'incremental'], ['proxy-access-rejects', None, 'incremental'],
+            ['proxy-auth-dropped-requests', None, 'incremental'], ['proxy-auth-duplicate-requests', None, 'incremental'],
+            ['proxy-auth-invalid-requests', None, 'incremental'], ['proxy-auth-malformed-requests', None, 'incremental'],
+            ['proxy-auth-unknown-types', None, 'incremental']
+        ]},
+     'proxy-acct': {
+        'options': [None, "Proxy Accounting", "packets/s", 'Accounting', 'freerad.proxy.acct', 'line'],
+        'lines': [
+            ['proxy-accounting-requests', None, 'incremental'], ['proxy-accounting-responses', None, 'incremental'],
+            ['proxy-acct-dropped-requests', None, 'incremental'], ['proxy-acct-duplicate-requests', None, 'incremental'],
+            ['proxy-acct-invalid-requests', None, 'incremental'], ['proxy-acct-malformed-requests', None, 'incremental'],
+            ['proxy-acct-unknown-types', None, 'incremental']
         ]}
+
 }
 
 
 class Service(SimpleService):
     def __init__(self, configuration=None, name=None):
         SimpleService.__init__(self, configuration=configuration, name=name)
-        self.order = ORDER
-        self.definitions = CHARTS
         self.host = self.configuration.get('host', 'localhost')
         self.port = self.configuration.get('port', '18121')
         self.secret = self.configuration.get('secret', 'adminsecret')
+        self.acct = self.configuration.get('acct', False)
+        self.proxy_auth = self.configuration.get('proxy_auth', False)
+        self.proxy_acct = self.configuration.get('proxy_acct', False)
         self.echo = [''.join([directory, 'echo']) for directory in directories if isfile(''.join([directory, 'echo']))][0]
         self.radclient = [''.join([directory, 'radclient']) for directory in directories if isfile(''.join([directory, 'radclient']))][0]
-        self.sub_echo = [self.echo, 'Message-Authenticator = 0x00, FreeRADIUS-Statistics-Type = 3, Response-Packet-Type = Access-Accept']
+        self.sub_echo = [self.echo, 'Message-Authenticator = 0x00, FreeRADIUS-Statistics-Type = 15, Response-Packet-Type = Access-Accept']
         self.sub_radclient = [self.radclient, '-r', '1', '-t', '1', ':'.join([self.host, self.port]), 'status', self.secret]
     
     def check(self):
@@ -54,7 +72,10 @@ class Service(SimpleService):
             self.error('Command radclient not found')
             return False
         if self._get_raw_data():
-            self.info('plugin was started succesfully')
+            chart_choice = [True, bool(self.acct), bool(self.proxy_auth), bool(self.proxy_acct)]
+            self.order = [chart for chart, choice in zip(ORDER, chart_choice) if choice]
+            self.definitions = {k:v for k, v in CHARTS.items() if k in self.order}
+            self.info('Plugin was started succesfully')
             return True
         else:
             self.error('Request returned no data. Is server alive? Used options: host {}, port {}, secret {}'.format(self.host, self.port, self.secret))
@@ -72,7 +93,7 @@ class Service(SimpleService):
     def _get_raw_data(self):
         """
         The following code is equivalent to
-        'echo "Message-Authenticator = 0x00, FreeRADIUS-Statistics-Type = 3, Response-Packet-Type = Access-Accept" | radclient -t 1 -r 1 host:port status secret'
+        'echo "Message-Authenticator = 0x00, FreeRADIUS-Statistics-Type = 15, Response-Packet-Type = Access-Accept" | radclient -t 1 -r 1 host:port status secret'
         :return: str
         """
         try: