2008-12-23 23 views
2

Cette question concerne toute une série de problèmes similaires, mais je vais le demander comme exemple concret.Comment détecter de façon fiable la consommation de ressources anormales?

J'ai un serveur avec un système de fichiers dont le contenu fluctue. Je dois surveiller l'espace disponible sur ce système de fichiers pour m'assurer qu'il ne se remplit pas. Par souci d'argument, supposons que s'il se remplit, le serveur tombe en panne.

Peu importe ce que c'est - il pourrait, par exemple, être une file d'attente de "travail".

Pendant le fonctionnement « normal », l'espace disponible varie dans les limites « normales », mais il peut y avoir des pathologies:

  • Quelques autres (éventuellement externe) composant qui ajoute le travail peut être à court de contrôle
  • Certains composants qui élimine le travail s'empare, mais reste non détecté

les caractéristiques statistiques du processus sont essentiellement inconnus. Ce que je cherche est un algorithme qui prend, en entrée, des mesures périodiques chronométrées de l'espace disponible (les suggestions alternatives pour l'entrée sont les bienvenues), et produit en sortie, une alarme quand les choses sont "anormales" et le système de fichiers est "susceptible de se remplir". Il est évidemment important d'éviter les faux négatifs, mais presque aussi important d'éviter les faux positifs, pour éviter d'engourdir le cerveau de l'administrateur qui reçoit l'alarme. J'apprécie qu'il existe des solutions alternatives comme jeter plus d'espace de stockage au problème sous-jacent, mais j'ai réellement connu des cas où 1000 fois ne suffisait pas.

Les algorithmes qui prennent en compte les mesures historiques stockées sont bien, bien que les algorithmes à la volée qui minimisent la quantité de données historiques soient préférés. J'ai accepté la réponse de Frank et je retourne maintenant à la planche à dessin pour étudier ses références en profondeur.

Il y a trois cas, je pense, d'intérêt, non pas:

  1. Le scénario « Vente de Harrods vient de commencer »: un pic d'activité qui à une seconde résolution est « hors composer ", mais ne représente pas un réel danger d'épuisement des ressources;
  2. Le scénario «Réchauffement climatique»: nécessité de prévoir une croissance (relativement) stable; et
  3. Le scénario "Google est en train de m'envoyer une copie non sollicitée de The Index": cela épuisera toutes mes ressources dans un délai relativement court, sauf si je fais quelque chose pour l'arrêter.

Il est le dernier qui est (je pense) le plus intéressant et difficile, du point de vue d'un sysadmin ..

Répondre

1

Si elle est en fait lié à une file d'attente de travail, la théorie des files d'attente peut être meilleur itinéraire pour une réponse.

Pour le cas général vous pourriez peut-être tenter une (multiple?) régression linéaire sur les données historiques, pour détecter s'il existe une tendance à la hausse statistiquement significative de l'utilisation des ressources qui risque de poser problème si elle se poursuit (vous pouvez également prévoir combien de temps elle doit continuer à causer des problèmes de cette technique - il suffit de définir un seuil pour 'problème' et d'utiliser la pente de la tendance pour déterminer combien de temps cela prendra). Vous devriez jouer avec cela et avec les variables que vous collectez, pour voir s'il y a une relation statistiquement significative que vous pouvez découvrir en premier lieu. Bien qu'il aborde un sujet complètement différent (le réchauffement de la planète), j'ai trouvé que le blog de tamino (tamino.wordpress.com) était une très bonne ressource pour l'analyse statistique des données pleines de connaissances et d'inconnues. Par exemple, voir this après.

edit: comme dans mon commentaire Je pense que le problème est quelque peu analogue au problème de GW. Vous avez des sursauts d'activité à court terme qui sont en moyenne à zéro, et des tendances à long terme superposées qui vous intéressent. Il y a probablement plus d'une tendance à long terme, et cela change de temps en temps. Tamino décrit une technique qui peut convenir à cela, mais malheureusement je ne trouve pas le poste auquel je pense. Il implique des régressions glissantes le long des données (imaginez plusieurs lignes adaptées aux données bruitées), et laissez les données choisir les points d'inflexion. Si vous pouviez le faire, vous pourriez peut-être identifier un changement significatif dans la tendance. Malheureusement, il peut seulement être identifiable après le fait, car vous devrez peut-être accumuler beaucoup de données pour obtenir une signification. Mais il pourrait encore être à temps pour éviter l'épuisement des ressources. Au moins, cela peut vous donner un moyen robuste de déterminer le type de marge de sécurité et les ressources dont vous avez besoin dans le futur.

+0

+1 Frank, merci pour votre réaction réfléchie. J'ai exploré la théorie de la file d'attente; et le lissage statistique, le filtrage de Kalman et ainsi de suite. Mais la grande question qui reste est de savoir comment distinguer entre une poussée soudaine d'activité et une catastrophe imminente. –

+0

BTW, super lien vers l'article sur le blog de Tamino –

+0

Je pense que le problème est analogue aux problèmes que traite Tamino. Une brusque poussée d'activité est comme «changements de temps» (bruit à court terme) et ce que vous voulez identifier est comme «changements dans le climat» (une tendance à long terme). Donc, il peut y avoir des techniques que vous pouvez reporter à partir du problème GW. – frankodwyer