serveurs:installation:web-srv:docker-goaccess

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
serveurs:installation:web-srv:docker-goaccess [2020/02/18 14:45] jpmilcentserveurs:installation:web-srv:docker-goaccess [2023/06/06 15:35] (Version actuelle) – [Congifurer la géolocalisation] jpmilcent
Ligne 52: Ligne 52:
     * Tester la config et relancer Nginx si OK : ''nginx-reload'' ou ''nginx -t && nginx -s reload''     * Tester la config et relancer Nginx si OK : ''nginx-reload'' ou ''nginx -t && nginx -s reload''
     * Tester l'URL <nowiki> http://web-log-analyser.<domaine-sinp>/</nowiki> qui doit afficher une erreur 502 car nous n'avons pas encore lancé le container Docker.     * Tester l'URL <nowiki> http://web-log-analyser.<domaine-sinp>/</nowiki> qui doit afficher une erreur 502 car nous n'avons pas encore lancé le container Docker.
-  * En local, sur votre machine, se placer dans le dépôt Github "//docker-paca-sinp//" récupéré précédemment et si nécessaire resynchroniser le dossier //web-srv// avec le serveur de destination en exécutant la commande //Rsync// indiquée dans le fichier [[https://github.com/cbn-alpin/sinp-paca-srv/blob/master/README.md|README.md]].+  * En local, sur votre machine, se placer dans le dépôt Github "//sinp-<region>-srv//" récupéré précédemment et si nécessaire resynchroniser le dossier //bkp-srv// avec le serveur de destination en exécutant la commande //Rsync// indiquée dans le fichier //README.md//.
   * Sur le serveur dans le dossier //docker// de l'utilisateur //admin// :   * Sur le serveur dans le dossier //docker// de l'utilisateur //admin// :
     * vérifier la présence du réseau Docker spécifique à notre utilisation de type //bridge// nommé //nginx-proxy// (voir fichier //.env//) : ''docker network ls''     * vérifier la présence du réseau Docker spécifique à notre utilisation de type //bridge// nommé //nginx-proxy// (voir fichier //.env//) : ''docker network ls''
-    * se placer dans le dossier //web-log-analyser.silene.eu// : ''cd ~/docker/web-log-analyser.silene.eu'' +    * se placer dans le dossier //web-log-analyser.<domaine-sinp>// : ''cd ~/docker/web-log-analyser'' 
-    * exécuter la commande : ''docker-compose up''+    * exécuter la commande : ''docker compose up''
     * vérifier que tout fonctionne à l'adresse : <nowiki>http://web-log-analyser.<domaine-sinp></nowiki> (les graphiques doivent être remplis et l’icône de paramétrage du menu doit avoir une pastille verte => connexion WebSocket OK)     * vérifier que tout fonctionne à l'adresse : <nowiki>http://web-log-analyser.<domaine-sinp></nowiki> (les graphiques doivent être remplis et l’icône de paramétrage du menu doit avoir une pastille verte => connexion WebSocket OK)
     * arrêter le container : ''CTRL+C''     * arrêter le container : ''CTRL+C''
-    * relancer le container en tant que service : ''docker-compose up -d''+    * relancer le container en tant que service : ''docker compose up -d''
       * si besoin de l'arrêter utiliser : ''docker compose down''       * si besoin de l'arrêter utiliser : ''docker compose down''
  
-===== Activer le SSL sur le domaine ===== +===== Activer le SSL et HTTP2 sur le domaine ===== 
-  * Installer un certificat SSL via Certbot (Letsencrypt) : ''<nowiki> certbot --nginx -d web-log-analyser.<domaine-sinp> </nowiki>''+  * Installer un certificat SSL via Certbot (Letsencrypt) :  
 +    * Pour SINP PACA : ''<nowiki> certbot --nginx -d web-log-analyser.silene.eu </nowiki>'' 
 +    * Pour SINP AURA : ''<nowiki> certbot --nginx -d web-log-analyser.biodiversite-aura.net </nowiki>''
     * Répondre : 2     * Répondre : 2
     * Tester ensuite la redirection auto de HTTP vers HTTPS : <nowiki> http://web-log-analyser.<domaine-sinp>/ </nowiki> -> doit redirigé vers HTTPS automatiquement     * Tester ensuite la redirection auto de HTTP vers HTTPS : <nowiki> http://web-log-analyser.<domaine-sinp>/ </nowiki> -> doit redirigé vers HTTPS automatiquement
Ligne 77: Ligne 79:
  
 server { server {
-    listen 443 ssl; # managed by Certbot +    listen 443 ssl http2; # managed by Certbot 
-    listen [::]:443 ssl; # managed by Certbot+    listen [::]:443 ssl http2; # managed by Certbot
  
     server_name web-log-analyser.<domaine-sinp>;     server_name web-log-analyser.<domaine-sinp>;
Ligne 127: Ligne 129:
     * Les transférer sur le serveur :      * Les transférer sur le serveur : 
       * Tester : ''<nowiki> rsync -av ./web-srv/opt/ admin@web-<region>-sinp:/home/admin/dwl/ --dry-run </nowiki>''       * Tester : ''<nowiki> rsync -av ./web-srv/opt/ admin@web-<region>-sinp:/home/admin/dwl/ --dry-run </nowiki>''
-      * Lancer le transfert (supprimer l'option <nowiki>--dry-run</nowiki> : ''<nowiki> rsync -av ./web-srv/opt/ admin@web-<region>-sinp:/home/admin/dwl/ </nowiki>''+      * Lancer le transfert (supprimer l'option %%--dry-run%%) : ''%% rsync -av ./web-srv/opt/ admin@web-<region>-sinp:/home/admin/dwl/ %%''
     * Copier le contenu de ce dossier dans ''/opt/goaccess-reports/'' : '' cp -r /home/admin/dwl/goaccess-reports /opt/ ''     * Copier le contenu de ce dossier dans ''/opt/goaccess-reports/'' : '' cp -r /home/admin/dwl/goaccess-reports /opt/ ''
-    * Copier le fichier goaccess-reports.cron dans ''/etc/cron.d/''  en supprimant son extension //.cron// : ''cp /otp/goaccess-reports/goaccess-reports.cron /etc/cron.d/goaccess-reports''+    * Donner les droits d'exécution aux scripts Bash : '' chmod +x *-report '' 
 +    * Copier le fichier //goaccess-reports.cron// dans ''/etc/cron.d/''  en supprimant son extension //.cron// : ''cp /opt/goaccess-reports/goaccess_reports.cron /etc/cron.d/goaccess_reports''
     * Recharger le service //Cron// pour prendre en compte les changements : ''service cron reload''     * Recharger le service //Cron// pour prendre en compte les changements : ''service cron reload''
   * S'il est nécessaire de générer manuellement un rapport utiliser les commandes :   * S'il est nécessaire de générer manuellement un rapport utiliser les commandes :
     * Rapport journalier : ''/opt/goaccess-reports/daily-report <date-au-format-YYYY-MM-DD>'' . Ex. :  ''/opt/goaccess-reports/daily-report 2020-01-01''     * Rapport journalier : ''/opt/goaccess-reports/daily-report <date-au-format-YYYY-MM-DD>'' . Ex. :  ''/opt/goaccess-reports/daily-report 2020-01-01''
-      * Le rapport est accessible ensuite à une adresse de la forme : ///<année>/<mois>/<jour>//+      * Le rapport est accessible ensuite à une adresse de la forme : //https://web-log-analyser.silene.eu/2023/06/05//<année>/<mois>/<jour>//
       * Ex. : https://web-log-analyser.silene.eu/2020/01/01       * Ex. : https://web-log-analyser.silene.eu/2020/01/01
     * Rapport hebdomadaire : ''/opt/goaccess-reports/weekly-report <date-d-un-lundi-au-format-YYYY-MM-DD>'' . Ex. :  ''/opt/goaccess-reports/daily-report 2020-01-13''     * Rapport hebdomadaire : ''/opt/goaccess-reports/weekly-report <date-d-un-lundi-au-format-YYYY-MM-DD>'' . Ex. :  ''/opt/goaccess-reports/daily-report 2020-01-13''
Ligne 142: Ligne 145:
       * Ex. : https://web-log-analyser.silene.eu/2020/01       * Ex. : https://web-log-analyser.silene.eu/2020/01
  
 +===== Configurer la géolocalisation =====
 +  * Télécharger un base "IP to City Lite" depuis le site : https://db-ip.com/db/lite.php
 +  * La placer dans le dossier ''~/docker/web-log-analyser/goaccess/''
 +  * Modifier le fichier ''docker-compose.yml'' et ajouter le volume suivant au container //web-log-analyser-goaccess// : ''- ./goaccess/dbip-city-lite-2023-06.mmdb:/var/lib/GeoIP/GeoLite2-City.mmdb''
 +  * Créer un fichier goaccess/custom.css avec le contenu : <code css>
 +.wrap-panels:after {
 +    content: "IP Geolocation by DB-IP : https://db-ip.com";
 +    color: grey;
 +}
 +</code>
 +  * Ajouter le //volume// suivant au 2 container de la stack web-log-analyser dans le fichier ''docker-compose.yml'' : ''- ./goaccess/custom.css:/goaccess/reports/custom.css:ro''
 +  * Ajouter les paramètres suivant à tous les fichiers de configuration de goaccess :<code properties>
 +# User interfaces Options
 +html-custom-css /custom.css
 +# Geolocation Options
 +geoip-database /var/lib/GeoIP/GeoLite2-City.mmdb
 +</code>
 +  * Redémarer la stack : ''docker compose restart''
 +
 +===== Interface Temps Réel =====
 +  * GoAccess propose une interface permettant d'afficher en temps réel les logs via l'utilisation de web-sockets.
 +    * Elle est accessible à la racine du domaine : https://web-log-analyser.<domaine-sinp>/
 +    * **TODO** : L'interface semble ne pas prendre en compte correctement les paramètres d'utilisation de la base de données sur disque. A voir sur le long terme (2023-06-06 -- jpmilcent).
 +    * Nous utiliserons cette interface pour visualiser les derniers logs en temps réel.
 +
 +===== Analyse des logs compressés .gz =====
 +  * **Contexte** : GoAccess ne propose pas de solution native pour décompresser les logs. Il faut passer par //zcat// et l'utilisation des pipes.
 +  * **Problème** : GoAccess gère mal la persistance en base des données de fichiers de log issu de l'utilisation d'un pipe avec zcat. Voir [[https://goaccess.io/man#incremental-processing|la documentation de GoAccess]].
 +  * **Solution** : pour l'interface GoAccess temps réel, nous utilisons seulement le plus récent fichier de log généré par Nginx, le fichier //access.log//, avec l'utilisation des paramètres ''%%--persist%%'', ''%%--restore%%'' et ''%%--db-path=/goaccess/database%%''. Normalement, cela devrait nous permettre de retrouver toutes logs analysés dans l'interface en temps réel...
  • serveurs/installation/web-srv/docker-goaccess.1582037155.txt.gz
  • Dernière modification : 2020/02/18 14:45
  • de jpmilcent