RPC-Service - ManagerDiagnostic

Der ManagerDiagnostic ist ein RPC-Dienst (Remote Procedure Call), der für alle Managertypen außer Data-Manager verfügbar ist. Er ermöglicht das Abrufen von Diagnosedaten mit Flags in C++, C#, Node.js oder CTRL.

Übersicht

Der ManagerDiagnostic ist ein RPC-Dienst für alle WinCC OA-Manager mit Ausnahme des Data-Managers. Dieser Dienst ist über mehrere Sprachen zugänglich, darunter C++, C#, Node.js und CTRL-Skripting.

Clients senden Anfragen an diesen Dienst mit bestimmten Report-Flags, um Diagnosen zu erhalten. Diese Flags können als String oder dyn_string übergeben werden. Der Dienst antwortet mit einer MappingVar Struktur, welche die angeforderten Daten enthält.

Funktionen

Table 1. Funktionen
Funktion Beschreibung
getMetrics()

Gibt einen MappingVar zurück, der eine Liste der unterstützten Berichtsflags unter dem Schlüssel metrics enthält.

getMetricData(reportFlags)

Fordert Metrikdaten auf der Grundlage der übergebenen reportFlags an, die als string oder dyn_string übergeben werden können. Gibt einen MappingVar mit den angeforderten Daten zurück.

Beispiel (CTRL)

#uses "vrpc"

void main()
{
  unsigned managerType = EVENT_MAN; // Specify the manager type - see chapter myManType()
  int managerNumber = 0;  // Specify the manager number - This is the number of the manager for which you want to call up the procedure. 
  // For the administration of managers, see chapter Managerverwaltung.  
  
  DebugN("The Service Manager that is used: " + "(" + managerType + ")" + ", Number: " + managerNumber);

  // Run the manager
  run(managerType, managerNumber);
}

void run(unsigned managerType, int managerNumber)
{
  // Create a client context
  VrpcClientContext clientContext = VrpcClientContext();

  // Create a stub
  VrpcStubOptions options = VrpcStubOptions();

  if (managerType != NO_MAN && managerNumber != -1)
    options.withManagerSpecificService(managerType, managerNumber);
  
  // ManagerDiagnostic is the name of the vRPC Service
  shared_ptr<VrpcStub> stub = new VrpcStub("ManagerDiagnostic", options);

  try
  {
    VrpcResponseData responseData = stub.callFunction("getMetrics", clientContext, "");

    // Check and print the response
    anytype response = responseData.getResponse();
    DebugN(response);

    // Send a request to the service
    VrpcResponseData responseData = stub.callFunction("getMetricData", clientContext, makeDynString("DISPATCH"));
    //VrpcResponseData responseData = stub.callFunction("getMetricData", clientContext, makeDynString("DPIDENTIFICATION", "DPCONNECTS,SUMMARY"));
    //VrpcResponseData responseData = stub.callFunction("getMetricData", clientContext, "MSGQUEUE");

    // Check and print the response
    anytype response = responseData.getResponse();
    DebugN(response);
  }
  catch
  {
    VrpcException exception = vrpcGetLastException();
    DebugN("Exception: " + exception.toString());
  }
}

Hinweise

  • Stellen Sie immer sicher, dass der angegebene Manager aktiv ist.
  • Verwenden Sie die Funktion getMetrics(), um verfügbare Flags zu prüfen.
  • Behandlung von Ausnahmen in angemessener Weise, um Störungen bei der Diagnose zu vermeiden