logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 20-07-2023 16:39:29

joffrey575
Membre
Distrib. : Debian Bullseye
Inscription : 19-12-2016

Projet site web - Etat des services

Bonsoir,

J'ai mis en oeuvre plusieurs services depuis un moment.

J'aimerais me faire une liste avec l'état des services en ligne.

Est-ce que vous auriez fait un site web avec nginx par exemple ?

Merci à vous.

Bonne soirée

Hors ligne

#2 20-07-2023 17:05:53

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Projet site web - Etat des services

Salut smile

Tu as Cachet qui fait ça https://github.com/CachetHQ/Cachet

Jamais utilisé par contre.

Et il doit y avoir moyen de faire ça avec d'autres outils de moniroring/supervision genre netdata, Icinga2...

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#3 21-07-2023 14:47:04

joffrey575
Membre
Distrib. : Debian Bullseye
Inscription : 19-12-2016

Re : Projet site web - Etat des services

Cachethq à l'air pas mal, maintenant je pensais à ceci pour donner le status à un service.

Juste remonter le status de systemctl :
-activated
-failed
-…

Et faire un bout de page web.

Hors ligne

#4 21-07-2023 14:56:24

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Projet site web - Etat des services

Comment ton bout de page web se modifie pour refléter le changement d'état d'un service ? wink

Edit : à vrai dire, c'est un exercice intéressant, tant en conception qu'en codage wink

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#5 24-07-2023 10:46:22

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Projet site web - Etat des services

Je me suis prêter à l'exercice, j'ai fait une petite application dans un langage que je n'avais pas encore pratiqué : le Go

Je te partage ça dans la journée dès que j'ai un peu documenté wink

Sachant qu'il y aurait plein d'autres solutions pour faire un truc encore plus KISS.

Pour info, ça doit tourner sous quelle architecture ? AMD64 ou ARM ?

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#6 24-07-2023 13:29:39

joffrey575
Membre
Distrib. : Debian Bullseye
Inscription : 19-12-2016

Re : Projet site web - Etat des services

O bah tu es motivé ! En go ? Mais ça s'incorpore dans une page web le résultat ?

Il vaut mieux ne pas le faire en php ?

Je sais pas pourquoi, le go , google ça me fait pas rêver lol hmm

Sous AMD64.

Hors ligne

#7 24-07-2023 14:09:56

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Projet site web - Etat des services

joffrey575 a écrit :

Je sais pas pourquoi, le go , google ça me fait pas rêver

Ça reste opensource et dans les dépôts Debian wink Mais l'exercice d'après, c'est la même chose en Rust big_smile

joffrey575 a écrit :

Il vaut mieux ne pas le faire en php ?

C'est une autre solution, y'en a plein d'autre de toute façon. A la limite, tu peux tout faire en shell wink

joffrey575 a écrit :

Mais ça s'incorpore dans une page web le résultat ?

Ben, comme en PHP, dans la version que j'ai faite là. Mais une autre idée m'est venue entre temps, plutôt sous forme d'API.

En effet, le principe de ce que tu veux a juste un problème : si tu héberges ta page sur le même serveur que tu surveilles, si le serveur plante, t'en sais rien wink

Avec le système d'API, ça permettrait de séparer l'affichage du résultat de la récupération de l'information.

Edit : à noter aussi que ma page web est absolument moisie, c'est plus une preuve de concept qu'autre chose tongue


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#8 24-07-2023 14:47:01

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Projet site web - Etat des services

C'est là https://debian-facile.org/git/bendia/goServiceStatus wink N'hésites pas si tu as des questions smile

Je m'attaque à la version API wink

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#9 24-07-2023 16:14:47

joffrey575
Membre
Distrib. : Debian Bullseye
Inscription : 19-12-2016

Re : Projet site web - Etat des services

Waou, sympa smile

La version API, tu veux dire quoi par la ?

Hors ligne

#10 24-07-2023 16:35:26

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Projet site web - Etat des services

Ben au lieu de construire une page web complète, tu peux renvoyer simplement l'état des services supervisés sous forme de JSON de ce genre là

{"alsa-restore.service":false,"dbus":true}


Tu peux donc faire un client de la manière que tu veux sur une autre machine pour afficher ces données (page web avec AJAX, application dans un autre langage...)

Je suis en train de regarder pour que la page web de base utilise AJAX mais ça laisse ouvertes ces possibilités d'externaliser l'affichage wink


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#11 24-07-2023 16:58:08

joffrey575
Membre
Distrib. : Debian Bullseye
Inscription : 19-12-2016

Re : Projet site web - Etat des services

Oula, ça va loin pour moi smile

J'ai juste une vision page web classique pour un PC.

Tu penses à quoi exactement ?

Hors ligne

#12 24-07-2023 17:05:10

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Projet site web - Etat des services

joffrey575 a écrit :

Tu penses à quoi exactement ?

A rien de précis, ça laisse juste ouverte d'autres possibilités. Tu peux imaginer un simple script shell sur ton poste de travail qui récupère l'état de ton serveur périodiquement (cron ou timer systemd) et qui t'affiches une notification sur ton PC par exemple.

Edit : et pouf, en tirant la pelote, encore une troisième manière de faire, le protocole websocket. A voir l'intérêt par rapport à l'idée  API, et si je le code en Go ou je me réserve ça pour le RUST tongue Ça m'avait paru tout à fait intéressant comme exercice de conception wink


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#13 25-07-2023 08:29:31

joffrey575
Membre
Distrib. : Debian Bullseye
Inscription : 19-12-2016

Re : Projet site web - Etat des services

Ok, pour la conception backend, je ne suis pas programmeur donc j'ai du mal à voir toutes les possibilités avantages et inconvénients.

Par contre, j'ai mon idée arrêté sur une page web mettant en avant les services voulu à regarder via le serveur web nginx.

Type : https://cachethq.io/

Le but étant d'avoir une vue des services via une page web sans avoir besoin de passer par ssh.

Dernière modification par joffrey575 (25-07-2023 08:30:30)

Hors ligne

#14 25-07-2023 08:53:42

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Projet site web - Etat des services

joffrey575 a écrit :

je ne suis pas programmeur

moi non plus wink

joffrey575 a écrit :

Par contre, j'ai mon idée arrêté sur une page web mettant en avant les services voulu à regarder via le serveur web nginx.

Etant une quiche coté frontend, je te laisse la faire.

En l'état, ça correspond à ton attente, tu n'as qu'à modifier la page. Le seul truc à comprendre, c'est le fonctionnement du système de template de Go et cette partie là de assets/layout.html notamment :

{{ range $service, $status := . }}
        <li>{{ $service}} : {{if $status}} <img src="/static/icons/green-48.png"> {{else}} <img src="/static/icons/red-48.png"> {{end}}</li>
  {{ end }}



La première ligne est une boucle sur la liste des services surveillés ($service) et un booléen indiquant leurs états ($status). Ça te créé donc successivement une entrée de liste.

L’icône vert ou rouge est déterminé avec  {{if $status}}...{{else}}...{{end}}

Une fois que le programme est lancé comme un service, il suffit de faire un reverse proxy avec nginx pour que la page soit accessible sur les ports 80 ou 443. Tu peux utiliser le service d'authentification du serveur web pour protéger ta page, et le tour est joué wink


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#15 25-07-2023 10:18:23

joffrey575
Membre
Distrib. : Debian Bullseye
Inscription : 19-12-2016

Re : Projet site web - Etat des services

Ok merci pour ton aide.

Je regarderai ça dès que j'aurais du temps !

Par contre, pour ces étapes, je ne vois pas comment faire encore depuis ma debian.

Installer Go comme vous voulez
Installer le paquet ini go get gopkg.in/ini.v1
Construire le paquet go build

Dernière modification par joffrey575 (25-07-2023 10:24:49)

Hors ligne

#16 25-07-2023 10:44:06

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Projet site web - Etat des services

Je peux même essayer de te passer l’exécutable compilé si tu veux, mais faut me faire confiance wink

Sinon, j'ai essayé hier dans un container LXC Debian bookworm, en fait, c'est juste

apt update && apt install golang

Tu récupères le dépôt (git ou téléchargement de l'archive

cd /chemin/vers/goservicestatus
go build


Ça récupère la dépendance automatiquement (donc l'étape d'installation de ini n'est pas nécessaire en fait) et te pond un fichier exécutable que tu peux utiliser pour créer un service systemd

De ce que j'ai vu de l'environnement Go (mais j'ai pas essayer encore), il y a même moyen de créer un paquet Debian wink

Edit : ça fonctionne aussi sans soucis avec bullseye de le même façon wink

Edit 2 : C'est mis à jour avec la version API qui corrige un bug : le programme plantait lorsqu'un service tombait ou n'était pas démarré tongue


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#17 28-07-2023 14:07:56

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Projet site web - Etat des services

Bon après une bonne journée à tenter d'implémenter la même chose en Rust et d'avoir simplement réussi à récupérer l'état d'un service, et une discussion sur les langages sur IRC, retour à la raison, et implémentation de la même chose en PHP (encore que d'après la discussion : Est-il raisonnable de faire quoique ce soit en PHP ?) wink Ben c'est bien plus simple smile

Comme ça, tu as tout loisir de créer la page web que tu veux en PHP ou en Javascript wink

https://debian-facile.org/git/bendia/go … branch/php

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#18 15-08-2023 14:35:43

joffrey575
Membre
Distrib. : Debian Bullseye
Inscription : 19-12-2016

Re : Projet site web - Etat des services

Bonjour Bendia,

J'ai cloné ton projet dans mon home.

J'ai effectué les étapes dite, créé un binaire.

J'ai créé le service si dessous.

Par contre, au moment de lancer le service, il se stop.

Une idée ? Qu'à tu mis en place comme fichier de service ?


/etc/systemd/system/goservicestatus.service
[Unit]
Description=GoServiceStatus
After=network.target

[Service]
User=jo
Group=jo
ExecStart=/home/jo/etat_services/goServiceStatus/goservicestatus
Restart=on-failure
PrivateTmp=yes

[Install]
WantedBy=multi-user.target
 

Hors ligne

#19 15-08-2023 14:49:59

bendia
Chadministrateur
Distrib. : openSUSE Tumbleweed, Buster
Noyau : Linux 5.9.1-2-default + Linux 4.19.0-12-amd64
(G)UI : Gnome + Console et un peu Fluxbox
Inscription : 20-03-2012
Site Web

Re : Projet site web - Etat des services

J'ai laissé tombé Go et fait le truc en PHP surtout wink

Et c'est juste pour toi pour l'exemple, j'ai aucune intention de l'utiliser ni le temps de le maintenir hmm

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.

Hors ligne

#20 15-08-2023 21:21:37

joffrey575
Membre
Distrib. : Debian Bullseye
Inscription : 19-12-2016

Re : Projet site web - Etat des services

Je comprends.

J'ai essayé la partie php.

Lorsque je met en oeuvre le projet en php via nginx et index.php, j'obtiens le téléchargement d'un fichier brut avec le texte ci-dessous issue du code.

J'ai l'impression que le code php n'est pas interprété mais simplement lu par nginx ! ?

code retour] $statuses = statuses($services); foreach ($statuses as $service => $status) { echo "
$service : $statusesString[$status]
"
; } ?>

Dernière modification par joffrey575 (15-08-2023 21:28:37)

Hors ligne

Pied de page des forums