diff options
Diffstat (limited to '')
-rw-r--r-- | collectors/python.d.plugin/freeradius/Makefile.inc | 13 | ||||
-rw-r--r-- | collectors/python.d.plugin/freeradius/README.md | 70 | ||||
-rw-r--r-- | collectors/python.d.plugin/freeradius/freeradius.chart.py (renamed from python.d/freeradius.chart.py) | 24 | ||||
-rw-r--r-- | collectors/python.d.plugin/freeradius/freeradius.conf (renamed from conf.d/python.d/freeradius.conf) | 0 |
4 files changed, 97 insertions, 10 deletions
diff --git a/collectors/python.d.plugin/freeradius/Makefile.inc b/collectors/python.d.plugin/freeradius/Makefile.inc new file mode 100644 index 000000000..54aa6492f --- /dev/null +++ b/collectors/python.d.plugin/freeradius/Makefile.inc @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: GPL-3.0-or-later + +# THIS IS NOT A COMPLETE Makefile +# IT IS INCLUDED BY ITS PARENT'S Makefile.am +# IT IS REQUIRED TO REFERENCE ALL FILES RELATIVE TO THE PARENT + +# install these files +dist_python_DATA += freeradius/freeradius.chart.py +dist_pythonconfig_DATA += freeradius/freeradius.conf + +# do not install these files, but include them in the distribution +dist_noinst_DATA += freeradius/README.md freeradius/Makefile.inc + diff --git a/collectors/python.d.plugin/freeradius/README.md b/collectors/python.d.plugin/freeradius/README.md new file mode 100644 index 000000000..e5fe88ec3 --- /dev/null +++ b/collectors/python.d.plugin/freeradius/README.md @@ -0,0 +1,70 @@ +# freeradius + +Uses the `radclient` command to provide freeradius statistics. It is not recommended to run it every second. + +It produces: + +1. **Authentication counters:** + * access-accepts + * access-rejects + * auth-dropped-requests + * auth-duplicate-requests + * auth-invalid-requests + * auth-malformed-requests + * auth-unknown-types + +2. **Accounting counters:** [optional] + * accounting-requests + * accounting-responses + * acct-dropped-requests + * acct-duplicate-requests + * acct-invalid-requests + * acct-malformed-requests + * acct-unknown-types + +3. **Proxy authentication counters:** [optional] + * proxy-access-accepts + * proxy-access-rejects + * proxy-auth-dropped-requests + * proxy-auth-duplicate-requests + * proxy-auth-invalid-requests + * proxy-auth-malformed-requests + * proxy-auth-unknown-types + +4. **Proxy accounting counters:** [optional] + * proxy-accounting-requests + * proxy-accounting-responses + * proxy-acct-dropped-requests + * proxy-acct-duplicate-requests + * proxy-acct-invalid-requests + * proxy-acct-malformed-requests + * proxy-acct-unknown-typesa + + +### configuration + +Sample: + +```yaml +local: + host : 'localhost' + port : '18121' + secret : 'adminsecret' + acct : False # Freeradius accounting statistics. + proxy_auth : False # Freeradius proxy authentication statistics. + proxy_acct : False # Freeradius proxy accounting statistics. +``` + +**Freeradius server configuration:** + +The configuration for the status server is automatically created in the sites-available directory. +By default, server is enabled and can be queried from every client. +FreeRADIUS will only respond to status-server messages, if the status-server virtual server has been enabled. + +To do this, create a link from the sites-enabled directory to the status file in the sites-available directory: + * cd sites-enabled + * ln -s ../sites-available/status status + +and restart/reload your FREERADIUS server. + +--- diff --git a/python.d/freeradius.chart.py b/collectors/python.d.plugin/freeradius/freeradius.chart.py index 3acc58d1a..3126831b7 100644 --- a/python.d/freeradius.chart.py +++ b/collectors/python.d.plugin/freeradius/freeradius.chart.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Description: freeradius netdata python.d module # Author: l2isbad +# SPDX-License-Identifier: GPL-3.0-or-later from re import findall from subprocess import Popen, PIPE @@ -20,7 +21,7 @@ ORDER = ['authentication', 'accounting', 'proxy-auth', 'proxy-acct'] CHARTS = { 'authentication': { - 'options': [None, "Authentication", "packets/s", 'Authentication', 'freerad.auth', 'line'], + 'options': [None, 'Authentication', 'packets/s', 'Authentication', 'freerad.auth', 'line'], 'lines': [ ['access-accepts', None, 'incremental'], ['access-rejects', None, 'incremental'], @@ -29,9 +30,10 @@ CHARTS = { ['auth-invalid-requests', 'invalid-requests', 'incremental'], ['auth-malformed-requests', 'malformed-requests', 'incremental'], ['auth-unknown-types', 'unknown-types', 'incremental'] - ]}, + ] + }, 'accounting': { - 'options': [None, "Accounting", "packets/s", 'Accounting', 'freerad.acct', 'line'], + 'options': [None, 'Accounting', 'packets/s', 'Accounting', 'freerad.acct', 'line'], 'lines': [ ['accounting-requests', 'requests', 'incremental'], ['accounting-responses', 'responses', 'incremental'], @@ -40,9 +42,10 @@ CHARTS = { ['acct-invalid-requests', 'invalid-requests', 'incremental'], ['acct-malformed-requests', 'malformed-requests', 'incremental'], ['acct-unknown-types', 'unknown-types', 'incremental'] - ]}, + ] + }, 'proxy-auth': { - 'options': [None, "Proxy Authentication", "packets/s", 'Authentication', 'freerad.proxy.auth', 'line'], + 'options': [None, 'Proxy Authentication', 'packets/s', 'Authentication', 'freerad.proxy.auth', 'line'], 'lines': [ ['proxy-access-accepts', 'access-accepts', 'incremental'], ['proxy-access-rejects', 'access-rejects', 'incremental'], @@ -51,9 +54,10 @@ CHARTS = { ['proxy-auth-invalid-requests', 'invalid-requests', 'incremental'], ['proxy-auth-malformed-requests', 'malformed-requests', 'incremental'], ['proxy-auth-unknown-types', 'unknown-types', 'incremental'] - ]}, + ] + }, 'proxy-acct': { - 'options': [None, "Proxy Accounting", "packets/s", 'Accounting', 'freerad.proxy.acct', 'line'], + 'options': [None, 'Proxy Accounting', 'packets/s', 'Accounting', 'freerad.proxy.acct', 'line'], 'lines': [ ['proxy-accounting-requests', 'requests', 'incremental'], ['proxy-accounting-responses', 'responses', 'incremental'], @@ -62,8 +66,8 @@ CHARTS = { ['proxy-acct-invalid-requests', 'invalid-requests', 'incremental'], ['proxy-acct-malformed-requests', 'malformed-requests', 'incremental'], ['proxy-acct-unknown-types', 'unknown-types', 'incremental'] - ]} - + ] + } } @@ -105,7 +109,7 @@ class Service(SimpleService): """ result = self._get_raw_data() return dict([(elem[0].lower(), int(elem[1])) for elem in findall(r'((?<=-)[AP][a-zA-Z-]+) = (\d+)', result)]) - + def _get_raw_data(self): """ The following code is equivalent to diff --git a/conf.d/python.d/freeradius.conf b/collectors/python.d.plugin/freeradius/freeradius.conf index 3336d4c49..3336d4c49 100644 --- a/conf.d/python.d/freeradius.conf +++ b/collectors/python.d.plugin/freeradius/freeradius.conf |