France Hardware : Forums de discussion
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
23 592 membres enregistrés - 1 913 507 posts - 99 191 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Langages Web
                [SQL] Calculer un Uptime
27 connectés(record : 272 le 28 octobre 2008 - 04 h 23)

Vous devez vous connecter pour répondre au topic.
[SQL] Calculer un Uptime

Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Connecté
  Posté le 04 février 2008 - 11 h 01 m 19 s
Bonjour les gens.
J'ai besoin de calculer un uptime à partir de données contenues dans une base de donnée (sur retour d'un ping).
Le principe est simple : lorsque ma connexion deviens indisponible, j'ai un nouvel enregistrement dans la base de donnée avec le status 0. Lorsqu'elle remonte, un nouvel enregistrement dans la base de donnée est créé avec le status 1 (avec également l'heure dans le champ). Logiquement, je dois donc avoir dans ma base une succession de 0 et de 1. Mais parfois j'ai plusieurs 0 ou 1 d'affilé. Je ne sais pas d'où ça viens. Je veux les ignorer pour le moment, et voir ça après.

En gros, voici la gueule de ma base :

Agent est le serveur d'où pars le ping. Device est l'ip que j'ai pingué, Time l'heure de l'évènement, millisec le temps qu'a mis la réponse ping à arriver, State le passage à l'état 0 (indisponible) ou 1 (disponible).
Le ping se fais toutes les secondes : on a donc uniquement le changement d'état.




Table SQL

AgentDeviceTimeMillisecState
MonServeur209.85.135.14730/01/2008 14:12:143490
MonServeur209.85.135.14730/01/2008 14:12:188651
MonServeur209.85.135.14730/01/2008 14:16:413490
MonServeur209.85.135.14730/01/2008 14:16:593651
MonServeur209.85.135.14730/01/2008 14:38:068490
MonServeur209.85.135.14730/01/2008 14:40:223490
MonServeur209.85.135.14730/01/2008 14:40:433801
MonServeur209.85.135.14730/01/2008 14:43:018490
MonServeur209.85.135.14730/01/2008 14:44:428490
MonServeur209.85.135.14730/01/2008 14:44:548651
MonServeur209.85.135.14730/01/2008 14:46:355371
MonServeur209.85.135.14730/01/2008 14:50:093490
MonServeur209.85.135.14730/01/2008 14:52:263490
MonServeur209.85.135.14730/01/2008 14:53:233651
MonServeur209.85.135.14730/01/2008 14:55:328490
MonServeur209.85.135.14730/01/2008 14:55:553801
MonServeur209.85.135.14730/01/2008 15:52:518440
MonServeur209.85.135.14730/01/2008 15:52:548751
MonServeur209.85.135.14730/01/2008 19:06:393551
MonServeur209.85.135.14731/01/2008 10:25:483840
MonServeur209.85.135.14731/01/2008 10:26:003991
MonServeur209.85.135.14731/01/2008 10:29:013750
MonServeur209.85.135.14731/01/2008 14:28:457461
MonServeur209.85.135.14731/01/2008 14:37:017090
MonServeur209.85.135.14731/01/2008 15:13:066431



Je souhaite donc faire une requête SQL (sur laquelle je vais pouvoir faire des expressions en VB pour calculer le résultat, mais je n'ai pas moyen de lancer plusieurs requêtes et de faire un traitement derrière, juste une seule requête et c'est tout). Comment m'y prendre ? Merci pour vos lumières.



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


grabber
Coordinateur
MacBook Pro Powered

Messages : 8 675
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 04 février 2008 - 15 h 22 m 50 s
ptite question, comment ton ping peut te ramener un nombre de millisecondes si justement le ping passe pas ???

tu devrais avoir une reponse genre "unknown host" non ? du coup si tu as un 0 dans la derniere colonne, il ne devrait pas y avoir de temps de reponse...

j'ai du rater un wagon moi...

sinon tugs a fait un script d'uptime, tu devrais le mp ;)



:firefox:

Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Connecté
  Posté le 04 février 2008 - 15 h 25 m 02 s
Ben c'est mon agent qui me renvois ça. Je pense que c'est le dernier ping avant qu'il passe en état déconnecté.
De plus, je veux une fonction SQL. Je ne peux pas utiliser le script de Tugs en l'état. C'est de l'intégration à un prog déjà existant.



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


grabber
Coordinateur
MacBook Pro Powered

Messages : 8 675
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 04 février 2008 - 17 h 11 m 08 s
ok ;)

oh ptin je me rend compte que j'avais rien compris a ton probleme. si je pige bein, il y a un test toutes les secondes, si la connexion est up il ne se passe rien, si la cnx est down, alors il y a enregistrement d'une ligne avec un 0 a la fin et des que la cnx redevient up il y a aussi ecriture d'une ligne mais cette fois avec un 1 a la fin c'est bien ca ?

par contre la ou j'ai encore un doute c'est sur ce que tu veux obtenir au niveau de ta requete... veux tu juste dedoublonner en fonction de la derniere colonne donc obtenir une liste ou il y ait en derniere colonne une suite de 0 et de 1 (donc en virant les 0 et les 1 intermediaires et en gardant juste le 1er a chaque fois) ?

genre : 0 - 1 - 0 - 1 - 0 - 1 - 0 .....

du coup pour calculer ton uptime, tu additionnerais le temps passe entre une etape avec le 1 a la fin et une etape avec le 0 (qui si je suis bien est un segment ton uptime) ?



:firefox:

Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Connecté
  Posté le 04 février 2008 - 17 h 16 m 53 s
Voila en gros c'est ça.
Enfin j'aimerais calculer l'uptime comme tu l'as dit, en calculant le temps passé entre une étape 0 et l'étape 1 juste après, et en ignorant les doublons (puisque pour le moment je ne sais pas les enlever, je vais juste les ignorer).
Seulement, comment faire ça en SQL ?



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


grabber
Coordinateur
MacBook Pro Powered

Messages : 8 675
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 04 février 2008 - 17 h 30 m 19 s
en une seule requete je vois pas trop :(
faudrait faire une moulinette en code pour ca je pense... t'as pas moyen du tout de faire du code a la place de ta requete ?


sinon par rapport a ce que tu as ecrit juste au dessus, juste pour le detail de la chose, c'est pas le temps entre une etape 0 et une etape 1 mais plutot le temps entre une etape 1 et une etape 0 puisque l'etape 0 arrive quand ton serveur devient down :jap:


franchement je vois pas trop :'(



:firefox:

Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Connecté
  Posté le 04 février 2008 - 17 h 38 m 49 s
Bah en code je sais faire, mais ça me fais clairement chier de pas pouvoir intégrer un truc comme ça.
Surtout que c'est pas seulement à cet endroit que j'ai besoin de ce genre de requête, donc si à chaque fois je fais un batch qui fais la requête, recalcule, écris le résultat dans une nouvelle table, ça commence à faire lourd au fur et a mesure que ça se multiplie.



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


grabber
Coordinateur
MacBook Pro Powered

Messages : 8 675
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 04 février 2008 - 17 h 55 m 11 s
ouais chui bien dac, le probleme c'est que je vois franchement pas comment gerer ca via sql :(



:firefox:

Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Connecté
  Posté le 04 février 2008 - 18 h 00 m 59 s
Ben moi non plus ... je lance des appels a l'aide pour le moment, jusqu'a ce qu'un gourou me dise "oui comme ça" ou "non on en peux pas".



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


gege38
- Ancien Modérateur -
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 114
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 08 février 2008 - 11 h 40 m 07 s
A mon avis, il faudrait mettre un trigger sur ta table, qui à l'arrivée d'un 0 (cad. le serveur devient indispo), vient calculer l'uptime. A contrario, tu peux déclencher via un trigger 1 post-0 le début de l'uptime.
Le hic c'est que c'est sous Oracle, et que je ne sais si ca existe sous PosGres ou MySQL.
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm#ADFNS012

En espérant que ca aide :jap:



" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Connecté
  Posté le 08 février 2008 - 12 h 02 m 02 s
Heu, je cherche à le faire sous SQL Server. C'est pas du MySQL ^^
En tout cas merci pour le truc :)


Message édité 1 fois, la dernière par Woofy le 08 février 2008 - 12 h 02.

:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


gege38
- Ancien Modérateur -
Chief of the
(¯`·.__[T3aM.BouL3T©]__.·´¯)
Potatoe Reloaded

Messages : 14 114
Inscrit le 05/02/03
Ville : Domène
Non connecté
  Posté le 08 février 2008 - 12 h 20 m 09 s
Tu as de la chance, ca existe sous SQLServer :
http://www.simple-talk.com/sql/sql-server-2005/sql-server-2005-ddl-trigger-workbench/

Reviens nous poster le code quand ça marche :D



" Nous plaisons plus souvent dans le commerce de la vie par nos défauts que par nos qualités. "
--La Rochefoucauld


Woofy
Pour les bons tuyaux me demander

Messages : 26 577
Inscrit le 11/01/02
Ville : Lyon
Connecté
  Posté le 08 février 2008 - 16 h 20 m 23 s
Ca sera après les vacances ! :D



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


grabber
Coordinateur
MacBook Pro Powered

Messages : 8 675
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 09 février 2008 - 14 h 20 m 57 s
tssssss les vacanciers, je hais les vacanciers :D

bonnes vacances quand meme woofy ;) te pete pas une patte ! (ou une aile...)



:firefox:

Page genérée en 1.4431 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL |Actualité ADSL | e-commerce | Commande Au Volant
Creative Commons
Message Boards and Forums Directory