Errores de recopilar métricas en Windows (parte 1)

¡Oye! He estado trabajando en métricas de Windows durante bastante tiempo. El proceso de recolección ya se ha depurado, y los detalles comienzan a desaparecer de la memoria, por lo que es hora de transferir los conocimientos adquiridos, por así decirlo, al papel. El artículo tratará sobre lo que pasó, lo que se entregó, cómo trabajar con él, qué rastrillos y muletas serán para ellos. En el camino, tocaremos .net clr, asp.net, wcf, iis, signalr, etw y algo más. Un artículo para los que están en el tema, bueno, o casi ...





Por el momento, las métricas en Windows se pueden dividir en dos sistemas: contadores de rendimiento (que sea heredado) y contadores de eventos (modernos y juveniles).





Los mostradores de rendimiento no son solo un sándwich, sino una ensalada completa de diferentes ingredientes y toneladas de puntos de entrada para trabajar con ellos.





Y como puede ver en el diagrama, todo se reduce a un punto PDH, aunque puede sondear los componentes en cualquier nivel: ya sea advapi, registro o perflib.





, , , ( prometheus), ( PDH) - , , , - ... , grafana , , , : w3wp#101, _LM_W3SVC_1001_ROOT, --62, C400001640000001, Service@||Service.svc. - . - - . , :





Locate and then click the following registry subkey:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance

On the Edit menu, click New , and then click DWORD Value .

Right-click New Value #1 , click Rename , and then type ProcessNameFormat to name the new value.

Right-click ProcessNameFormat , and then click Modify .

In the Data value box, type one of the following values, and then click OK :

1 : Disables PID data. This value is the default value.

2 : Enables PID data.

Right-click New Value #1 , click Rename , and then type ProcessNameFormat to name the new value.  Right-click ProcessNameFormat , and then click Modify. 

1 : Disables PID data. This value is the default value.

2 : Enables PID data.

      
      



: PID_ProcessName. , , - ( ), . "".





, ...





Process





, , , IIS (w3wp), - w3wp#101 . - ID Process, PID`a . ...





-, ( ), , , : 100 150, , , , .. 150 149 (w3wp#149).





-, performance NtQueryInformationProcess ( ), , , - .





PDH , wildcard "(*)" ( )





[
    "\\\\localhost\\Process(w3wp#100)\\ID Process",
    "\\\\localhost\\Process(w3wp#101)\\ID Process",   
    ...
] 
      
      



, , . .net ETW. , , ( , ). .





ASP.NET Applications





_LM_W3SVC_1001_ROOT, 1001 - IIS. , , , , PID, ID . , ( ).





IIS , , , , ( ), , - .





IIS. : xml, - , . XmlDocument. ...





const string section = "/configuration/system.applicationHost/sites/site"

XmlNodeList nodes = doc.DocumentElement.SelectNodes(section);

foreach (XmlNode node in nodes)
{
	w3svcs.TryAdd($"_LM_W3SVC_{node.Attributes["id"].Value}_ROOT", node.Attributes["name"].Value);
}
      
      



ServiceModelService 4.0.0.0





WCF , - , . , SVC , . - , , , . . , grafana.





HTTP Service Url Groups





- C400001640000001. , . - , . , :





netsh http show servicestate view=requestq verbose=no
      
      



Request queue name: Request queue is unnamed.
    Version: 2.0
    State: Active
    Request queue 503 verbosity level: Basic
    Max requests: 1000
    Number of active processes attached: 1
    Process IDs:
        33800
    URL groups:
    URL group ID: C400001640000001
        State: Active
        Request queue name: Request queue is unnamed.
            Number of registered URLs: 1
            Registered URLs:
                HTTP://+:80/health/
        Server session ID: EF00001020000031
            Version: 2.0
            State: Active
      
      



: URL group ID ( ) Process IDs, .





, API URL groups, (Server session ID), , , .





, . , , , "@"Process\sIDs:[^\d]?(\d+).?URL\sgroup\sID:\s([a-zA-Z0-9]+)", - , , .





SignalR





performance counters. , . "" : , . .





El sistema de contadores de rendimiento está lleno de misterios y misterios. No es fácil trabajar con él y, desafortunadamente, muchos productos nuevos (de hecho, como el propio microsoft) continúan usándolo activamente. El artículo resultó no ser pequeño, muchas cosas pueden parecer incomprensibles y los detalles de implementación no se revelan.





Contadores de eventos Decidí pasar a otra parte ... ¡Las preguntas son bienvenidas!








All Articles