CitizenZ

Blog Libre, Net & Société

BBClone : les stats faciles pour son site web

Rédigé par citizenz 6 commentaires
Il est souvent pratique et utile d'avoir une idée de la fréquentation de son site web. Soit par simple curiosité, soit pour en apprendre un peu plus sur le public qui visite le site, son "origine" (géographique ou referer), quelles pages ont le plus été visitées, etc.

Il existe bon nombre de scripts pour mettre en place des statistiques pour son site.
J'ai personnellement toujours privilégié l'aspect visuel et pratique ... voire simple(iste ?). Et cela fait des années que j'utilise BBClone .

BBclone est un compteur web écrit en PHP qui donne une vue détaillée des visiteurs de votre site web en affichant les n derniers utilisateurs (et les données qu'ils ont fournies, comme leur IP, navigateur, etc.) : très pratique pour les webmasters qui veulent voir qui visite ses sites, ce que les navigateurs utilisent, d'où ils proviennent !
Pour chaque visiteur, BBClone peut afficher : adresse IP, le nom d’hôte, l'OS, le navigateur, l'URL d'origine (referer), l'heure de la visite, la page visitée, etc .

Relativement simple à mettre en place, vous pouvez en avoir un aperçu ici : https://bbclone.de/demo /

Le guide d'installation  est très bien fait mais en anglais, aussi voici un court résumé de la démarche d'installation.

1 - Téléchargez BBClone à cette adresse : http://bbclone.de/download.php
2 - Uploadez le répertoire complet BBClone sur votre serveur... Un bon endroit pour mettre BBClone reste à la racine de votre site ce qui donnera : http://www.example.com/bbclone/
3 - Donnez les bons droits aux fichiers. Tous les fichiers "importants" se trouvent dans le répertoire var/. Aussi donnez les droits 666 (chmod 666) aux fichiers suivants : counter[0-15].inc, access.php, last.php et .htalock
4 - Fichier de conf : dans le répertoire conf/ vous trouverez le fichier de config de BBClone (config.php). Peu de choses à faire si ce n'est changer la langue par défaut (mettez fr pour le français) et la ligne $BBC_DETAILED_STAT_FIELDS où vous pouvez ordonner les colonnes qui seront affichées et ajouter ou enlever des colonnes. Moi j'ai choisi cette présentation : $BBC_DETAILED_STAT_FIELDS = "id, time, ext, ip, dns, visits, os, browser, page, search, referer";
5 - Activiez l'option de debug : $BBC_DEBUG = 1; ... cela peut-être utilise si vous avez une erreur...
6 - Ajoutez le code d'activation sur toutes vos pages.

La partie 6 est la partie la plus "compliquée". Vous devez ajouter un code pour toutes les pages que vous souhaitez "monitorer". Il va falloir indiquer le bon PATH et le bon endroit pour mettre ce code. Si vous ne voulez pas indiquer le code à la main sur chaque page, deux solutions s'offrent à vous :
- soit utiliser un fichier .htaccess si vous utiliser un serveur Apache ou configurer votre fichier vhost avec un serveur Nginx
- soit inclure un fichier .php (que nous pouvons nommer bbclone.php) dans le header.php de votre thème, par exemple...

J'ai choisi la deuxième solution. Voici mon fichier bbclone.php placé à la racine du site :
[MAJ : 16/08/17, 21h20] : le code suivant permet l'affiche du nom complet des pages visitées
<?php
$url = $_SERVER['REQUEST_URI'];
define("_BBC_PAGE_NAME", "$url");
define("_BBCLONE_DIR", "bbclone/");
define("COUNTER", _BBCLONE_DIR."mark_page.php");
if (is_readable(COUNTER)) include_once(COUNTER);
?>

J'ai indiqué le chemin complet où se trouve le répertoire BBClone sur mon serveur. A changer chez vous en fonction de votre configuration.
Il ne me reste plus qu'à inclure ce fichier dans le header de mon thème pluXML : 
<?php include 'bbclone.php'; ?>


Que vous soyez propulsé par Apache ou Nginx, vous souhaiterez certainement protéger l'accès à ces statistiques à l'aide de votre fichier .htaccess (Apache) ou en configurant votre fichier de conf Nginx.

Voici un exemple pour Nginx :
## Protection répertoire BBClone
location /bbclone {
auth_basic "stats";
auth_basic_user_file "/etc/nginx/passwd/stats_passwd";
}
Il vous faut bien évidemment créer le fichier stats_passwd avec votre pseudo + un mot de passe à l'aide de l'utilitaire apache2-utils (sous Debian, Ubuntu, ...) en rentrant :
$ sudo htpasswd -c stats_passwd

Au final, voici un petit aperçu des stats fournies par BBClone en action sur mon site :





Les "Stats" pour les Nuls : Netdata

Rédigé par citizenz 1 commentaire

​Afficher les stats d'un serveur, cela peut être bien utile : vérifier la charge processeur, la RAM utilisée, la "santé" de sa base de données SQL, etc.
Jusqu'à maintenant, j'avais l'habitude d'installer Munin qui nous propose de jolis graphiques. Mais, à mon goût, l'un des inconvénients de Munin, c'est que, outre l'aspect esthétique graphique un peu répétitif, ça devient vite "assez lourd" sur des petits systèmes (sur un petit VPS avec un proc et 2 GO de RAM, vous êtes vite dépassé niveau charge avec des crêtes d'utilisation assez élevées...).

Et puis je suis tombé sur Netdata. Un site proposait d'aller "voir" ses stats en ligne : ahurissant !
Netdata, c'est du "live", "temps réel", "en direct", blablabla, ... et vous avez beau descendre dans la page de stats, vous en avez toujours, encore et encore.
C'est ULTRA complet, esthétiquement à des années lumières de Munin. Ca flash !

C'est quoi Netdata ?
Netdata est un outil de supervision en temps réel pour les systèmes Linux qui va nous permettre de visualiser les éléments importants d'un système (processeur, mémoire, débit du disque dur, traffic réseau, application, etc.).
C'est assez exhaustif et vous serez surpris du nombres d'éléments visualisables ! 

Comment on installe Netdata ?
Bon : on va l'installer sur notre serveur Debian. Mais avant cela, on va installer quelques éléments indispensables :

$sudo apt install zlib1g-dev gcc make git autoconf autogen automake pkg-config

J'ai l'habitude d'installer mes sites web dans /var/www/monsite.com/web.
Je pars du postulat que Nginx (version stable depuis le dépot officiel), php5 ou php7 sont installés.
N'oubliez pas de changer monsite.com avec vos propres infos.

Pour plus d'aisance, on passe directement en root :

$sudo -s

Puis on crée le répertoire web qui va accueillir les fichiers netdata :

#mkdir /var/www/netdata.mondomaine.com

Si vous n'avez jamais encore configuré de site dans ce répertoire, entrez plutôt la commande suivante : 

#mkdir -p /var/www/netdata.mondomaine.com

On se place dans le répertoire web qu'on vient de créer :

#cd /var/www/netdata.mondomaine.com

La ligne suivante est facultative (mais ça me permet de placer les logs du site afin de les consulter facilement, notamment en cas de soucis...)

#mkdir logs

On va maintenant cloner le repertoire git du projet Netdata :

#git clone https://github.com/firehol/netdata.git netdata --depth=1

L'étape suivante est facultative. Je renomme le répertoire netdata pour coller avec ma config et mon "organisation" :

#mv netdata/ web/

On se place dans le répertopire web/ :

#cd web/

... et on installe Netdata :

#./netdata-installer.sh

... et c'est tout !

Configuration Nginx
Il reste quand même à configurer Nginx :

#cd /etc/nginx/conf.d
#vim netdata.mondomaine.com.conf

Cerise sur le gateau, nous allons configurer le vhost Nginx avec HTTPS Let's Encrypt :
- netdata écoute, par défaut, sur le port 19999
- IPV6 ready
- tous les accès sur le port 80 sont "automagiquement" renvoyer sur le port 443 (HTTPS)
- on ne log pas les accès sur le port 80
- on ajoute plusieurs options SSL "qui vont bien" ...
- nous configurerons Let's Encrypt juste après cette partie

Voici le fichier :

#/etc/nginx/conf.d/netdata.mondomaine.com.conf
upstream backend {
    server 127.0.0.1:19999;
    keepalive 64;
}
server {
    listen 80;
    listen [::]:80;
    server_name netdata.mondomaine.com;
    return 301 https://$server_name$request_uri;
    access_log /dev/null;
    error_log /dev/null;
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name netdata.mondomaine.com;
    charset utf-8;
    access_log /var/www/netdata.mondomaine.com/logs/netdata.access.log combined;
    error_log /var/www/netdata.mondomaine.com/logs/netdata.error.log error;
    ssl_certificate /etc/letsencrypt/live/netdata.mondomaine.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/netdata.mondomaine.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/netdata.mondomaine.com/chain.pem;
    ssl_protocols TLSv1.2;
    ssl_ecdh_curve prime256v1;
    ssl_ciphers EECDH+AESGCM:EECDH+AES;
    ssl_prefer_server_ciphers on;
    resolver 80.67.169.12 80.67.169.40 valid=300s;
    resolver_timeout 5s;
    ssl_session_cache shared:SSL:10m;
    add_header Strict-Transport-Security "max-age=15768000";
    add_header Referrer-Policy "strict-origin-when-cross-origin";
    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_pass_request_headers on;
        proxy_set_header Connection "keep-alive";
        proxy_store off;
    }
}

Et voila. Vous enregistrez ce fichier après avoir adapté les passages avec netdata.mondomaine.com.

Configuration de Let's Encrypt
On passe à la config Let's Encrypt. On installe d'abord les backports Debian (à moins que cela ne soit déjà fait ...) :

#echo "deb http://httpredir.debian.org/debian jessie-backports main" >> /etc/apt/sources.list

On met à jour : 

#apt update && apt full-upgrade -y

On installe Let's Encrypt :

#apt install -t jessie-backports letsencrypt

Pour obtenir un certificat Let's Encrypt, il faut arrêter Nginx (port 80) :

#service nginx stop

Puis on génére le certifcat (à adapter pour netdata.mondomaine.com et l'adresse e-mail) :

#letsencrypt certonly -d netdata.mondomaine.com --agree-tos -m contact@mondomaine.com --rsa-key-size 4096 --standalone

Si vous voyez "Congratulations..." etc., c'est bon, votre certificat Let's Encrypt a été créé et installé dans /etc/letsencrypt/live/netdata.mondomaine.com/.
Vous y trouverez plusieurs fichiers : fullchain.pen, chain.pem, privkey.pem, ...

Redémarrez maintenant votre serveur Nginx :

#service nginx start

Si vous ne voyez pas d'erreur : VICTOIRE !

Vous pouvez aller voir vos superbes stats sur l'adresse https://netdata.mondomaine.com !
 

Fil RSS des articles de ce mot clé