Installation du template cacti pour freeradius2

Il y a quelques années, j’ai eu l’occasion de travailler sur le déploiement d’une architecture radius basée sur freeradius. Projet très intéressant et qui, à l’époque, m’a permis de contribuer mes premiers patchs, ainsi qu’un template Cacti. Ce dernier est visiblement utilisé par quelques personnes, puisque je reçois de temps à autres des questions sur son installation. J’ai donc décidé de détailler la procédure ici, afin de simplifier son utilisation.
En résumé, il ne s’agit ni plus ni moins que d’installer un plugin cacti
Le sujet n’étant pas l’installation de Cacti, je vais considérer que ce dernier est installé.

Télécharger l’archive.

Vous pouvez commencer par télécharger l’archive ici. Celle ci contient:

  • radstatus.sh: le script bash d’extraction des données.
  • cacti_host_template_freeradius_server.xml: un modèle d’hôtes.
  • components: un dossier contenant chaque template de chaque que élément. Ce dossier n’est pas nécessaire si vous souhaiter importer le modèle d’hôte, ce dernier contenant tous les modèles.
  • cacti_data_template_freeradius_acct_status.xml: un modèle de données cacti pour les statistiques d’accounting.
  • cacti_data_template_freeradius_auth_status.xml: un modèle de données cacti pour les statistiques d’authentification.
  • cacti_graph_template_freeradius_acct.xml: un modèle graphique pour le rendu les données d’accounting.
  • cacti_graph_template_freeradius_auth.xml: un modèle graphique pour le rendu les données d’authentification.

Dépendances

Notez qu’étant donné que freeradius 2.x ne fournit plus d’interface snmp, aucun de ces modèles ne dépend d’un autre template SNMP (ni aucun autre).
En revanche, le script d’extraction fait appel au binaire radclient. Sur des distributions basées sur Debian, vous devriez donc installer le paquet freeradius-utils. Outre ce client radius vous devriez aussi disposer de sed.

Préparation du radius

Depuis freeradius 2.0, les statistics du serveur RADIUS sont disponibles via des requêtes radius spécifiques « status ». Freeradius n’embarque plus d’interface SNMP. Afin de permettre à Cacti d’envoyer des requêtes status il faut paramétrer le serveur de façon adéquat. On peut ainsi utiliser les server virtuels (un peu à la mode apache).
Sous Debian, il existe même un fichier tout prêt /etc/freeradius/sites-available/status qu’il suffit d’éditer et de linker dans /etc/freeradius/sites-enabled/. Dans ce fichier il faut s’assurer que le serveur écoute sur une interface accessible à Cacti, et le définir comme client du serveur.
Au final le fichier devrait ressembler à ceci:

server status {
listen {
type = status
ipaddr = 0.0.0.0
port = 18121
}
client admin {
ipaddr = 2.3.4.5
secret = changeme
require-message-authenticator = no
}
authorize {
ok
Autz-Type Status-Server {
ok
}
}
}

Installation

le script

Le fichier radstatus.sh doit être copié sur le serveur Cacti, dans le répertoire <path_cacti>/scripts (sur Debian, cacti est installé dans /usr/share/cacti/site).

Les templates

Afin d’installer les templates, loggez vous dans Cacti en tant qu’admin.
Dans la console d’administration, rendez vous dans le menu « Import Templates », cliquez sur « Parcourir » et sélectionnez le fichier de modèle d’hôtes (cacti_host_template_freeradius_server.xml). Validez l’importation en cliquant sur « Import ».
Si tous ce passe correctement vous devriez avoir une page comme celle présentée ci-dessous:

cacti admin import template

Configuration

Vous pouvez maintenant créer un nouvel hôte et lui appliquer le modèle « freeradius server ». A partir du menu « Devices », cliquez sur « Add », puis remplisez le formulaire comme montré ci-dessous (notez que pour l’example je n’est pas activé SNMP ou la détection de l’hôte mais rien n’empeche de le faire):

Cacti host creation form

Rendez vous ensuite dans l’hôte nouvellement créé puis cliquez en haut à droite sur « Create Graphs for this Host »
Cochez tous les templates freeradius et cliquez sur « Create ». Remplissez les données du formulaire avec les valeurs « secret » et « port », utilisées dans le serveur virtuel freeradius « status »:

radius param

Il ne vous reste plus qu’à être patient en attendant que les graphes apparaissent.


Publié

dans

,

par

Étiquettes :

Commentaires

13 réponses à “Installation du template cacti pour freeradius2”

  1. Avatar de Micheal Hobday
    Micheal Hobday

    Hello,
    I have tried to download the archive but the file is missing. I was wondering if you could provide a new link to it.

    Regards

    Micheal

    1. Avatar de Alexandre Chapellon

      Sorry I just updated the link. It work by now.
      Thanks for pointing that!

  2. Avatar de raw
    raw

    Your link to the archive does not work..
    not able to download it.. could you fix the link pls 🙂

  3. Avatar de raw
    raw

    Your link to the archive does not work..
    not able to download it.. could you fix the link pls 🙂

    edit:
    since I am not french, I got to the english translated site, and there the link wont work.
    on the other hand the french one works prefectly..
    maybe you should update the link to the english translation too 🙂

    1. Avatar de Alexandre Chapellon

      Well spotted! fixed. thank you for letting me know!

  4. Avatar de Markus
    Markus

    the script doesn’t work for me: I’m using freeradius 3 and on freebsd 10.
    ./radstatus.sh acct localhost adminsecret 18121
    (0) Can’t determine expected response to Status-Server request, specify a well known RADIUS port, or add a Response-Packet-Type attribute to the request of filter

    Also think the port number is wrong in the script. in your script it is 18120 but radius is using 18121.

    however i tried run radclient with the same args as in the script. but didn’t work. it seems like you need to add.
    Response-Packet-Type = Access-Accept. But still no output unless you run radclient -x (debug mode)
    However now i think the script has to much output and mess the data up.

    1. Avatar de Alexandre Chapellon

      Hi Markus,

      Sorry for the late reply. I have never tested this script with freeradus3, and i wrote explicitly for freeradius2 as the SNMP module of freeradius1 has been removed from freeradius2. It seems like there were some changes in radclient and freeradius in version 3. I was trying to re-write the plugin using python but the current pyrad library doesn’t support Status-Server packets. I’ll look further in writing something more robust but I am not sure when. Sorry…

  5. Avatar de Kenneth
    Kenneth

    Hi Dude,

    The templates seems from the new version, do you have server template for version Version 0.8.7c or any workaround on how to import it without upgrading Cacti…

    Thanks in advance

    Regards
    Ken

    1. Avatar de Alexandre Chapellon

      I never tried on this version of cacti. Which error do you encounter?

  6. Avatar de Kenneth
    Kenneth

    Hi Dude,

    Thanks for replying back… I am getting « Error: XML: Generated with a newer version of Cacti. » error.

    Any workaround ?

    Cheers

    Ken

    1. Avatar de Alexandre Chapellon

      Not that I know of. According to the thread bellow, the template have to be re-created for older version….
      Sorry but I won’t have time to do it unless I can stop time.
      http://forums.cacti.net/post-28880.html

      BTW… there must be some securirty issues with 0.8.7c. You should consider upgrading.

  7. Avatar de Nadir
    Nadir

    Hi Dude,

    I cant integrate your plugin to my existing cacti server. I got empty result error. But.

    04/10/2015 01:18:36 AM – POLLER: Poller[0] Parsed MULTI output field ‘threadI:0’ [map threadI->threadI]
    04/10/2015 01:18:36 AM – POLLER: Poller[0] Parsed MULTI output field ‘threadG:0’ [map threadG->threadG]
    04/10/2015 01:18:36 AM – POLLER: Poller[0] Parsed MULTI output field ‘threadL:0’ [map threadL->threadL]
    04/10/2015 01:18:36 AM – POLLER: Poller[0] Parsed MULTI output field ‘threadC:0’ [map threadC->threadC]
    04/10/2015 01:18:36 AM – POLLER: Poller[0] Parsed MULTI output field ‘threadD:0’ [map threadD->threadD]
    04/10/2015 01:18:36 AM – POLLER: Poller[0] Parsed MULTI output field ‘threadK:0’ [map threadK->threadK]
    04/10/2015 01:18:36 AM – POLLER: Poller[0] Parsed MULTI output field ‘threadW:1’ [map threadW->threadW]
    04/10/2015 01:18:36 AM – POLLER: Poller[0] Parsed MULTI output field ‘threadR:0’ [map threadR->threadR]
    04/10/2015 01:18:36 AM – POLLER: Poller[0] Parsed MULTI output field ‘threadS:0’ [map threadS->threadS]
    04/10/2015 01:18:36 AM – POLLER: Poller[0] Parsed MULTI output field ‘thread_W:17’ [map thread_W->thread_W]
    04/10/2015 01:18:36 AM – SPINE: Poller[0] Host[73] TH[1] DS[3868] SCRIPT: /usr/local/share/cacti/scripts/radstatus.sh auth 1.2.3.4 secret123 18120, output: U
    04/10/2015 01:18:36 AM – SPINE: Poller[0] Host[73] ERROR: Empty result [1.2.3.4]: ‘/usr/local/share/cacti/scripts/radstatus.sh auth 1.2.3.4 secret123 18120’
    04/10/2015 01:18:36 AM – SPINE: Poller[0] Host[73] DEBUG: The NIFTY POPEN returned the following File Descriptor 10
    04/10/2015 01:18:36 AM – SPINE: Poller[0] Host[73] TH[1] DS[3867] SCRIPT: /usr/local/share/cacti/scripts/radstatus.sh acct 1.2.3.4 secret123 18120, output: U
    04/10/2015 01:18:36 AM – SPINE: Poller[0] Host[73] ERROR: Empty result [1.2.3.4]: ‘/usr/local/share/cacti/scripts/radstatus.sh acct 1.2.3.4 secret123 18120’
    04/10/2015 01:18:36 AM – SPINE: Poller[0] Host[73] DEBUG: The NIFTY POPEN returned the following File Descriptor 10

    /usr/local/share/cacti/scripts/radstatus.sh auth 1.2.3.4 secret 18120
    FreeRADIUS-Total-Access-Requests:752320 FreeRADIUS-Total-Access-Accepts:34894 FreeRADIUS-Total-Access-Rejects:717311 FreeRADIUS-Total-Access-Challenges:0 FreeRADIUS-Total-Auth-Responses:752205 FreeRADIUS-Total-Auth-Duplicate-Requests:0 FreeRADIUS-Total-Auth-Malformed-Requests:0 FreeRADIUS-Total-Auth-Invalid-Requests:0 FreeRADIUS-Total-Auth-Dropped-Requests:0 FreeRADIUS-Total-Auth-Unknown-Types:0

    1. Avatar de Alexandre Chapellon

      Is spine the C written poller for cacti?
      I never tried that plugin with this poller… I think it shouldn’t be a problem but… you never know.
      Which version of cacti are you using?

      EDIT: I just found this thread which can give you clues: http://forums.cacti.net/post-69755.html
      Maybe try setting the full path to the script in your data input method. Also clear the poller cache.

Répondre à Alexandre Chapellon Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.