Horoa – La voie est libreLa voie est libre

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.

13 comments

  • 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

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

  • 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 🙂

  • 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.

    • 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…

  • 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

  • Hi Dude,

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

    Any workaround ?

    Cheers

    Ken

  • 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

    • 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.

Laisser un commentaire

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