Statistiques/HOW-Yunohost.md

228 lines
11 KiB
Markdown
Raw Normal View History

2023-02-08 01:15:50 +01:00
# Installation sur Yunohost
Cela consiste simplement à exposer sur le web 3 types de fichiers properties (contenant une liste de clés/valeurs) :
1 fichier properties pour décrire le chaton (modèle);
1 fichier properties par service (modèles);
1 fichier properties de metrics par service (modèle).
Les deux premiers fichiers sont à faire à la main. Le troisième peut être généré par export ou par une moulinette danalyse fournie et quil faut faire tourner 1 ou 2 fois par jour.
## Dossier accessible pour les metrics
2023-03-11 23:00:01 +01:00
Il faut un dossier ou les fichiers soient accessibles, comme Yunohost a des configurations `.well_know` pour tous ces noms de domaines dans `/var/www/.well_know` avec un dossier `autoconfig`, un dossier `/var/www/.well_know/www.linux07.fr/chatonsinfos/` a été créé.
2023-02-08 01:15:50 +01:00
Puis on a ajouté un fichier de configuration `/etc/nginx/conf.d/www.linux07.d/chatonsinfos.conf` avec ces paramètres
```
location ^~ '/.well-known/chatonsinfos/' {
alias /var/www/.well-known/www.linux07.fr/chatonsinfos/;
}
```
2023-03-11 23:00:01 +01:00
Le nom de domaine `www.linux07.fr` est une une redirection vers `linux07.fr`, il est redirigé par l'application Redirect et sa configuration nginx est donnée par le fichier `/etc/nginx/conf.d/www.linux07.d/redirect.conf`
2023-02-08 01:15:50 +01:00
```
location / {
return 302 https://linux07.fr$request_uri;
}
```
On a vérifié si en ajoutant un fichier dans ce dossier il était accessible (en tapant tout le chemin du fichier).
C'est dans ce dossier que vont être créés les fichiers `metrics.properties` qui vont pouvoir être lus...
## organisation.properties
Le fichier organisation.properties est déclaré sur le git après un PR : [https://framagit.org/chatons/chatonsinfos/-/blob/master/StatoolInfos/chatons.properties#L138](https://framagit.org/chatons/chatonsinfos/-/blob/master/StatoolInfos/chatons.properties#L138)
Depuis ce fichier sont délarés les différents fichiers `service-nom_du_service-properties`
2023-03-11 23:00:01 +01:00
## Ajout de statoolinfos
2023-02-08 01:15:50 +01:00
2023-03-11 23:00:01 +01:00
Installation de statoolinfos, voir [https://forge.devinsy.fr/devinsy/statoolinfos/src/branch/master/README.md#install](https://forge.devinsy.fr/devinsy/statoolinfos/src/branch/master/README.md#install)
2023-02-08 01:15:50 +01:00
`apt-get install openjdk-11-jre-headless`
2023-03-11 23:00:01 +01:00
Créer les dossiers `/srv/statoolinfos/conf`, `/srv/statoolinfos/tmp` et `/srv/statoolinfos/bin`
2023-02-08 01:15:50 +01:00
Télécharger la dernière release : [https://forge.devinsy.fr/devinsy/statoolinfos/releases](https://forge.devinsy.fr/devinsy/statoolinfos/releases) dans le dossier `/srv/statoolinfos/tmp`
Dézipper le package et and déplacer les fichiers `statoolinfos.jar` and `statoolinfo.sh` dans le dossier `/srv/statoolinfos/bin/`
On fait un lien symbolique du fichier `statoolinfos.sh`
```
2023-03-11 23:01:58 +01:00
cd /srv/statoolinfos/bin/
2023-02-08 01:15:50 +01:00
ln -s statoolinfos.sh statoolinfos
```
Aussi un lien symbolique `well-know` pour que le dossier accessible `.well_know/www.rodinux.fr/chatonsinfos/` soit visible pour nous depuis `/srv/statoolinfos`
```
cd /srv/statoolsinfos
ln -s /var/www/.well-known/www.linux07.fr/chatonsinfos/ well-know
```
Créer les dossiers `/srv/statoolinfos/conf/`, `/srv/statoolinfos/tmp/`
Dans le dossier `/srv/statoolinfos/conf/` on met en place des configurations properties pour chaque service
Par exemple pour Etherpad
***/srv/statoolinfos/conf/pad.linux07.conf***
```
conf.probe.types=HttpAccessLog, HttpErrorLog, Etherpad
conf.probe.httpaccesslog.file=/var/log/nginx/pad.linux07.fr-access.log*
conf.probe.httperrorlog.file=/var/log/nginx/pad.linux07.fr-error.log*
conf.probe.httpaccesslog.pattern=
conf.probe.etherpad.logs=/var/log/etherpad_mypads/etherpad.log
conf.probe.etherpad.database.url=jdbc:mariadb://localhost/etherpad_mypads
conf.probe.etherpad.database.user=User_DB
conf.probe.etherpad.database.password=DB_PASSWORD
conf.probe.target=/var/www/.well-known/www.linux07.fr/chatonsinfos/service-etherpad-metrics.properties
# Custom access log pattern with Java regex.
# Default: "^(?<remoteAddress>[a-zA-F0-9\\\\:\\\\.]+) - (?<remoteUser>[^\\[]+) \\[(?<time>[^\\]]+)\\] \"(?<request>.*)\" (?<status>\\d+) (?<bodyBytesSent>\\d+) \"(?<referer>.*)\" \"(?<userAgent>[^\"]*)\".*$"
#conf.probe.httpaccesslog.pattern=
```
La commande pour tester les configurations:
`/srv/statoolinfos/bin/statoolinfos probe -full /srv/statoolinfos/conf/pad.linux07.conf`
### Usage
```
Usage:
statoolinfos [ -h | -help | --help ]
statoolinfos [ -v | -version | --version ]
statoolinfos build <configurationfile> build property files from conf and input
statoolinfos clear <configurationfile> remove property files from conf
statoolinfos crawl <configurationfile> crawl all file from conf and input
statoolinfos htmlize <configurationfile> generate web pages from conf
statoolinfos probe OPTION [<directory>|<configurationfile>] generate metrics files from conf
OPTION = [-full|-today|-previousday|-NN] with NN a day count
statoolinfos uptime <configurationfile> update uptime journal
statoolinfos format <fileordirectory> format property files in tiny way
statoolinfos list ip [-bot|-nobot] <fileordirectory> generate ip list from log file
statoolinfos list ua [-bot|-nobot] <fileordirectory> generate user agent list from log file
statoolinfos list visitors [-bot|-nobot] <fileordirectory> generate visitors (ip+ua) list from log file
statoolinfos stat ip [-bot|-nobot] <fileordirectory> generate stats about ip from log file
statoolinfos stat ua [-bot|-nobot] <fileordirectory> generate stats about user agent from log file
statoolinfos stat visitors [-bot|-nobot] <fileordirectory> generate stats about visitors (ip+ua) from log file
statoolinfos tagdate <fileordirectory> update the file.datetime file
```
## Dernières étapes
Maintenant on peut ajouter les liens dans les fichiers `service-application.properties`, par exemple pour `service-etherpad.properties` tout en bas
```
# [Subs]
# Un lien vers un fichier properties complémentaire (type URL, optionnel). Exemple : https://
subs.foo = https://www.linux07.fr/.well-known/chatonsinfos/service-etherpad-metrics.properties
```
Mettre en place un crontab, ici 1 fois par jour en précsiant lheure, par exemple 00h01
`1 0 * * * /srv/statoolinfos/bin/statoolinfos probe -previousday /srv/statoolinfos/conf/ >> /srv/statoolinfos/cron.log`
## Mise à jour
2023-03-07 23:26:13 +01:00
Pour les mises à jour de statoolinfos, il suffit juste de récuper la dernière release du `statoolinfos.jar` et de le remplacer, lien : [https://forge.devinsy.fr/devinsy/statoolinfos/releases](https://forge.devinsy.fr/devinsy/statoolinfos/releases)
2023-02-21 21:30:40 +01:00
## Corrections bugs php pour l'application Libreto
Sinon, on a constaté beaucoup de lignes d'erreurs dans les logs de libreto avec `LINE IS NOT MATCHING`. On a changé la ligne 466 dans le fichier **/etc/php/7.4/fpm/php.ini** en rajoutant `& ~E_NOTICE` au bout da ligne 466.
`error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE `
explication au-dessus de la ligne:
```
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Error handling and logging ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; This directive informs PHP of which errors, warnings and notices you would like
; it to take action for. The recommended way of setting values for this
; directive is through the use of the error level constants and bitwise
; operators. The error level constants are below here for convenience as well as
; some common settings and their meanings.
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
; those related to E_NOTICE and E_STRICT, which together cover best practices and
; recommended coding standards in PHP. For performance reasons, this is the
; recommend error reporting setting. Your production server shouldn't be wasting
; resources complaining about best practices and coding standards. That's what
; development servers and development settings are for.
; Note: The php.ini-development file has this setting as E_ALL. This
; means it pretty much reports everything which is exactly what you want during
; development and early testing.
;
; Error Level Constants:
; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
; E_ERROR - fatal run-time errors
; E_RECOVERABLE_ERROR - almost fatal run-time errors
; E_WARNING - run-time warnings (non-fatal errors)
; E_PARSE - compile-time parse errors
; E_NOTICE - run-time notices (these are warnings which often result
; from a bug in your code, but it's possible that it was
; intentional (e.g., using an uninitialized variable and
; relying on the fact it is automatically initialized to an
; empty string)
; E_STRICT - run-time notices, enable to have PHP suggest changes
; to your code which will ensure the best interoperability
; and forward compatibility of your code
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
; initial startup
; E_COMPILE_ERROR - fatal compile-time errors
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
; E_USER_ERROR - user-generated error message
; E_USER_WARNING - user-generated warning message
; E_USER_NOTICE - user-generated notice message
; E_DEPRECATED - warn about code that will not work in future versions
; of PHP
; E_USER_DEPRECATED - user-generated deprecation warnings
;
; Common Values:
; E_ALL (Show all errors, warnings and notices including coding standards.)
; E_ALL & ~E_NOTICE (Show all errors, except for notices)
; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.)
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
```
J'essaie aussi de voir après avoir lu les logs d'ignorer un erreur recurrente de php
```
LINE IS NOT MATCHING [ in /var/www/libreto/libreto/pad.php on line 148" while reading response header from upstream, client: 89.234.140.172, server: libreto.linux07.fr, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.4-fpm-libreto.sock:", host: "libreto.linux07.fr"]
```
La ligne 148 en question de **/var/www/libreto/libreto/pad.php**
`$txt = file_get_contents($this->url('txt'));`
est dans cette portion de fonction
```
public function txt() {
146 if (!$this->url('txt')) { return; }
147
148 $txt = file_get_contents($this->url('txt'));
149 return $txt;
150 }
```
En cherchant, j'essaie d'ignorer l'erreur avec un `@`
`$txt = @file_get_contents($this->url('txt'));`
sources :
[https://www.php.net/manual/fr/language.operators.errorcontrol.php](https://www.php.net/manual/fr/language.operators.errorcontrol.php)
et cette discussion:
[https://stackoverflow.com/questions/272361/how-can-i-handle-the-warning-of-file-get-contents-function-in-php](https://stackoverflow.com/questions/272361/how-can-i-handle-the-warning-of-file-get-contents-function-in-php)