Aller au contenu

[Tuto] Installation de Cacti


hpsmartyz

Messages recommandés

Installation du plugin 'syslog' (v0.5.2)

A ce jour il existe une version plus récente (1.0.5) de ce plugin mais celle-ci semble particulièrement buggée. Je préconise donc l'utilisation de la version discutée ici.

Ce tutoriel suppose que vous avez installé Cacti dans le répertoire /var/services/web/

Ce tutoriel réutilise les identifiants définis lors de l'installation de Cacti (nom-du-user-cacti et son mot de passe mot-de-passe).

Adaptez les instructions ci-dessous en fonction de votre installation de Cacti.

Pré-requis

il faut avoir installé la PIA (voir ici)

il faut avoir installé le plugin 'settings' (voir ici)

il faut avoir installé syslog-ng (voir ici, en fait ce lien ne fonctionne plus (le fil de discussion n'est plus accessible. Cependant PatrickH a recréé un tutoriel voir ici)

il faut aussi le binaire mkfifo (vous pourrez trouver le binaire dans le pack coreutils en zone téléchargement, pour les architectures arm et ppc. Pour les autres il faudra installer coreutils via ipkg)

Installation du plugin

Téléchargez le ici

Copiez l'archive dans un répertoire du Synology (/tmp par exemple), puis dans ce répertoire:

shell> tar -zxvf syslog.tar.gz

shell> mv syslog /var/services/web/cacti/plugins/

Import de la base de données

Vous avez la possibilité de créer les tables liées à syslog au sein de la base de données de Cacti (créée lors de l'installation de Cacti) ou bien en dehors de cette dernière, au sein d'une base de données que vous définiriez.

Dans le premier cas, tapez (où nom-de-la-base représente le nom de la base de données de Cacti)

shell> cd /usr/syno/mysql/bin

shell> ./mysql -u root -p nom-de-la-base < /var/services/web/cacti/plugins/syslog/syslog.sql

Dans le second cas, tapez (où nom-de-la-base représente le nom de la base de données syslog)

shell> cd /usr/syno/mysql/bin

shell> ./mysqladmin --user=root -p create nom-de-la-base

shell> ./mysql -u root -p nom-de-la-base < /var/services/web/cacti/plugins/syslog/syslog.sql

Définition des privilèges

shell> cd /usr/syno/mysql/bin

shell> ./mysql -u root -p

mysql> GRANT ALL PRIVILEGES ON nom-de-la-base.* TO 'nom-du-user-cacti'@'localhost' IDENTIFIED BY 'mot-de-passe';

mysql> GRANT ALL PRIVILEGES ON nom-de-la-base.* TO 'nom-du-user-cacti'@'nom-hote' IDENTIFIED BY 'mot-de-passe';

mysql> GRANT ALL PRIVILEGES ON nom-de-la-base.* TO 'root'@'localhost';

mysql> GRANT ALL PRIVILEGES ON nom-de-la-base.* TO 'root'@'nom-hote';

mysql> exit

Application des droits

shell> cd /usr/syno/mysql/bin

shell> ./mysql -u root -p

mysql> FLUSH PRIVILEGES;

mysql> exit

Edition du fichier de configuration

shell> vi /var/services/web/cacti/plugins/syslog/config.php

Il contient par défaut ces lignes:

$database_default = "syslog";

$database_hostname = "localhost";

$database_username = "cactiuser";

$database_password = "cactiuser";
Modifiez le premier et les deux derniers paramètres avec les valeurs nom-de-la-base, nom-du-user-cacti et mot-de-passe respectivement. Note: Pour des questions de "sécurité", je vous engage à supprimer l'historique des commandes passées sous mysql, historique qui se trouve dans votre home (et donc /root) shell> cd /root shell> cat /dev/null > ~/.mysql_history ou bien shell> cd /root shell> $ > ~/.mysql_history Modification du script de lancement de syslog-ng Assurez vous que syslog-ng soit arrêté, autrement tuez le process, puis modifiez le fichier de lancement: shell> vi /opt/etc/init.d/S01syslog-ng de telle sorte à avoir ce qui suit:
#!/bin/ash

#

# (re)start script for syslog-ng

#

# stopping all running processes whether they exist or not

kill -9 $(pidof syslog-ng) 2>/dev/null

kill -9 $(pidof sh /opt/sbin/syslogtomysql.sh) 2>/dev/null

rm -f /tmp/mysqlsl.pipe


# restarting processes

sh /opt/sbin/syslogtomysql.sh &

/opt/sbin/syslog-ng -f /opt/etc/syslog-ng/syslog-ng.conf
Création du script syslogtomysql.sh shell> cd /opt/sbin shell> vi syslogtomysql.sh Recopiez le texte ci dessous.
#!/bin/ash

rm -f /tmp/mysqlsl.pipe

/path/to/mkfifobinary /tmp/mysqlsl.pipe


while [ -e /tmp/mysqlsl.pipe ]

do

	/usr/syno/mysql/bin/mysql -u nom-du-user-cacti --password=mot-de-passe nom-de-la-base < /tmp/mysqlsl.pipe

done
Attention: assurez vous bien de remplacer nom-du-user-cacti, mot-de-passe et nom-de-la-base par vos informations spécifiques. De même, vous n'êtes pas obligés de créer le pipe à l'endroit indiqué par ce script, ni même de lui donner le nom indiqué. Si vous changez le chemin ou le nom de ce pipe il faudra répercuter ces modifications dans le fichier de configuration de syslog-ng (voir plus bas). Changez /path/to/mkfifobinary pour refléter le chemin complet du binaire mkfifo sur votre système. Finalement, assurez vous de bien mettre le chemin absolu pour la commande mysql. Le risque autrement est que le script s'exécute mal au (re)boot du Synology, empêchant la création du lien entre syslog-ng et la base de données. Cela serait à priori dû au fait que certaines variables d'environnement ne sont pas encore chargées au moment du lancement du script rendant l'appel à mysql ineffectif. Changement des permissions sur le script syslogtomysql.sh shell> chmod 755 /opt/sbin/syslogtomysql.sh shell> chown root:root /opt/sbin/syslogtomysql.sh Modification du fichier de configuration de syslog-ng shell> vi /opt/etc/syslog-ng/syslog-ng.conf Pour les besoins de Cacti le fichier de configuration complet peut être comme suit:
# syslog-ng configuration file


options {

            	#prevents syslog-ng from trying to re-write hostnames

            	keep_hostname(yes);


            	#if keep_hostname(no), let's use dns

            	use_dns(no);

#   			use_dns(persist_only);

#   			dns_cache_hosts("/etc/hosts");

            	#and let's use syslog-ng internal caching, avoiding /etc/hosts to be read each time

            	#but then it is not clear if a change to /etc/hosts will be instantaneous or at end

            	#of expiry time

            	dns_cache(no);

#   			dns_cache(yes);

#   			dns_cache_size(10);

#   			dns_cache_expire(86400);


            	#markers

            	mark_freq(3600);

            	stats_freq(3600);

};



source local {

		pipe("/proc/kmsg");

		unix-stream("/dev/log");

		unix-stream("/var/run/log");

		internal();

};


source net {

		udp(ip(XXX.XXX.XXX.XXX) port(514));

};


destination mysql {

		pipe("/tmp/mysqlsl.pipe"

		template("INSERT INTO syslog_incoming (host, facility, priority,  date, time, message) VALUES ( '$HOST_FROM', '$FACILITY', '$PRIORITY',  '$YEAR-$MONTH-$DAY', '$HOUR:$MIN:$SEC', '$MSG' );\n")

		template-escape(yes));

};


log {

		source(net);

		destination(mysql);

};


log {

		source(local);

		destination(mysql);

};
Attention: assurez vous que la longue ligne commençant par template( et se terminant par $MSG' );\n") ne soit pas scindée en deux lignes. Adaptez le chemin du pipe si vous l'avez modifié dans le script syslogtomysql.sh. Les lignes relatives à la capture d'évènements externes à votre Synology (mais provenant de votre réseau local):
source net {

		udp(ip(XXX.XXX.XXX.XXX) port(514));

};

log {

		source(net);

		destination(mysql);

};
ne vous sont utiles que si vous avez des éléments de réseau qui envoient des notifications syslog vers votre Synology. Si elles le sont, changez l'adresse XXX.XXX.XXX.XXX en celle de votre Synology sur votre réseau local. Le manuel de référence de syslog-ng se trouve . Modifications des droits d'accès au répertoire syslog shell> cd /var/services/web/cacti/plugins/ shell> chown -R root:root syslog shell> cd syslog shell> find . -type f -exec chmod 644 '{}' \; shell> find . -type d -exec chmod 755 '{}' \; Activation du plugin shell> vi /var/services/web/cacti/include/config.php Rajoutez, à la ligne 35:
$plugins[] = 'settings';

La nécessité de déclarer ainsi le plugin 'settings' est due au fait que le plugin 'syslog' est conçu sur la base d'une ancienne version de la PIA.

Puis connectez vous à Cacti, et dans Console>Configuration>Plugin Management

cliquez sur la flèche bleue :

install_icon.png

Autorisation des utilisateurs Cacti à utiliser ce nouveau plugin

Connectez vous à Cacti

Utilities > User Management

Sélectionnez un utilisateur (normalement admin, mais ça dépend à qui vous voulez donner les droits)

Puis dans l'onglet Realm Permissions, cochez les cases View Syslog et Configure Syslog Alerts / Reports

Sauvegardez

Vous devriez avoir un onglet supplémentaire sous Cacti permettant la visualisation des logs.

Il vous reste à peaufiner le fichier de configuration de syslog-ng en fonction de vos besoins (notamment appliquer des règles de filtrage) et éventuellement adapter le temps de stockage des logs dans la base de donnée.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Tout d'abord merci pour ce tuto, très bien rédigé !

Je l'ai suivi à la lettre et CACTI fonctionne : URL répond et je peux me logguer.

Par contre, même problème : j'ajoute 2 hosts (411J et Pc portable sous Seven) et pour les deux hosts, j'ai l'erreur snmp error.

J'ai vérifié la variable safe_mode_exec_dir sur les deux fichiers indiqués et la variable est bien à vide.

J'ai cherché sur g**gle "snmp error cacti" mais je n'ai rien trouvé d'intéressant pour m'aider à résoudre.

Je regarde les logs cacti mais rien d'exploitable.

Si tu as une piste, je suis preneur.

Merci par avance.

@++

[edit]

Si ça peut aider, je viens de faire un rebuild du cache pool et relancer la commande

[i]DiskStation> /usr/bin/php /var/services/web/cacti/poller.php

OK u:0.01 s:0.01 r:4.93

OK u:0.01 s:0.01 r:4.93

ps: invalid option -- a

BusyBox v1.16.1 (2011-02-25 19:05:42 CST) multi-call binary.


Usage: ps


Report process status


Options:

    	w   	Wide output


OK u:0.01 s:0.02 r:5.13

OK u:0.01 s:0.02 r:5.14

OK u:0.01 s:0.02 r:5.18

OK u:0.01 s:0.02 r:6.41

PHP Warning:  shell_exec(): Cannot execute using backquotes in Safe Mode in /volume1/web/cacti/lib/ping.php on l                                 	ine 265

OK u:0.01 s:0.02 r:6.98

03/04/2011 10:19:12 PM - SYSTEM STATS: Time:7.7388 Method:cmd.php Processes:1 Threads:N/A Hosts:3 HostsPerProces                                 	s:3 DataSources:9 RRDsProcessed:7

[/i]

Lien vers le commentaire
Partager sur d’autres sites

je viens de comprendre alors que j'émergeais des bras de Morphée.

la détection de l'état de l'hôte se fait via ping et/ou snmp ping. le firewall doit bloquer ces tests biens qu'ils soient fait en local

quelle méthode de détection d'hote as-tu choisie dans cacti?

si ping, alors crée une règle personnalisée dans le firewall, autorisant le protocole ICMP, (ou TCP/UDP + port séléctionné; fonction de ton choix dans cacti) avec l'ip de ton NAS sur le réseau privé

si snmp ping alors crée une règle sélectionnée dans la liste d'application, choisissant service snmp (port 161) , avec l'ip de ton NAS sur le réseau privé

si les deux méthodes sont choisies alors crée les deux règles

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous,

j'essaie, tant bien que mal, de terminer mon installation ^^.

J'en suis arrivé à l'étape de configuration sur la page "ip-du-syno/cacti/install/index.php".

Sur cette page, un joli message d'erreur :

Warning: file_exists(): open_basedir restriction in effect. File(/bin/php) is not within the allowed path(s): 


(/usr/bin/php:/usr/syno/synoman:/etc:/var/run:/tmp:/var/spool/php:/volume1/@tmp/php:/var/services/web:/var/services/photo:/var/services/blog:/var/services/homes:/opt/bin:/opt/share/rrdtool/fonts) 

in /volume1/web/cacti/install/index.php on line 102 


Warning: file_exists(): open_basedir restriction in effect. File(/sbin/php) is not within the allowed path(s): 

(/usr/bin/php:/usr/syno/synoman:/etc:/var/run:/tmp:/var/spool/php:/volume1/@tmp/php:/var/services/web:/var/services/photo:/var/services/blog:/var/services/homes:/opt/bin:/opt/share/rrdtool/fonts) 

in /volume1/web/cacti/install/index.php on line 102 


Warning: exec(): PHP exec disable. 

in /volume1/web/cacti/install/index.php on line 284

Je préfère régler ce problème avant d'aller plus loin.

Si quelqu'un reconnait ce problème... ?

S'il vous faut d'autre informations, demandez.

Merci :)

Lien vers le commentaire
Partager sur d’autres sites

salut,

es-tu en DSM 3.1?

Si ce n'est pas le cas c'est que tu n'as pas suivi le tuto à la lettre (enfin il se peut qu'il y ait une erreur :) )

Si tu es en 3.1 je n'avais pas encore mis le tuto à jour pour. il l'est maintenant. Vérifie que tu as bien configuré PHP

depuis l'interface d'admin

de plus vérifie que tu as bien modifié /var/services/web/cacti/install/index.php

Lien vers le commentaire
Partager sur d’autres sites

Bisoir à tous

Bon alors alors apres galéré sur 2 - 3 trucs pour mon install,

Ca à l'air de marcher seul bémol..

Il prend tous les fichiers images / html à la racine (en gros ya pas de http://ip/cacti/nomdelimage mais que des http://ip/nomdelimage)

Et c'est pareil pour tous les liens pour aller d'une page à l'autre dans cacti si je ne modifie pas dans la barre d'adresse j'tombe toujours sur le bon nom mais à la racine du serv web pas avec le /cacti/ au milieu..

Ca ce modifie comment ? unsure.gif

Ou alors j'ai fais une connerie à quel niveau car apres avoir bien vu et fait le tutos lentement je vois pas ou j'ai merdé blink.gif

Edit : Je me répond à moi même

Si yen a qui cherche qui on comme moi eu aucune image c'est dans /web/cacti/include/config.php

à la ligne "$url_path =" c'est la ou il fallait spécifié pour mon cas /cacti/ pour que tous marche correctement niveau lien et image

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.