Surveillance simple du serveur Web (en vie)

8

Une astuce sur les logiciels pour contrôler si un serveur Web est opérationnel sur Linux? Il devrait pouvoir fonctionner sans rien savoir de plus que l'URL. Et il doit avoir des fonctionnalités pour envoyer une alerte e-mail lorsque le site tombe en panne. Cela ne devrait pas être difficile d'écrire un script pour cela, mais cela semble inutile s'il y a déjà quelque chose de bien là-bas.

Notez que je vais surveiller les serveurs internes, donc cela doit être un outil qui s'exécute sur ma machine sur le même réseau, pas des services Web externes.

Et notez que des solutions petites et simples sont préférées.

Mise à jour : j'ai finalement créé un petit script python que j'utilise actuellement pour cela, il peut être trouvé ici .

Zitrax
la source
Voir aussi: serverfault.com/questions/44/… - Ce sujet a été largement traité à un niveau élevé.
Warner

Réponses:

12

Vous pouvez utiliser wget dans un script comme celui-ci

wget --timeout=3 --tries=1 --spider --no-check-certificate http://serverfault.com

if [ $? -ne 0 ];then
  echo "Site Down" | mail -s "Site Down" [email protected]
fi

Et vous recevrez un e-mail si wget ne peut pas accéder au site pour la première fois dans les trois secondes.

Configurez un travail cron pour exécuter le script toutes les quelques minutes.

Il existe de nombreuses autres alternatives, mais c'est probablement la plus simple à configurer à partir de zéro.

Richard Holloway
la source
7
tant que vous ne l'exécutez pas sur le serveur que sa surveillance - vous n'avez aucune idée de la fréquence à laquelle je l'ai vu faire ;-)
Geraint Jones
Merci. De plus, j'ai trouvé que --spider est également une option utile car elle évite d'enregistrer réellement la page sur le disque.
Zitrax
2
Et sans installer «postfix», la commande mail échoue silencieusement à envoyer.
Zitrax
3
@Zitrax: Et sans que wget soit installé, vous obtiendrez une erreur. Sans le réseau, le wget échouera. Sans le script exécutable, le travail cron échouera et ainsi de suite. De plus, je n'ai pas installé «postfix» et cela fonctionne très bien pour moi car j'utilise exim.
Richard Holloway
1
Pourquoi --no-check-certificate? Être averti d'un déploiement TLS interrompu est également une information précieuse.
Avamander
7

Vous avez plusieurs options, je vous en propose deux.

  • Nagios est une application de surveillance complète capable de surveiller beaucoup plus que http, mais il gère également cela. Il peut également créer toutes sortes de repots ("Dites-moi le pourcentage de disponibilité de notre serveur / service X cette semaine / mois / année ...")

  • Monit est un autre choix populaire. Peut-être pas aussi riche en fonctionnalités que Nagios, mais c'est quand même bien.

Janne Pikkarainen
la source
Je cherchais quelque chose de petit et de simple, alors monit semble plus proche de cela.
Zitrax
1

Eh bien, si vous voulez exécuter quelque chose vous-même.

Voici quelques options:

Ou si vous souhaitez une solution gérée:

Personnellement, je pense que Zabbix et Zenoss sont exagérés si vous souhaitez simplement surveiller l'état d'un serveur Web. Mais si vous prévoyez également de surveiller autre chose, ils ont plus de fonctionnalités que vous n'en aurez jamais besoin;)

Wolph
la source
Je suppose que pingdom et les tendances haussières ne peuvent pas surveiller les sites sur mon réseau interne.
Zitrax
@Zitrax: non, ils ne peuvent pas. J'ai relu cette partie.
Wolph
1

J'ai surévalué la réponse de Richard et Janne, mais si vous voulez plus de détails sur ce que votre serveur Web envoie et reçoit, les deux premiers chapitres du livre O'Reilly "Programmation client Web avec Perl" de Clinton Wong donnent un excellent aperçu du protocole HTTP. Si vous voulez une surveillance plus détaillée que juste haut / bas et que vous souhaitez inclure des codes de réponse, etc., c'est un bon endroit pour commencer.

Le livre est ancien, mais toujours valide. Publié en 1997, O'Reilly a mis en ligne gratuitement le contenu du livre sur http://oreilly.com/openbook/webclient/ dans le cadre de leur initiative OpenBook.

gWaldo
la source
0

Je voterais pour la réponse de Janne si j'avais un représentant.

Remarque importante à propos de Nagios, le fait qu'il soit à part entière ne signifie pas que c'est une installation dure et longue, c'est assez simple et convivial.

Deuxième chose, vous devriez vraiment vérifier ce que votre fournisseur de matériel a à offrir. Par exemple, j'utilise HP Proliants et ils ont de très bons rpm qui aident.

bangolio
la source
0

Si vous aimez ce que fait Nagios, mais que vous ne voulez pas vous plonger dans les éléments internes, vous pouvez également consulter Opsview . Il s'agit de Nagios et de quelques autres outils, mais livré via une belle interface graphique. C'est un très bon point de départ.

SystemParadox
la source
0

Je conviens que Nagios est un excellent logiciel, mais si vous voulez un logiciel gratuit, je vous suggère de jeter un œil à AppPerfect Agentless Monitor . La surveillance de serveur Linux avec AppPerfect est extrêmement légère et ajoute une surcharge négligeable au système cible pendant la surveillance. Vous pouvez surveiller toutes les statistiques importantes liées au processeur, au disque, au réseau et à la mémoire à l'aide de cet outil. La configuration est très simple et le logiciel est très facile à utiliser. Une documentation claire et un tutoriel sont également disponibles ici pour la surveillance des serveurs Linux

Steve Young
la source
0

Une solution que j'utilise est le consul de HashiCorp .

C'est certainement plus qu'un simple script avec une sortie e-mail, mais la configuration du type de surveillance dont vous parlez est toujours très facile (quelques lignes de YAML ou JSON).

Vous créeriez très probablement un modèle, mais la surveillance d'un seul serveur pourrait se faire comme suit:

{
  "service": {
    "name": "web", 
    "tags": ["production"], 
    "port": 80,
    "check": {
      "id": "front-end",
      "name": "HTTP front-end for web service",
      "http": "http://web.domain.tld",
      "interval": "10s",
      "timeout": "1s"
    }
  }
}

L'une des raisons pour lesquelles il est suggéré est que cela vous permet d'aller au-delà de la surveillance `` juste '' du frontal Web si vous le souhaitez, et vous permet également de regrouper les contrôles par service (par exemple, votre report_serverservice pourrait avoir un contrôle pour le front Web). end, un pour le back-end Web et un pour la base de données principale, qui fourniraient tous des alertes liées à ce service).

iwaseatenbyagrue
la source