Quelle est la meilleure façon de ping une liste de 20 sites Web toutes les 5 minutes (par exemple) afin de savoir si le site répond avec http 202 ou non? P>
La notice no Breaker est de sauvegarder les 20 URL dans une base de données et d'exécuter la base de données et de ping chacun. Cependant, que se passe-t-il quand on ne répond pas? Qu'advient-il de ceux après cela? P>
Aussi, y a-t-il mieux mais une solution no-breaker pour cela? J'ai bien peur que la liste puisse atteindre 20000 sites Web, puis il n'ya pas assez de temps pour les ping dans les 5 minutes, je dois faire des pinges. P>
Fondamentalement, je décris comment pingom, uptimerobot et les goûts fonctionne. P>
Je construis ce système à l'aide de nœud.js et de rubis sur rails. Je suis également enclin à utiliser Mongodb pour économiser l'historique de tous les résultats de la surveillance et de la surveillance. P>
suggestions? P>
Merci un tas! P>
6 Réponses :
Utilisez des outils de surveillance tels que Zabbix, Nagios, Blah Blah, qui peut métrique divers paramètres de vos serveurs en nombre de masse. P>
Si vous souhaitez l'implémenter dans JS, vous pouvez effectuer une requête HTTP intervalle de temps, puis pour déterminer le code d'état de retour HTTP et utiliser XPath ou Regex pour valider certains éléments est correct p>
Pour Ruby, un processus de démon et utilisez une piscine de thread (idée multithreading) et URI ouverte pour afficher le code HTTP et le contenu, utilisez XPath pour valider si le contenu est correct correctement. P>
J'aime vraiment le nœud.js et je voudrais aborder ce problème et j'espère bientôt partager du code sur Github pour y parvenir. N'oubliez pas que je n'ai que très bien une configuration de base, hébergée à https://github.com/alfredwesterveld/freakinping p>
Quel est le meilleur moyen de ping une liste de 20 sites web toutes les 5 minutes (pour exemple) Afin de savoir si le site répond avec http 202 ou pas? p> BlockQuote>
Ping (ICMP) H2>
Tout d'abord, j'aimerais savoir si vous voulez vraiment faire un Ping (ICMP) ou si vous voulez simplement savoir si le site Web revient avec Code 200 (OK) et mesurez le temps nécessaire. Je crois que du contexte que vous ne voulez pas vraiment faire un ping, mais juste une requête HTTP et mesurer le temps. Je demande à cela parce que (je crois) de noeud.js / Ruby / Python ne peut pas être fait à partir d'un utilisateur normal, car nous avons besoin de prises brutes (utilisateur root) pour faire le pinging (ICMP) du langage de programmation. I Par exemple, j'ai trouvé ce ping script en python (je crois aussi que j'ai vu un simple Script rubis quelque part bien que je ne suis pas un très gros programmeur de rubis) mais nécessite un accès root. Je ne crois pas qu'il y ait encore un module de ping pour Node.js. P>
File d'attente de messages H2>
Aussi, y a-t-il mieux mais pas d'évidence solution pour cela? J'ai bien peur la liste peut atteindre 20000 sites Web et ensuite Il n'y a pas assez de temps pour les ping Tous dans les 5 minutes, je dois être pinging. p>
essentiellement, je décris comment pingom, UPTIMEROBOT, et le travail de goûts. P> blockQuote>
Ce dont vous avez besoin pour atteindre ce type d'échelle consiste à utiliser un file d'attente de message comme par exemple < Un href = "http://redis.io"> Redis , beanstakkd ou engrenage. À l'échelle du processus de travailleur pingdom Un ouvrier ne va pas le couper, mais dans votre cas, un ouvrier fera. Je pense (supposer) Redis sera la file d'attente de messagerie la plus rapide à cause de l'extension C (nœud.jod.js), mais à nouveau, je devrais le repasser contre BeanStalkd, qui est une autre file d'attente de message populaire (mais ne dispose pas encore d'une extension C). < / p>
J'ai bien peur que la liste puisse atteindre 20000 Sites Web P> blockQuote>
Si vous obtenez à cette échelle, vous devrez peut-être avoir plusieurs cases à plusieurs boîtes (beaucoup de threads / traitements de travailleurs) pour gérer la charge, mais vous n'êtes pas encore à cette échelle et nœud.js est insensé rapidement . Il pourrait même être capable de gérer cette charge avec une seule boîte, bien que je ne sache pas à coup sûr (vous devez faire / exécuter des points de repère). P>
DataStore / Redis H2>
Je pense que cela pourrait être accessible assez facilement dans Node.js (j'aime vraiment le nœud.js). La façon dont je le ferais est d'utiliser Redis comme mon magasin de données, car il est fou de Fast! P>
xxx pré> en utilisant Node_redis (avec hredis (nœud.js) c bibliothèque). J'ajouterais les URL à ReDis en utilisant SADD . P>
Tâches d'exécution toutes les 5 minutes h2>
Cela pourrait être atteint sans aucun effort. J'utiliserais le
seinterval (rappel, délai, [arg], [...]) code> pour tester plusieurs fois le temps de réponse des serveurs. Obtenez toutes les URL surCallback CODE> de REDIS en utilisant Smembres . Je mettrais toutes les URL (messages) sur la file d'attente de messages en utilisant RPUSH . P>Vérification de la réponse (heure) h2>
Cependant, ce qui se passe quand on ne réponses? Qu'advient-il de ceux qui Après cela? P> BlockQuote>
Je ne comprendrais peut-être pas complètement cette phrase mais ici ça va. Si on échoue, ça échoue. Vous pouvez essayer de vérifier la réponse (heure) à nouveau en 5 secondes ou quelque chose à voir s'il est en ligne. Un algorithme précis pour cela devrait être conçu. Ceux après cela ne devraient avoir rien à voir avec les URL précédentes, à moins que le même serveur ne soit au même serveur. Aussi quelque chose que vous pensez clairement que je suppose que je suppose parce que vous ne devez pas ping toutes ces URL au même serveur en même temps, mais les festes les attentes ou quelque chose. P>
URL de traitement H2> H2> Du Processus de travailleurs (pour l'instant d'un seul serait suffisant) Fetch Message (URL) de Redis à l'aide de Commande BRPOP . Vérifiez le temps de réponse pour l'URL (message) et récupérez la prochaine URL (message) dans la liste. Je ferais probablement un couple de demande simultanée pour accélérer le processus. P> h2>
Excellent! ;) Faites-moi savoir si vous faites du code et postez-le sur GitHub! Excellent post!
J'ai une configuration de projet vraiment de base hébergée à GitHub, que j'aime continuer à travailler à la dernière fois => Github. com / alfredwesterveld / freakinping
Je vérifierai! Merci. BTW, qu'est-ce que vous utilisez pour les tests? Merci.
À l'heure actuelle, je n'ai pas encore de tests. Je devrais avoir honte de moi je suppose. C'est l'une des grandes choses sur la liste!
@Alfred, j'aimerais votre réponse sur celui-ci: Stackoverflow.com/Questtions/4713751/...
@Donald se demandant si vous aviez regardé (utilisé) mon code et je me demandais ce que vous en pensez?
@Alfred, oui, je l'ai testé et j'essayais de trouver la meilleure façon de sauvegarder les URL pour "obtenir" avant d'être récupéré par Redis. De plus, dans votre solution, vous utilisez Redis comme moyen de demander des demandes de file d'attente, que utiliseriez-vous pour enregistrer les résultats de la "GET"? Merci
Alfred, je t'ai ajouté à ma discussion. Je serai dehors pendant quelques heures maintenant, ce serait génial si vous pouviez me dire le meilleur moyen de sauver de manière persistante les résultats du HTTP GET. Merci pour votre temps!!
Oui, je pense que nous pourrions organiser quelque chose via XMPP. Je n'ai pas encore eu de demande XMPP. P.S: J'ai vraiment besoin de me coucher bientôt, surtout si vous n'êtes pas disponible pour les prochaines heures, mais après avoir eu un peu de sommeil, je suis absolument prêt à vous aider!
Si vous êtes curieux, j'ai créé une application appelée Pinger qui le fait. Il est construit sur Ruby sur les rails et rares: P>
Il n'y a pas de "manière fondamentale", puisque vous devez gérer de nombreux cas d'utilisation: p>
pingdom et similaires ne sont pas des outils "de base", et si vous voulez quelque chose de similaire, vous voudrez peut-être payer pour cela ou s'appuyer sur une alternative open-source existante. Je le sais à coup sûr parce que j'ai construit moi-même une application de surveillance à distance. C'est ce qu'on appelle la disponibilité, il est écrit dans Node.Js et MongoDB, et il est hébergé sur GitHub (https://github.com/fzaninotto/uptime). Il a fallu plusieurs semaines de travail acharné pour le développer, alors croyez-moi: ce n'est pas un avertisseur. P>
Il existe des services de qualité gratuits, ce qui nous fournit un site Web et une notification de temps de site Web très stable. Vous pouvez vérifier cette instruction et revoir http://fastjoomlahost.com/how-to- Moniteur-site-up-up-time p>
Vous pouvez aussi faire cela dans node.js à l'aide de moniteur de nœud-ping-ping a> paquet. p>
Cette question est une nouvelle soumission d'une question similaire qui a été migrée vers Défaut du serveur plus tôt aujourd'hui.
Non ce n'est pas. Ceci est lié à la programmation. Pas les commandes Windows. Ne déplacez pas cela sur un défaut de serveur s'il vous plaît.
Ai-je tort ou vous demandez essentiellement comment construire une application de surveillance réseau robuste, fiable et évolutive? :) Je pense que vous devriez être plus précis.
@Mladen, c'est fondamentalement ça;) Pouvez-vous me dire comment tu ferais ça? Merci!
Vous pouvez utiliser l'une des applications à cet effet, telles que Pingdom ou une application de surveillance de disponibilité et de performance développée par moi appelée Pinglist: Pingli.st