diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..555599c --- /dev/null +++ b/.gitignore @@ -0,0 +1,75 @@ +# Created by .ignore support plugin (hsz.mobi) +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml +.idea + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + diff --git a/.idea/mobilizon.chapril.org-tools.iml b/.idea/mobilizon.chapril.org-tools.iml new file mode 100644 index 0000000..c956989 --- /dev/null +++ b/.idea/mobilizon.chapril.org-tools.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..6f68488 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..245cfb3 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1605258558512 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..077d357 --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +#Mobilizon Chapril Tools + +## Monitoring +Surveiller les signes de vie du site depuis Icinga. +https://icinga.chapril.org + + +## Rapport d'activité +Générer un rapport incluant des statistiques à propos de l'utilisation du site et le publier dans un ticket Redmine de Agir.chapril.org + +## Statistiques +obtention des statistiques publiques de l'instance par une requête GraphQL à l'url https://mobilizon.chapril.org/api/ dont le corps est: + +```graphql +{ + statistics { + numberOfUsers + numberOfEvents + numberOfLocalEvents + numberOfComments + numberOfLocalComments + numberOfGroups + numberOfLocalGroups + numberOfInstanceFollowers + numberOfInstanceFollowings + } +} +``` +exemple de réponse: +``` +{ + "data": { + "statistics": { + "numberOfComments": 9, + "numberOfEvents": 45, + "numberOfGroups": 7, + "numberOfInstanceFollowers": 0, + "numberOfInstanceFollowings": 1, + "numberOfLocalComments": 0, + "numberOfLocalEvents": 0, + "numberOfLocalGroups": 0, + "numberOfUsers": 1 + } + } +} +``` +Détail des paramètres à demander sur la doc: +https://framagit.org/framasoft/mobilizon/-/blob/master/js/schema.graphql + +On peut tester des requêtes sur cette sandbox +https://mobilizon.fr/graphiql diff --git a/monitoring/check_version.sh b/monitoring/check_version.sh index c68746f..c9cc566 100644 --- a/monitoring/check_version.sh +++ b/monitoring/check_version.sh @@ -26,15 +26,14 @@ 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 3-100 ) -# echo "current version: $currentVersion" -# echo "last version: $lastVersion" + 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/monitoring/mobilizonchaprilorg.cron b/monitoring/mobilizonchaprilorg.cron new file mode 100644 index 0000000..efd9224 --- /dev/null +++ b/monitoring/mobilizonchaprilorg.cron @@ -0,0 +1 @@ + 5 0 1 * * root /srv/mobilizon.chapril.org/tools/rapport_activite/rapport_activite.sh -p >> /srv/mobilizon.chapril.org/Exploitation/rapport_mobilizon.log 2>&1 diff --git a/rapport_activite/rapport_activite.sh b/rapport_activite/rapport_activite.sh index 4d2ea55..1f3395b 100755 --- a/rapport_activite/rapport_activite.sh +++ b/rapport_activite/rapport_activite.sh @@ -18,11 +18,12 @@ # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -# +# access_log /var/log/nginx/mobilizon.chapril.org/mobilizon.chapril.org-access.log +# error_log /var/log/nginx/mobilizon.chapril.org/mobilizon.chapril.org-error.log # ============================================ -LOG_PREFIX="/var/log/apache2/mobilizon.chapril.org/mobilizon.chapril.org" +LOG_PREFIX="/var/log/nginx/mobilizon.chapril.org/mobilizon.chapril.org" SERVICE_NAME="mobilizon.chapril.org" source "/etc/mobilizon.chapril.org/mobilizonchaprilorg.conf" @@ -48,7 +49,7 @@ generateHTTPReport() echo "=§= Rapport d'activité HTTP" echo - + local httpRequestCount=$(zgrep "$monthEnglish" $LOG_PREFIX-access.log*|grep $year|wc -l) echo "Nombre total de requêtes http = $httpRequestCount" @@ -63,7 +64,7 @@ generateHTTPReport() 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 ) 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 ) echo "Nombre d'ipv6 ayant visité le service = $ipv6VisitorCount" @@ -84,13 +85,16 @@ generateSpecificReport() 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 ) 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 ) echo "Nombre d'ipv6 utilisatrices du service = $ipv6UserCount" echo "Nombre total d'ip utilisatrices du service = $((ipv4UserCount+ipv6UserCount))" - echo - + # 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 } @@ -136,7 +140,7 @@ 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 + elif [ "$2" -lt 2018 ] || [ "$2" -gt "$(date +%Y)" ]; then echo -e "Année non valable $2." help elif [ "$2" -le 2017 ] || [ "$2" -ge $(($(date +%Y)+1)) ] ; then @@ -147,7 +151,7 @@ elif [ "$#" -eq 2 ]; then yearMonth="$2-0$1" else yearMonth="$2-$1" - fi + fi monthEnglish=$(LANG=en_EN.UTF-8;date -d "$2-$1-01" +%b) year="$2" generateReport "$monthEnglish" "$year" "$yearMonth"