InseeFr / Bauhaus-Back-Office

Back-office services for Bauhaus
MIT License
3 stars 8 forks source link

Supervision / Sauvegarde / Optimisations GraphDB #389

Open FBibonne opened 1 year ago

FBibonne commented 1 year ago

L'IHM graphDB utilise des endpoints de supervision de graphDB qui peuvent être accéder avec un jeton admin : la surveillance de ces endpoints devrait permettre d'identifier plus facilement les cas où le serveur graph DB doit supporter une charge anormale (par exemple une requête qui dure depuis trop longtemps). Un exemple de tel requête est :

curl "https://diff****rne-me*****ees.insee.fr/rest/monitor/query" -H "Accept: application/json, text/plain, */*" -H "Accept-Language: en,fr;q=0.8,fr-FR;q=0.5,en-US;q=0.3" -H "Accept-Encoding: gzip, deflate, br" -H "Authorization: Bearer blablabla" -H "X-Requested-With: XMLHttpRequest" -H "X-GraphDB-Repository: data"  -H "DNT: 1" -H "Referer: https://diffusionexterne-metadonnees.insee.fr/monitor/queries"  -H "Sec-Fetch-Dest: empty" -H "Sec-Fetch-Mode: cors" -H "Sec-Fetch-Site: same-origin" -H "Pragma: no-cache" -H "Cache-Control: no-cache"

Un exemple de réponse en json est :

[
  {
    "trackId": "2538405",
    "trackAlias": "25dfd8a1-71e2-4efb-b594-94be15f4060b",
    "username": "<free access user>",
    "node": null,
    "isRequestedToStop": false,
    "sparqlString": "SELECT *\nWHERE {\n        ?zone rdf:type ?territory .\n        ?zone igeo:nom ?nom .\n        ?zone igeo:codeINSEE ?codeINSEE .\n        OPTIONAL {\n            ?zone igeo:nomSansArticle ?nomSansArticle .\n            ?zone igeo:codeArticle ?codeArticle .\n            ?evenement igeo:suppression ?suppression .\n        }\n}",
    "state": "IN_HAS_NEXT",
    "type": "QUERY",
    "numberOfOperations": 594109063,
    "msSinceCreated": 5777490,
    "humanLifetime": "1h 36m 17s"
  },
  {
    "trackId": "2538463",
    "trackAlias": "1ede03f6-7652-4228-850f-73a36bda7418",
    "username": "<free access user>",
    "node": null,
    "isRequestedToStop": false,
    "sparqlString": "SELECT *\nWHERE {\n        ?zone rdf:type ?territory .\n        ?zone igeo:nom ?nom .\n        ?zone igeo:codeINSEE ?codeINSEE .\n        OPTIONAL {\n            ?zone igeo:nomSansArticle ?nomSansArticle .\n            ?zone igeo:codeArticle ?codeArticle .\n            ?evenement igeo:suppression ?suppression .\n        }\n}",
    "state": "ACTIVE",
    "type": "QUERY",
    "numberOfOperations": 590100187,
    "msSinceCreated": 5725434,
    "humanLifetime": "1h 35m 25s"
  }
]

On peut donc créer un endpoint dans Bauhaus qui interroge graphDB (authentifié à l'aide du compte de service Bauhaus) et qui répond s'il y a des requêtes trop longues (supérieures à 1h par exemple). Ce endpoint Bauhaus pourrait être mobilisé régulièrement par un job de supervision

Voir s'il y a une alternative avec des offres standard de supervision pour GraphDB

GtanSndil commented 2 months ago

vu avec Jérôme : un job rundeck a été mis en place. Ca fera l'affaire en attendant une offre de service de la supervision