04.27.07
Psychostats sous Linux
Psychostats, l’outil indispensable du noob qui veut se gratter le nombril devant ses performances à CSS.
Si vous n’avez rien compris à la ligne ci-dessus, cet article n’est pas pour vous.
Sinon, voici un guide rapide pour mettre en place PsychoStats sur un Linux, disons, un LAMP.
Je considère que vous avez un serveur web opérationel, PHP récent (4+), Mysql récent (4+). Voyez sur le site officiel les pré-requis.
On va supposer par la suite que votre site web où vous publierez les stats est http://www.monsite.com/~user/psycho/
On va donc utiliser le compte “user” pour “héberger le site” (le code PHP).
Enfin, je suppose que tout est en local. Si ce n’est pas le cas, vous aurez juste à remplacer quelques “localhost” par votre machine MySQL, gérer quelques ports réseaux (3306 pour MySQL) etc. Je ne décris pas trop car ça sort du contexte strict de la mise en place de PsychoStats.
D’abord, récupérer le code PsychoStats, actuellement version 3.0.5b. On place ça dans un répertoire temporaire pour le téléchargement / décompression de l’application :
mkdir ~user/install_psycho
cd ~user/install_psycho
wget http://www.psychostats.com/downloads/PsychoStats/psychostats3.0.5b.tar.gz
L’application est composée de 2 morceaux : du code PHP pour l’aspect site web et un (ensemble de) script(s) PERL pour traiter les fichiers de logs du serveur CSS et nourrir la base de données.
On décompresse donc le tout et on place la partie Web dans le “répertoire web” de l’utilisateur “user”, et la partie script hors d’atteinte du serveur web (pour raison de sécurité). Je considère que le répertoire ~/public_html est la racine du site web de l’utilisateur. C’est du standard Apache.
tar xzvf psychostats3.0.5b.tar.gz
mkdir ~/public_html/psycho
mv psychostats3.0.5b/upload/* ~/public_html/psycho/
mkdir ~/script_psycho
mv psychostats3.0.5b/* ~/script_psycho/
(Le premier “mv” bouge la partie Web/PHP, le deuxième le reste, c’est-à-dire le script PERL)
A ce niveau là, vous n’avez plus besoin du répertoire temporaire ~user/install_psycho
Ensuite, on crée au niveau MySQL un utilisateur spécifique pour l’administration du schéma de base dédié à PsychoStats. Disons un utilisateur “admin”, password “toto”.
La base de données s’appellera “psychostats”.
Pour ça, je me connecte en root sur ma base MySQL pour créer ça :
mysql -u root -p
create user ‘admin’@'localhost’ identified by ‘toto’;
create database psychostats;
grant all on psychostats.* to ‘admin’@'localhost’;
Lancez ensuite le script PHP d’installation de PsychoStats en allant à l’adresse http://www.monsite.com/~user/psycho/install/ puis suivez les étapes. Je vous montre en gros :

Le message ci-dessous est important :

(Il y a une faute dans la copie d’écran : /web est dans l’exemple censé etre /psycho)
Il faut donner les droits “au serveur web” pour sauvegarder la configuration :
root> chgrp www-data ~user/public_html/psycho/config.php
chmod 660 ~user/public_html/psycho/config.php
Ce dernier message est important :

Maintenant que le logiciel est configuré, on supprime l’outil d’installation afin que personne ne le réutilise. Plutôt que de le supprimer, je suggère de le rendre inaccessible :
chmod 0 ~user/public_html/psycho/install
La partie Web est OK, il ne reste plus qu’à activer les logs dans CSS, puis indiquer à PsychoStats où sont ces logs et enfin planifier l’exécution de l’outil d’analyse/chargement des stats.
Pour activer les logs au niveau CSS, il faut positionner les variables suivantes dans le fichier css/cstrike/cfg/server.cfg :
log on
sv_logbans 1
sv_logecho 1
sv_logfile 1
sv_log_onefile 0
sv_logsdir /home/user/quelquepart/logs_css
Attention à votre configuration CSS, si votre script appelle un autre fichier CFG, genre celui de “mani_admin_plugin” (oui ça sent le vécu), vous risquez d’écraser vos variables, en particulier “log on” -> “log off”. Bref, il faut contrôler.
Pour indiquer à PsychoStats où sont les logs de CSS, promenez-vous sur l’interface d’administration de PsychoStats et “ajoutez un Logsource” dans le menu “LogSources/Manage”. Vous indiquerez donc le chemin cité précédemment : /home/user/quelquepart/logs_css
Redémarrer votre serveur CSS et fraggez un peu, histoire de générer des logs.
Avant-dernière étape, on configure le script PERL pour charger les logs dans la base de données :
cat ~user/script_psycho/stats.cfg
dbtype = mysql
dbhost = localhost
dbport = 3306
dbname = psychostats
dbuser = admin
dbpass = toto
dbtblprefix = ps_
Grâce à ça, le script PERL sait se connecter à la base, récupérer les “LogSources”, analyser ces logs et balancer la purée.
On lance le script unitairement pour voir si ça va bien :
~user/script_psycho/stats.pl
Y’a un mode “verbeux” :
~user/script_psycho/stats.pl -v
Enfin, on planifie ça au rythme que vous voulez dans la Crontab :
crontab -e
Puis vous injectez ça :
0 2 * * * /home/user/script_psycho/stats.pl -v
Si vous voulez que l’analyse des logs se fasse tous les matins à 2h.
Et si c’est OK, allez vite vous gratouiller le nombril devant vos performances sur PsychoStats.
Bons headshots.
(merci à Dioxin qui a peaufiné la conf de mon serveur CSS)






diox said,
April 30, 2007 at 11:01 am
Merci pour la denière ligne
Je précise qd même que ca peut marcher aussi pour quelques autres mods, comme Day Of Defeat.
Si si !! Je vous jure y a encore des gens qui jouent à ce pacman-like !!
Guic said,
April 30, 2007 at 1:32 pm
Vous êtes mazos ? N’intallez pas ca.
Cela va vous montrer à quel point vous êtes mauvais.
diox said,
May 2, 2007 at 1:15 pm
bah viens plutot nous montrer comme t’es bon
michauko said,
May 5, 2007 at 12:10 am
Pour utiliser une source “LogSource” via SFTP, il faut le module PERL Net::SFTP
Si en lançant “stats.pl -v”, il vous dit qu’il ne prend pas en compte la source SFTP à cause du manquement du module Net::SFTP, il faut l’installer.
En gros, en root, tapez :
perl -MCPAN -e shell
puis :
install Net::SFTP
Ca va d’abord vous faire configurer PERL/CPAN : en gros oui partout et vérifiez qu’il ne manque rien (client FTP, commande MAKE, compilo CC etc).
Ca va installer/compiler une chiée de modules PERL issue des dépendances de Net::SFTP
Le plan, c’est à peu près du “yesyesyes” à toutes les questions et attendre que ça vienne… c’est long et foireux
Une alternative à tout ce bazar est d’automatiser le transfert des logs depuis le serveur distant puis de traiter localement… j’ai finalement opté pour ça