diff --git a/monitoring/check_version.sh b/monitoring/check_version.sh old mode 100644 new mode 100755 index 0b9c570..1b3e920 --- a/monitoring/check_version.sh +++ b/monitoring/check_version.sh @@ -24,16 +24,16 @@ if [ "$#" -ne 0 ]; then usage else lastVersion=$(curl -s https://framagit.org/api/v4/projects/$FRAMAGIT_PROJECT_ID/releases | jshon -a -e name|cut -d '"' -f2|grep -v '[\^\(alpha\)]'|head -n 1) - currentVersion=$(cd $LOCAL_REPO && git branch | grep '*'|cut -c 11-100 ) + currentVersion=$(cd $LOCAL_REPO && git branch | grep '*'|cut -c 3-100 ) -# echo "current version: $currentVersion" -# echo "last version: $lastVersion" - if [ $currentVersion == $lastVersion ]; then + #echo "current version: $currentVersion" + #echo "last version: $lastVersion" + if [ $currentVersion = $lastVersion ]; then echo "OK" result=0 else echo "WARNING : new version available, current is $currentVersion, last is $lastVersion." - result=1 + result=2 fi fi exit $result diff --git a/rapport_activite/rapport_activite.sh b/rapport_activite/rapport_activite.sh index 1f3395b..f843780 100755 --- a/rapport_activite/rapport_activite.sh +++ b/rapport_activite/rapport_activite.sh @@ -30,6 +30,15 @@ source "/etc/mobilizon.chapril.org/mobilizonchaprilorg.conf" IPV4_PATTERN="[0-9]{1,3}(\.[0-9]{1,3}){3}" IPV6_PATTERN="[0-9a-f]{0,4}(:[0-9a-f]{0,4}){2,7}" + +# https://docs.joinmobilizon.org/contribute/graphql_api/ +API_URL="https://mobilizon.chapril.org/api/" + +# get statistics from the graphQL api of the website + json=$(curl -s -X POST \ + -H "Content-Type: application/json" \ + --data '{"query":"{\n statistics {\n numberOfUsers\n numberOfEvents\n numberOfLocalEvents\n numberOfComments\n numberOfLocalComments\n numberOfGroups\n numberOfLocalGroups\n numberOfInstanceFollowers\n numberOfInstanceFollowings\n }\n}\n"}' $API_URL) + # help() { @@ -46,26 +55,27 @@ generateHTTPReport() local monthEnglish="$1" local year="$2" local yearMonth="$3" - + local errorLogFormatDate="$2/$4" + local accessLogFormatDate="$1/$2" echo "=§= Rapport d'activité HTTP" echo - local httpRequestCount=$(zgrep "$monthEnglish" $LOG_PREFIX-access.log*|grep $year|wc -l) + local httpRequestCount=$(zgrep "$accessLogFormatDate" $LOG_PREFIX-access.log*|grep $year|wc -l) echo "Nombre total de requêtes http = $httpRequestCount" - local trueHttpRequestCount=$(zgrep "$monthEnglish" $LOG_PREFIX-access.log*|grep $year|grep -vi bot|grep -v check_http|wc -l) + local trueHttpRequestCount=$(zgrep "$accessLogFormatDate" $LOG_PREFIX-access.log*|grep $year|grep -vi bot|grep -v check_http|wc -l) echo "Nombre de vraies requêtes http = $trueHttpRequestCount" - local botRequestCount=$(zgrep "$monthEnglish" $LOG_PREFIX-access.log*|grep "$year"|grep -i bot|grep -c -v check_http) + local botRequestCount=$(zgrep "$accessLogFormatDate" $LOG_PREFIX-access.log*|grep "$year"|grep -i bot|grep -c -v check_http) echo "Nombre de requêtes bot = $botRequestCount" - local errorRequestCount=$(zgrep "$monthEnglish" $LOG_PREFIX-error.log*|grep -c "$year") + local errorRequestCount=$(zgrep "$errorLogFormatDate" $LOG_PREFIX-error.log*|grep -c "$year") echo "Nombre de requêtes http en erreur = $errorRequestCount" - local ipv4VisitorCount=$(zgrep -h "$monthEnglish" $LOG_PREFIX-access.log*|grep "$year"|grep -vi bot|grep -v check_http|egrep "^$IPV4_PATTERN "|cut -d' ' -f1|sort|uniq|wc -l ) + local ipv4VisitorCount=$(zgrep -h "$accessLogFormatDate" $LOG_PREFIX-access.log*|grep "$year"|grep -vi bot|grep -v check_http|egrep "^$IPV4_PATTERN "|cut -d' ' -f1|sort|uniq|wc -l ) echo "Nombre d'ipv4 ayant visité le service = $ipv4VisitorCount" - local ipv6VisitorCount=$(zgrep -h "$monthEnglish" $LOG_PREFIX-access.log*|grep "$year"|grep -vi bot|grep -v check_http|egrep "^$IPV6_PATTERN "|cut -d' ' -f1|sort|uniq|wc -l ) + local ipv6VisitorCount=$(zgrep -h "$accessLogFormatDate" $LOG_PREFIX-access.log*|grep "$year"|grep -vi bot|grep -v check_http|egrep "^$IPV6_PATTERN "|cut -d' ' -f1|sort|uniq|wc -l ) echo "Nombre d'ipv6 ayant visité le service = $ipv6VisitorCount" echo "Nombre total d'ip ayant visité le service = $((ipv4VisitorCount+ipv6VisitorCount))" @@ -73,28 +83,61 @@ generateHTTPReport() echo } +# display the value of a key in the json fetched with curl +function show +{ + # to navigate to sub keys like data.statistics.my_key , we must use multiple -e extract options + local value=$(echo "$json" | jshon -e "data" -e "statistics" -e $1 -u) + printf "$1=$value\n" +} + # generateSpecificReport() { + + local monthEnglish="$1" local year="$2" local yearMonth="$3" + local numMonth="$4" + local errorLogFormatDate="$2/$4" + local accessLogFormatDate="$1/$2" +# echo " errorLogFormatDate $errorLogFormatDate" +# echo " accessLogFormatDate $accessLogFormatDate" + # nginx shows logs like this: + # --------------------- error log format: + # --------------------- 2020/11/19 + # 2020/11/19 20:31:05 [error] 1720#1720: *40 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.1.93, server: mobilizon.chapril.org, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:4000/", host: "mobilizon.chapril.org" + # --------------------- access log, format : + # --------------------- 26/Nov/2020 + # 192.168.1.93 - - [26/Nov/2020:18:06:05 +0100] "GET / HTTP/1.1" 200 2731 "-" "check_http/v2.2 (monitoring-plugins 2.2)" + # 7d01:4f8:14b:c41::12 - - [26/Nov/2020:18:07:06 +0100] "POST /api/ HTTP/1.1" 200 238 "-" "curl/7.64.0" echo "=§= Rapport d'activité spécifique" echo - ipv4UserCount=$(zgrep -h "$monthEnglish" $LOG_PREFIX-access.log*|grep "$year"|grep -vi bot|grep -v check_http|egrep "^$IPV4_PATTERN " | cut -d' ' -f 1|sort|uniq|wc -l ) + errorsCount=$(zgrep -h "$errorLogFormatDate" $LOG_PREFIX-error.log*|wc -l ) + + ipv4UserCount=$(zgrep -h "$accessLogFormatDate" $LOG_PREFIX-access.log*|grep "$year"|grep -vi bot|grep -v check_http|egrep "^$IPV4_PATTERN " | cut -d' ' -f 1|sort|uniq|wc -l ) echo "Nombre d'ipv4 utilisatrices du service = $ipv4UserCount" - ipv6UserCount=$(zgrep -h "$monthEnglish" $LOG_PREFIX-access.log*|grep "$year"|grep -vi bot|gre\p -v check_http|egrep "^$IPV6_PATTERN " | cut -d' ' -f 1|sort|uniq|wc -l ) + ipv6UserCount=$(zgrep -h "$accessLogFormatDate" $LOG_PREFIX-access.log*|grep "$year"|grep -vi bot|gre\p -v check_http|egrep "^$IPV6_PATTERN " | cut -d' ' -f 1|sort|uniq|wc -l ) echo "Nombre d'ipv6 utilisatrices du service = $ipv6UserCount" echo "Nombre total d'ip utilisatrices du service = $((ipv4UserCount+ipv6UserCount))" - # TODO métriques à récupérer - # https://docs.joinmobilizon.org/contribute/graphql_api/ - echo "Nombre de comptes utilisateurs" - echo "Nombre d'évènements passés" - echo "Nombre d'évènements à venir" + echo "Nombre total d'erreurs = $errorsCount" + + show "numberOfEvents" + show "numberOfLocalEvents" + show "numberOfGroups" + show "numberOfLocalGroups" + show "numberOfComments" + show "numberOfLocalComments" + show "numberOfInstanceFollowers" + show "numberOfInstanceFollowings" + show "numberOfUsers" +# echo "Nombre d'évènements passés" +# echo "Nombre d'évènements à venir" echo } @@ -102,11 +145,11 @@ generateSpecificReport() generateReport() { echo "Rapport d'activité du service $SERVICE_NAME de $monthEnglish $year" - echo + echo "" echo "=================================================================" echo - generateHTTPReport "$1" "$2" "$3" - generateSpecificReport "$1" "$2" "$3" + generateHTTPReport "$1" "$2" "$3" "$4" + generateSpecificReport "$1" "$2" "$3" "$4" } @@ -117,6 +160,7 @@ if [ "$#" = 1 ] && [ "$1" = "-h" ]; then elif [ "$#" = 1 ] && [ "$1" = "-p" ]; then if [ "$(date +%m)" -gt 1 ]; then precedingMonth="$((10#$(date +%m)-1))" + year="$(date +%Y)" if [ $precedingMonth -lt 10 ]; then yearMonth="$year-0$precedingMonth" @@ -127,9 +171,10 @@ elif [ "$#" = 1 ] && [ "$1" = "-p" ]; then precedingMonth=12 year="$(($(date +%Y)-1))" yearMonth="$year-$precedingMonth" + fi monthEnglish=$(LANG=en_EN.UTF-8;date -d $year-$precedingMonth-01 +%b) - generateReport "$monthEnglish" "$year" "$yearMonth" + generateReport "$monthEnglish" "$year" "$yearMonth" "$precedingMonth" elif [ "$#" -eq 2 ]; then if ! (let "$1") 2>/dev/null; then echo -e "Le mois doit être numérique." @@ -140,10 +185,10 @@ elif [ "$#" -eq 2 ]; then elif ! (let "$2") 2>/dev/null; then echo -e "L'année doit être numérique." help - elif [ "$2" -lt 2018 ] || [ "$2" -gt "$(date +%Y)" ]; then - echo -e "Année non valable $2." + elif [ "$2" -lt 2020 ] || [ "$2" -gt "$(date +%Y)" ]; then + echo -e "Année non valable $2. Le service a été mis en ligne en Novembre 2020" help - elif [ "$2" -le 2017 ] || [ "$2" -ge $(($(date +%Y)+1)) ] ; then + elif [ "$2" -le 2020 ] || [ "$2" -ge $(($(date +%Y)+1)) ] ; then echo -e "Pas de données pour ce mois." help else @@ -154,13 +199,14 @@ elif [ "$#" -eq 2 ]; then fi monthEnglish=$(LANG=en_EN.UTF-8;date -d "$2-$1-01" +%b) year="$2" - generateReport "$monthEnglish" "$year" "$yearMonth" + generateReport "$monthEnglish" "$year" "$yearMonth" "$1" fi elif [ "$#" -eq 0 ]; then yearMonth="$(date +%Y-%m)" + monthNumeric=$(date +%m) monthEnglish=$(LANG=en_EN.UTF-8;date +%b) year="$(date +%Y)" - generateReport "$monthEnglish" "$year" "$yearMonth" + generateReport "$monthEnglish" "$year" "$yearMonth" $(date +%m) else echo -e "Bad parameter." help diff --git a/upgrade/upgrade.sh b/upgrade/upgrade.sh new file mode 100644 index 0000000..ca69784 --- /dev/null +++ b/upgrade/upgrade.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# upgrade du mobilizon du Chapril +LOCAL_REPO=/srv/mobilizon.chapril.org/live +echo "========================= " +echo "=§= Upgrade de mobilizon " +echo "========================= " +echo " " +echo " https://docs.joinmobilizon.org/administration/upgrading/ " +echo " " +echo "=§= récupération du tag le plus récent" +echo " " +cd LOCAL_REPO +git fetch --tags + +lastVersion=$(curl -s https://framagit.org/api/v4/projects/$FRAMAGIT_PROJECT_ID/releases | jshon -a -e name|cut -d '"' -f2|grep -v '[\^\(alpha\)]'|head -n 1) +currentVersion=$(cd $LOCAL_REPO && git branch | grep '*'|cut -c 3-100 ) +if [ $currentVersion = $lastVersion ]; then + echo " " + echo "=§= pas besoin de mettre à jour, la version actuelle est déjà la plus récente" + echo " " + exit 0 + else + echo "UPGRADE : récupération de la version $lastVersion." + git status + git checkout $lastVersion + echo " " + echo "=§= stopper le service" + echo " " + service mobilizon stop + echo " " + echo "=§= recompiler le front end" + echo " " + cd js + NODE_BUILD_MEMORY=1024 yarn run build + echo " " + echo "=§= recompiler les elixirs du backend" + echo " " + cd .. + MIX_ENV=prod mix compile + + echo " " + echo "=§= migration de la base de données" + echo " " + MIX_ENV=prod mix ecto.migrate + + echo " " + echo "=§= migration de la base de données" + echo " " + service mobilizon start + journalctl -fu mobilizon.service + + # pour créer un utilisateur vous pouvez lancer cette commande + # MIX_ENV=prod mix mobilizon.users.new "your@email.com" --admin --password "Y0urP4ssw0rd" + + fi