web-dev-qa-db-fra.com

Comment puis-je surveiller l'utilisation et les processus de la CPU sur Windows Server 2012 en tant que service sur une période de 24 heures?

Nous avons une longue opération performante qui fonctionne pendant 6 heures. Quand il fut enfermé, quelque chose est arrivé pendant 5 minutes où sa performance a chuté de façon spectaculaire et a causé quelques délaies, au milieu de la nuit. Je soupçonne qu'un autre processus a lancé et martelé la CPU ou similaire.

La suggestion sur ce site de la recherche est d'utiliser ProcessMonitor pour surveiller la CPU. Cependant, il ne semble que capturer du trafic pendant son exécution, et c'est une application de bureau. Mon instance de serveur Windows vous démarre après avoir été inactive pendant 10 minutes, contrôlée par la stratégie de groupe et je ne peux pas le changer, je ne peux donc pas utiliser les applications de bureau pour la surveillance.

J'ai besoin de surveiller l'utilisation du processeur sur une période de 24 heures. Je ne suis pas seulement intéressé par l'utilisation du nom et de la CPU (%) afin que je puisse savoir quoi, si quelque chose, frappe et ruine les choses.

Parce que vous êtes coupé, j'ai vraiment besoin de quelque chose qui peut fonctionner comme service Windows.

Y a-t-il un moyen de le faire (à l'aide de processus de processeur ou d'outil similaire - Sûrement Windows Server a quelque chose intégré?) En tant que service, je n'ai donc pas besoin d'être connecté à un bureau distant ou que je vais devoir trouver une sorte de Souris de la souris et laissez mon ordinateur toute la nuit?

Éditer:

Le moniteur de performance semble prometteur. Il est difficile de savoir comment le configurer pour me donner ce que je veux.

J'ai fait une CPU de collecteur de données personnalisé et ID de processus:

enter image description here

Ce que je veux faire, c'est capable de voir l'utilisation de la CPU de chaque processus à un moment donné, comme vous pouvez le faire dans le gestionnaire de tâches, sauf avec un graphique et une capacité à afficher un instantané à tout moment pendant la période de surveillance.

Je peux donc voir un graphique de 24 heures, voir le point où il y a une pointe, cliquez dessus et voyez quel processus le causent.

Je ne suis même pas convaincu que ma configuration ci-dessus si je le fais que le travail me dira le nom du processus, il est indiqué que cela est un identifiant de processus, si cela s'avère être un GUID ou similaire, il n'y a probablement aucune aide non plus, surtout si le processus commence et s'arrête. et ne fonctionne toujours pas quand je vais enquêter.

6
NibblyPig

Utilisation de la suggestion de Daniel K du moniteur de performance, j'ai découvert comment faire cela.

  • Charger le moniteur de performances
  • Aller à 'Data Collector Ensems'
  • Développer 'Utilisateur défini'
  • Faire un nouveau "jeu de données"
  • Sélectionnez Créer manuellement (avancé), Remarque Vous ne pouvez pas modifier le nom sans la suppression de sorte que cela soit sensible maintenant
  • Appuyez sur Suivant, choisissez "Créer des journaux de données" et "Compteur de performance"
  • Appuyez sur Suivant, appuyez sur Ajouter.
  • En haut à gauche, développez 'Process', cliquez sur "% Temps du processeur" et tout ce que vous pourriez vouloir.
  • En bas à gauche, cliquez sur ''
  • Cliquez sur le bouton 'Ajouter >>' et appuyez sur OK
  • Sélectionnez un intervalle d'échantillon approprié et continuez en appuyant sur Suivant jusqu'à atteindre la fin de l'assistant.
  • Vous pouvez commencer à collecter en cliquant avec le bouton droit de la souris sur le jeu de collecteur de données et en appuyant sur Démarrer, ou allez à propriétés dessus et à configurer la planification. J'ai trouvé que mon collecteur de données a cessé de fonctionner après 30 minutes sans mettre une condition d'arrêt, mais cela peut avoir été une anomalie.
  • Une fois votre collecte de données terminée, développez Rapports> Utilisateur défini> Votre jeu de données
  • Double-cliquez pour l'ouvrir.
  • Avis au bas, il est indiqué que "% du temps du processeur" et l'instance est "_total". Par défaut, il vous montre l'utilisation totale de la CPU. Cela inclut le "temps de ralenti" afin qu'il aboutira toujours à 100%.
  • Cliquez sur le bouton vert + dans la barre supérieure juste au-dessus du graphique (pas dans la fenêtre supérieure)
  • Cliquez sur "Process" en haut à gauche et en bas, vous pouvez choisir des processus individuels à afficher ou sélectionner "et appuyez sur Ajouter.
  • Cliquez sur OK, et vous devriez voir un graphique détaillé avec l'utilisation de la CPU par processus.
1
NibblyPig

Windows Server dispose d'un outil intégré pour afficher les données de performance en temps réel ou pour collecter des données dans les journaux pour examen ultérieur. Je pense que cela fera exactement ce que vous recherchez.

screenshot of Performance Monitor

Voir Cet article Pour un didacticiel de base sur l'utilisation de Performance Monitor pour la journalisation sur Windows Server 2012 R2.

Voir Cet excellent article sur tous les outils disponibles pour examiner les performances sur Windows (des outils interactifs).

5
Daniel K

Si les compteurs de performance de Windows ne fonctionnent pas pour vous (en effet, ils ont des limitations ennuyeuses), vous pouvez utiliser une collection de métriques dédiées et une solution de visualisation. Cela pourrait être un peu trop exclu, mais peut-être néanmoins un ajout précieux à votre boîte à outils.

Je peux recommander Prométhée comme solution de métrique à utiliser dans un tel cas.

  1. Prométheus est la base de données qui stocke les données. Installez-le sur une machine (peut être identique à celui que vous surveillez). L'option d'installation la plus simple peut être un conteneur de docker sur Linux, mais pour une utilisation insuffisante courte, vous pouvez simplement l'exécuter comme un exe. Il a une interface graphique Web pour interroger les données.
  2. WMI_EXporter est l'agent de collecte de données. Installez-le et assurez-vous d'activer les métriques métriques per-processus au moment de l'installation (vous devez fournir l'argument correspondant).
  3. Définir WMI_EXSPORTER comme une cible dans le fichier de configuration de Prométheus. Cela fera que Prométheus tire des données de l'exportateur (l'intervalle par défaut était toutes les 60 secondes, je crois).

Vient ensuite la partie difficile. Prometheus est une base de données - vous pouvez utiliser l'interface graphique Web pour interroger les données brutes, mais l'interface graphique n'est pas très conviviale et la langue de requête PromQL peut être inutile si vous n'êtes pas utilisé pour travailler avec des données de la série TIME. Je recommande la requête irate(wmi_process_cpu_time_total[5m]) pour commencer avec. Cela vous donnera un graphique de l'utilisation de la CPU en secondes de l'heure du processeur par seconde de temps réel, par processus.

irate _ vous donnera les données entre les deux derniers points de données. Si vous souhaitez que les moyennes lisses utilisent rate qui utilisera le 5m Comme la période de calcul de la moyenne (irate _ va simplement l'utiliser comme limite maximale).

Prométhée est un système de métriques puissant qui prends de faire pour comprendre. Cependant, cela peut bien vous servir à long terme dans la fabrication de systèmes automatisés observables.

Ps. Prométhée est généralement déployé avec Grafana comme interface graphique de visualisation (remplaçant les barebones Prometheus intégrée GUI). Cependant, pour un dépannage rapide, vous n'aurez pas besoin de cela.

PPS. processus exportateur et node_exporter sont l'équivalent Linux à l'exportateur WMI.

0
Sander