Fürt teljesítményelőzményeinek lekérése
A következőkre vonatkozik: Azure Stack HCI, 23H2 és 22H2 verzió; Windows Server 2022, Windows Server 2019
Az Állapotfigyelő szolgáltatás csökkenti az élő teljesítményre és a kapacitásra vonatkozó adatok Közvetlen tárolóhelyek fürtből való lekéréséhez szükséges munkát. Az egyik parancsmag az alapvető metrikák válogatott listáját tartalmazza, amelyeket a rendszer hatékonyan gyűjt össze és összesít dinamikusan a csomópontok között, és beépített logikával észleli a fürttagságokat. Minden érték valós idejű és kizárólag az adott időponthoz kötött.
Használat a PowerShellben
A teljes Közvetlen tárolóhelyek fürt metrikáinak lekéréséhez használja az alábbi parancsmagot:
Get-ClusterPerformanceHistory
Tipp
Néhány billentyűleütés mentéséhez használja az Get-ClusterPerf aliast.
Egy adott kötet vagy kiszolgáló metrikáit is lekérheti:
Get-Volume -FileSystemLabel <Label> | Get-ClusterPerformanceHistory
Get-StorageNode -Name <Name> | Get-ClusterPerformanceHistory
Használat .NET-ben és C-ben#
Ez a szakasz bemutatja, hogyan csatlakozhat az állapotfigyelő szolgáltatáshoz, hogyan használhat felderítő objektumokat, és hogyan valósíthat meg megfigyelőt a streamelési metrikák elindításához.
Kapcsolódás
Az állapotfigyelő szolgáltatás lekérdezéséhez létre kell hoznia egy CimSession-kapcsolatot a fürttel. Ehhez olyan dolgokra van szüksége, amelyek csak a Teljes Microsoft .NET-ben érhetők el, ami azt jelenti, hogy ezt nem teheti meg közvetlenül webről vagy mobilalkalmazásból. Az ebben a szakaszban szereplő kódminták a C#-ot használják, amely az adatelérési réteg legegyértelmesebb választása.
using System.Security;
using Microsoft.Management.Infrastructure;
public CimSession Connect(string Domain = "...", string Computer = "...", string Username = "...", string Password = "...")
{
SecureString PasswordSecureString = new SecureString();
foreach (char c in Password)
{
PasswordSecureString.AppendChar(c);
}
CimCredential Credentials = new CimCredential(
PasswordAuthenticationMechanism.Default, Domain, Username, PasswordSecureString);
WSManSessionOptions SessionOptions = new WSManSessionOptions();
SessionOptions.AddDestinationCredentials(Credentials);
Session = CimSession.Create(Computer, SessionOptions);
return Session;
}
A megadott felhasználónévnek a célszámítógép helyi rendszergazdájának kell lennie.
Javasoljuk, hogy a Password SecureStringet közvetlenül a felhasználói bemenetből valós időben hozza létre, hogy a jelszó soha ne legyen a memóriában világos szövegként tárolva. Ez segít enyhíteni a különböző biztonsági problémákat. A gyakorlatban azonban a fenti módon történő összeállítás gyakori prototípus-készítési célokra.
Objektumok felderítése
A CimSession létrejöttével lekérdezheti a Windows Management Instrumentation (WMI) eszközt a fürtön.
A hibák vagy metrikák lekérése előtt több releváns objektum példányait kell lekérnie. Először szerezze be a fürt Közvetlen tárolóhelyek jelölő MSFT_StorageSubSystem. Ezzel lekérheti a fürt minden MSFT_StorageNode és az adatkötetek minden MSFT_Volume . Végül be kell szereznie a MSCluster_ClusterHealthService, magát az állapotfigyelő szolgáltatást.
CimInstance Cluster;
List<CimInstance> Nodes;
List<CimInstance> Volumes;
CimInstance HealthService;
public void DiscoverObjects(CimSession Session)
{
// Get MSFT_StorageSubSystem for Storage Spaces Direct
Cluster = Session.QueryInstances(@"root\microsoft\windows\storage", "WQL", "SELECT * FROM MSFT_StorageSubSystem")
.First(Instance => (Instance.CimInstanceProperties["FriendlyName"].Value.ToString()).Contains("Cluster"));
// Get MSFT_StorageNode for each cluster node
Nodes = Session.EnumerateAssociatedInstances(Cluster.CimSystemProperties.Namespace,
Cluster, "MSFT_StorageSubSystemToStorageNode", null, "StorageSubSystem", "StorageNode").ToList();
// Get MSFT_Volumes for each data volume
Volumes = Session.EnumerateAssociatedInstances(Cluster.CimSystemProperties.Namespace,
Cluster, "MSFT_StorageSubSystemToVolume", null, "StorageSubSystem", "Volume").ToList();
// Get MSCluster_ClusterHealthService itself
HealthService = session.QueryInstances(@"root\MSCluster", "WQL", "SELECT * FROM MSCluster_ClusterHealthService").First();
}
Ezek ugyanazok az objektumok, amelyeket a PowerShellben kap olyan parancsmagok használatával, mint a Get-StorageSubSystem, a Get-StorageNode és a Get-Volume.
Ugyanazokat a tulajdonságokat érheti el, amelyek a Storage Management API-osztályokban vannak dokumentálva.
using System.Diagnostics;
foreach (CimInstance Node in Nodes)
{
// For illustration, write each node's Name to the console. You could also write State (up/down), or anything else!
Debug.WriteLine("Discovered Node " + Node.CimInstanceProperties["Name"].Value.ToString());
}
A GetMetric meghívásával megkezdheti az alapvető metrikák szakértő által válogatott listájának streamelt mintáit a MetricName paraméter által biztosított metrikák alapján, amelyeket a rendszer hatékonyan gyűjt össze és összesít dinamikusan a csomópontok között, és beépített logikával észleli a fürttagságokat. A minták a Megadott időkeret alapján érkeznek a StreamName paraméterből.
Az elérhető metrikák teljes listájáért tekintse meg a Közvetlen tárolóhelyek teljesítményelőzményeit.
IObserver.OnNext()
Ez a mintakód a Megfigyelő tervezési mintáját használja egy olyan Megfigyelő implementálásához, amelynek OnNext() metódusát meghívja a rendszer, amikor minden új metrikaminta megérkezik. Az OnCompleted() metódust a rendszer meghívja, ha/amikor a streamelés véget ér. Használhatja például a streamelés újrainicializálására, hogy az határozatlan ideig folytatódjon.
class MetricsObserver<T> : IObserver<T>
{
public void OnNext(T Result)
{
// Cast
CimMethodStreamedResult StreamedResult = Result as CimMethodStreamedResult;
if (StreamedResult != null)
{
CimInstance Metric = (CimInstance)StreamedResult.ItemValue;
Console.WriteLine("MetricName: " + Metric.CimInstanceProperties["MetricId"].Value);
IEnumerable<CimInstance> Records = (IEnumerable<CimInstance>)Metric.CimInstanceProperties["Records"].Value;
foreach (CimInstance Record in Records)
{
// Each Record has "TimeStamp" and "Value. For Illustration, just print the metric"
Console.WriteLine(record.CimInstanceProperties["TimeStamp"] + ": " + record.CimInstanceProperties["Value"]);
}
// TODO: Whatever you want!
}
}
public void OnError(Exception e)
{
// Handle Exceptions
}
public void OnCompleted()
{
// Reinvoke BeginStreamingMetrics(), defined in the next section
}
}
Streamelés indítása
A Megfigyelő definiálása után megkezdheti a streamelést.
Adja meg azt a CimInstance célpéldányt , amelyre a metrikák hatókörét korlátozni szeretné. Ez lehet a fürt, bármely csomópont vagy bármilyen kötet.
A count paraméter a minták száma a streamelés vége előtt.
CimInstance Target = Cluster; // From among the objects discovered in DiscoverObjects()
public void BeginStreamingMetrics(CimSession Session, CimInstance HealthService, CimInstance Target)
{
// Set Parameters
CimMethodParametersCollection MetricsParams = new CimMethodParametersCollection();
string[] metricNames = new string[] { "ClusterNode.Cpu.Usage,ClusterNode=RRN44-13-01", "ClusterNode.Cpu.Usage.Host,ClusterNode=RRN44-13-01" };
MetricsParams.Add(CimMethodParameter.Create("MetricName", metricNames, CimType.StringArray, CimFlags.In));
MetricsParams.Add(CimMethodParameter.Create("StreamName", "LastHour", CimType.String, CimFlags.In));
// Enable WMI Streaming
CimOperationOptions Options = new CimOperationOptions();
Options.EnableMethodResultStreaming = true;
// Invoke API
CimAsyncMultipleResults<CimMethodResultBase> InvokeHandler;
InvokeHandler = Session.InvokeMethodAsync(
HealthService.CimSystemProperties.Namespace, HealthService, "GetMetric", MetricsParams, Options
);
// Subscribe the Observer
MetricsObserver<CimMethodResultBase> Observer = new MetricsObserver<CimMethodResultBase>(this);
IDisposable Disposeable = InvokeHandler.Subscribe(Observer);
}
Ezek a metrikák megjeleníthetők, tárolhatók egy adatbázisban, vagy bármilyen módon használhatók, ahogyan ön látja.
További referenciák
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: