远程计算机进程内存使用率.net core

问题描述 投票:1回答:1

我想监视.net core 2.2中的远程计算机进程内存使用情况。我的应用程序将在Intranet中运行,并检查远程计算机的CPU使用率,进程的内存使用率。开发自己的应用程序性能监视应用程序。

尝试使用System.Diagnostics的'Process'类,但得到System.InvalidOperationException:'无法连接到远程计算机。'错误消息。使用的计算机名称,但出现相同的错误。

Process[] remoteByName = Process.GetProcessesByName("notepad", "\\192.168.3.114");

Process[] remoteByName = Process.GetProcessesByName("notepad", "192.168.3.114");
  1. 找不到任何接受带有密码的用户名来访问远程计算机的方法。这种方法可用吗?
  2. 我需要关闭远程计算机防火墙吗?
  3. 还有其他方法可以访问.net核心中的远程计算机的进程吗?
c# .net-core asp.net-core-2.0 remote-access
1个回答
-1
投票

据我所知,Process类使用WMI在远程计算机上执行操作。如果Process类接口不足以完成您的任务,则可以直接使用WMI queries

授权

默认情况下,Process类使用当前的Windows凭据来授权您在远程计算机上。如果您的远程计算机具有不同的登录凭据,则可以switch context进行正确的授权。这是一个棘手的解决方案,但它可以工作。检查this article以了解如何完成。

无论如何,您可以使用我之前提到的WMI查询来执行授权并获取所需的数据。它是更复杂但灵活的解决方案。

防火墙

当然,防火墙可以阻止远程连接。 WMI默认使用端口135来访问远程计算机,因此您需要在目标计算机上将其打开。

我建议您检查official documentation有关WMI与远程计算机的连接以正确设置所有配置。

其他方法

您可以使用客户端-服务器体系结构执行此类监视任务。只需创建一个服务器应用程序,该服务器应用程序将用于聚合来自客户端的信息。接下来,创建一个客户端应用程序,该客户端应用程序将用于收集监视数据并将其发送到服务器。然后,只需将许多客户端应用程序部署到目标计算机,然后将其配置为将所有必需的信息发送到服务器即可。相应地部署一个服务器应用程序。

此体系结构允许您创建自己的安全协议,用于客户端和服务器之间的消息传递。您可以选择应用程序将要通信的端口。您还可以创建新的/删除旧的客户端,而不会影响其他已部署的应用程序(客户端和服务器)。许多现有的流行监视系统(例如Zabbix)都使用此体系结构来执行系统监视。

这样就无需配置到目标计算机的远程连接。客户端应用程序可以使用普通的Process类从操作系统收集所有必需的数据,然后使用HttpClient将其发送到服务器。同样,此体系结构更适合于监视,因为有些任务无法使用远程连接执行。

© www.soinside.com 2019 - 2024. All rights reserved.