new forge migration
This commit is contained in:
parent
45b941f327
commit
22a1036e86
422 changed files with 5786 additions and 2 deletions
|
@ -0,0 +1,191 @@
|
|||
---
|
||||
author: "Colmaris"
|
||||
title: "Goaccess pour afficher la fréquentation de son site"
|
||||
date: 2025-02-16T12:18:42+01:00
|
||||
description: "Jour 006/100 du défi 100DaysToOffLoad."
|
||||
tags:
|
||||
- goaccess
|
||||
- monittoring
|
||||
- 100DaysToOffload
|
||||
categories:
|
||||
- Adminsys
|
||||
toc: true
|
||||
---
|
||||
J'ai toujours aimé avoir un retour statistiques des blogs ou autres sites internet que je publie.<!--more--> Lorsque j'utilisais Wordpress comme plateforme d'écriture, je me servais de Matomo. Aujourd'hui j'utilise hugo pour générer ce blog et je n'ai plus envie d'utiliser l'usine à gaz Matomo. Après quelques recherchent, j'ai découvert [Goaccess](https://goaces.io). Il offre la possibilité de visualiser depuis un portail Web ou en mode terminal le trafic HTTP entrant du serveur Web. Il a l'avantage d'être très simple à mettre en place et il est peu gourmand en ressources au contraire de Matomo. Au lieu d'analyser les cookies, il parcours les fichiers logs de notre serveur http comme Nginx, Apache etc ... Aimant la nouveauté je me suis lancé dans son installation et sa configuration.
|
||||
|
||||
# Installation et prise en main
|
||||
|
||||
L'installation sur debian est très simple, il est disponible depuis les dépôts offciels.
|
||||
|
||||
``` shell
|
||||
apt install goaccess
|
||||
```
|
||||
|
||||
Pour l'utiliser en mode terminal il suffit d'exécuter la commande suivante :
|
||||
|
||||
```shell
|
||||
goaccess /var/log/nginx/access.log -c
|
||||
```
|
||||
|
||||
Je suis arrivé sur cet écran, j'ai coché le premier choix.
|
||||
|
||||
```shell
|
||||
+---------------------------------------------------------------------+
|
||||
| Configuration format des logs |
|
||||
| [SPACE] pour basculer - [ENTREE] pour procéder - [q] pour quitter |
|
||||
| |
|
||||
| [x] NCSA Combined Log Format |
|
||||
| [ ] NCSA Combined Log Format with Virtual Host |
|
||||
| [ ] Common Log Format (CLF) |
|
||||
| [ ] Common Log Format (CLF) with Virtual Host |
|
||||
| [ ] W3C |
|
||||
| [ ] CloudFront (Download Distribution) |
|
||||
| |
|
||||
| Format des logs - [c] pour ajouter/éditer le format |
|
||||
| %h %^[%d:%t %^] "%r" %s %b "%R" "%u" |
|
||||
| |
|
||||
| Format de la date - [d] pour ajouter/éditer le format |
|
||||
| %d/%b/%Y |
|
||||
| |
|
||||
| Format temporel - [t] pour ajouter/éditer le format |
|
||||
| %H:%M:%S |
|
||||
+---------------------------------------------------------------------+
|
||||
```
|
||||
L'affichage de Goaccess se présente ensuite comme cela.
|
||||
|
||||

|
||||
|
||||
Pour utiliser la génération des pages web j'ai appliqué cette commande.
|
||||
|
||||
``` shell
|
||||
goaccess /var/log/nginx/colmaris-access.log -o /var/www/blog/webreport.html --log-format=COMBINED --real-time-html
|
||||
```
|
||||
|
||||
`-o /var/www/blog/webreport.html`: Permet d'enregistrer la page html générée directement dans le Vhost du blog.
|
||||
|
||||
`--log-format=COMBINED`: Affiche les logs combinés.
|
||||
|
||||
`--real-time-html`: Affiche les données en temps réel.
|
||||
|
||||
# Utilisation en production
|
||||
|
||||
Pour l'utiliser en production je me suis fixeé ce cahier des charges :
|
||||
|
||||
* Automatisation de l'exécution.
|
||||
* Utilisation depuis n'importe quel endroit.
|
||||
* Utiliser le reverse proxy pour le chiffrage SSL.
|
||||
* Activer l'authentification par mot de passe.
|
||||
|
||||
## Automatisation de l'exécution.
|
||||
|
||||
Pour lancer à chaque démarrage Goaccess j'utilise le script systemd suivant :
|
||||
|
||||
```shell
|
||||
[Unit]
|
||||
Description=GoAccess analyse temps réel
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/goaccess -f /var/log/nginx/colmaris-access.log -o /var/www/goaccess/colmaris-report.html --real-time-html
|
||||
ExecStop=/bin/kill ${MAINPID}
|
||||
PrivateTmp=false
|
||||
RestartSec=1800
|
||||
User=root
|
||||
Group=root
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
Le service `goaccess.service` s'occupe du démarrage automatique du soft qui enregistre la page web dans le dossier partagé par Nginx.
|
||||
|
||||
J'active et lance le service :
|
||||
|
||||
```shell
|
||||
systemctl enable goaccess.service
|
||||
systemctl start goaccess.service
|
||||
|
||||
root@nginx:/etc/goaccess# systemctl daemon-reload
|
||||
root@nginx:/etc/goaccess# systemctl restart goaccess.service
|
||||
root@nginx:/etc/goaccess# systemctl status goaccess.service
|
||||
● goaccess.service - GoAccess analyse temps réel
|
||||
Loaded: loaded (/etc/systemd/system/goaccess.service; enabled; preset: enabled)
|
||||
Active: active (running) since Sun 2025-02-16 14:15:28 CET; 4s ago
|
||||
Main PID: 23613 (goaccess)
|
||||
Tasks: 3 (limit: 9147)
|
||||
Memory: 1.6M
|
||||
CPU: 4ms
|
||||
CGroup: /system.slice/goaccess.service
|
||||
└─23613 /usr/bin/goaccess -f /var/log/nginx/colmaris-access.log -o /var/www/goaccess/colmaris-report.html --real-time-html
|
||||
```
|
||||
|
||||
## Utilisation depuis n'importe quel endroit.
|
||||
|
||||
J'utilise une configuration de Vhost Nginx spécifique pour accéder à la page depuis internet. Au passage j'en profite pour modifier le Vhost du blog afin d'idenfier correctement le fichier de log en ajoutant la ligne `access_log /var/log/nginx/colmaris-access.log;`. Je crée un fichier de configuration que j'appelle `goaccess.conf` dans `/etx/nginx/site-available/`:
|
||||
|
||||
``` shell
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
||||
server_name mon-adresse.com;
|
||||
|
||||
root /var/www/goaccess/;
|
||||
index index.html colmaris-report.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Je vérifie :
|
||||
|
||||
``` shell
|
||||
nginx -t
|
||||
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
|
||||
nginx: configuration file /etc/nginx/nginx.conf test is successful
|
||||
```
|
||||
et j'active le Vhost pour goaccess :
|
||||
|
||||
``` shell
|
||||
cd /etc/nginx/site-enabled
|
||||
ln -s /etc/nginx/sites-available/goaccess.conf
|
||||
```
|
||||
|
||||
## Utiliser le reverse proxy pour le chiffrage SSL.
|
||||
|
||||
J'ajoute l'hôte dans Nginx Proxy Manager.
|
||||
|
||||
## Activer l'authentification par mot de passe.
|
||||
|
||||
J'utilise l'authentification HTTP basique de Nginx afin de ne pas exposer la page en public. Pour ajouter cette authentification j'utilise la méthode du fichier `.htpasswd`.
|
||||
|
||||
```shell
|
||||
apt install apache2-utils
|
||||
htpasswd -c /etc/nginx/.htpasswd utilisateur
|
||||
```
|
||||
|
||||
Puis j'ajoute les lignes suivantes à mon `goaccess.conf`
|
||||
|
||||
``` shell
|
||||
server {
|
||||
listen 80;
|
||||
listen [::]:80;
|
||||
|
||||
server_name mon-adresse.com;
|
||||
|
||||
root /var/www/goaccess/;
|
||||
index index.html colmaris-report.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ =404;
|
||||
auth_basic "Zone securisee - Authentification requise";
|
||||
auth_basic_user_file /etc/nginx/.htpasswd;
|
||||
}
|
||||
}
|
||||
```
|
||||
L'installation est terminée et fonctionne parfaitement. J'accède aux données depuis n'importe quel navigateur internet.
|
||||
|
||||

|
Loading…
Add table
Add a link
Reference in a new issue