Files
observability/tp1.md
2025-11-28 15:59:43 +01:00

3.0 KiB
Raw Blame History

TP 1 Synthèse de l'activité bancaire

Créer un tableau de bord complet à partir de données issues dune application bancaire (comptes, transactions, titularisation…), en utilisant des fonctions dagrégation SQL et un outil de visualisation (Grafana).

Installation de l'environnement de travail

Nous allons construire un environnement de travail pour étudier les interactions entre les différents élements.

Git est un outil qui permet de garder lhistorique complet dun projet (code, schémas, configs…). Il permet de travailler à plusieurs personnes de travailler en même temps ou en parallèle sur un même projet.

git clone https://sources.neotech.fr/Universite/tp.git
cd tp

Docker est une technologie pour emballer une application, ses dépendances et sa configuration dans un conteneur : un mini-système isolé, reproductible et portable.

docker build -t iut/pgsql:2025-13 -f postgresql.Dockerfile .
git clone https://sources.neotech.fr/Universite/sql_bank.git
cd sql_bank
docker network create pgsql_net
docker run --detach --name pgsql ^
  --network pgsql_net ^
  -p "5432:5432" ^
  -e "POSTGRES_INITDB_ARGS=--locale-provider=icu --icu-locale=fr-FR" ^
  -e "POSTGRES_PASSWORD=geii2025" ^
  -e "POSTGRES_USER=iut" ^
  -v pgsql_data:/var/lib/postgresql ^
  -v "./:/docker-entrypoint-initdb.d" ^
  iut/pgsql:2025-13

Vérifier avec DBeaver que la base de données est bien présente

Grafana

docker pull grafana/grafana:12.1
docker run --detach --name grafana ^
  --network pgsql_net ^
  -p "3000:3000" ^
  -e "GF_SECURITY_ADMIN_USER=admin" ^
  -e "GF_SECURITY_ADMIN_PASSWORD=geii2025" ^
  -e "GF_USERS_ALLOW_SIGN_UP=false" ^
  -e "GF_USERS_DEFAULT_THEME=system" ^
  --label "caddy=grafana.localhost" ^
  --label "caddy.reverse_proxy={{upstreams 3000}}" ^
  --label "caddy.tls=internal" ^
  grafana/grafana:12.1

Création dun tableau ou dun panneau

Nombre total de comptes

select count(*) from account
  • Nombre total de titulaires
  • Solde total dans la banque
  • Cours des devises

Volume total des transactions par tranche de 5 minutes

select transaction_date temps,
count(*) over (order by transaction_date range between
interval '5 minutes' preceding and current row)
from transaction
  • Solde moyen par compte
  • Montant moyen des transactions

Tâches planifiée

Nous allons générer des données aléatoire dans le temps

SELECT cron.schedule('* * * * *', $$call add_depot(6, (floor(random() * 100) + 50)::decimal);$$);
SELECT cron.schedule('*/2 * * * *', $$call add_retrait(6, (floor(random() * 200) + 100)::decimal);$$);

Afficher le cours des devises

Ajouter un graphie timeseries

  • $__timeFrom()
  • $__timeTo()
  • $__timeFilter(date)
  • (${currency:sqlstring})

Construire un histogramme avec les soldes :

< 0 € 0 100 € 100 500 € 500 1 000 €

1 000 €