在不同 Windows 服务器上配置 SNMP 代理
借助 SNMP 的支持,对您的 Windows 服务器进行无代理监控。只需在服务器上安装并配置 SNMP 代理,安装本地轮询器,然后添加服务器进行监控即可。
Windows 10 1803 及更高版本
在 Windows 10 1803 及更高版本上安装 SNMP 代理
在 Windows 10 的控制面板 Windows 功能列表中未列出 SNMP 服务。请使用以下三种方式之一直接从 Microsoft 服务器安装 SNMP 服务:
- 可选功能图形界面
- PowerShell
- DISM
使用可选功能图形界面安装
- 转到 设置 > 应用。在搜索栏中搜索管理可选功能。
- 点击添加功能。在添加可选功能弹出窗口中,从列表中选择以下内容:简单网络管理协议 (SNMP) 和 WMI SNMP 提供程序(以获取所有 SNMP 服务配置选项卡)。
- 点击 添加。
使用 PowerShell 安装
- 导航至 开始 > Windows PowerShell 文件夹 > Windows PowerShell。
- 运行以下命令:
Add-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0"
使用 DISM 安装
- 您还可以使用部署映像服务和管理 (DISM) 工具。转到 开始 > 命令提示符。
- 右键点击顶部结果,选择 以管理员身份运行。
- 执行以下命令并按 Enter:
DISM /online /add-capability /capabilityname:SNMP.Client~~~~0.0.1.0
在 Windows 10 1803 及更高版本上配置 SNMP 代理
- 导航至 开始 > 设置 > 控制面板。
- 在 管理工具下,点击 服务。
- 在 详细信息窗格中,右键点击 SNMP 服务并选择 属性。如果已停止,点击 启动按钮启动服务,并将 启动类型更改为 自动。
- 在 安全 选项卡下的 接受的社区名称中,点击 添加。
- 在 社区权限下,为此主机选择处理所选社区 SNMP 请求的权限级别。
- 在 社区名称中,输入区分大小写的社区名称,然后点击 添加。
- 选择是否接受来自主机的 SNMP 数据包:
- 要接受来自网络中任何主机的 SNMP 请求(不考虑身份),点击 接受来自任何主机的 SNMP 数据包。
- 要限制接受 SNMP 数据包,点击 接受来自以下主机的 SNMP 数据包,然后点击 添加。接着输入适当的 主机名、IP 或 IPX 地址,再点击 添加。
- 点击 应用。
在 Windows Vista、Windows 7、Windows Server 2008、Windows Server 2008 R2、Windows 8、Windows 8.1、Windows 10、Windows Server 2012、Windows Server 2012 R2 或 Windows Server 2016 及更高版本上配置 SNMP 代理
- 转到 控制面板。点击 程序 > 程序和功能,然后点击 启用或关闭 Windows 功能。如果出现用户账户控制对话框,点击 继续 或 是(因版本而异)。
- 在 启用或关闭 Windows 功能中,勾选 简单网络管理协议 (SNMP) 或 SNMP 功能(同样因版本而异)旁边的复选框,然后点击 确定。
- 然后,按照上述 在 Windows 10 1803 及更高版本上配置 SNMP 代理中给出的步骤操作。
在 Windows NT 系统上配置 SNMP 代理
- 导航至 开始 > 设置 > 控制面板。
- 在 管理工具下,点击 服务。
- 在 详细信息窗格中,右键点击 SNMP 服务,然后选择 属性。
- 在 接受的社区名称下,点击 添加。
- 在 社区名称框中,输入用于验证 SNMP 请求的社区名称。
- 点击 添加,将社区名称移至已接受社区名称列表。
- 重复步骤 6 和 7 以添加更多社区名称。
- 选择是接受来自任何主机的 SNMP 数据包,还是仅接受指定主机的 SNMP 数据包:
- 如果希望接受来自任何主机(无 IP 限制)的 SNMP 数据包,点击 接受来自任何主机的 SNMP 数据包。
- 如果希望仅接受特定主机的 SNMP 数据包,点击 仅接受来自以下主机的 SNMP 数据包。要输入所需主机,点击 添加;在 IP 主机或 IPX 地址框中输入主机的 名称或 地址,然后点击 添加。
- 重复步骤 9 以添加更多主机。
- 在 代理 选项卡中,指定有关用户、位置和服务的备注信息。
- 点击 确定以应用更改。
在 Windows NT 上运行的 SNMP 代理默认不响应主机资源数据。若要支持此功能,您可能需要 Windows NT Service Pack 6 或更高版本。在执行以下步骤之前,请检查您的 Service Pack 详情。
注意: Windows NT 4.0 Server 不附带主机资源 MIB。
如果您运行的是 Windows NT Service Pack 6a 并使用 Windows 2000 Server,请按以下步骤操作:
- 将 Windows 2000 Server 上的 %SystemRoot%\System32\hostmib.dll 文件复制到 Windows NT 4.0 Server 上的 %SystemRoot%\System32 文件夹。
- C:\WinNT 是 %SystemRoot% 的值
- 如果您没有 Windows 2000 Server,可以下载 hostmib.dll 文件。
- 如果上述文件在您的机器上不兼容,可从 https://www.pconlife.com/fileinfo/hostmib.dll-info/ 下载兼容版本。
- 运行 regedit 或 regedt32,并添加以下键和值:
- 键: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HostMIB\CurrentVersion
- 值名称: Pathname
- 类型: REG_SZ
- 数据: C:\WinNT\system32\hostmib.dll
- 键: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents
- 值名称: 3
- 类型: REG_SZ
- 数据: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HostMIB\CurrentVersion
- 若要使用 Microsoft REGSVR 工具注册 DLL,请按以下步骤操作:
- 将文件复制到 C:\Windows\SysWOW64\(32 位)或 C:\Windows\System32\(64 位)
- 要完成此步骤,您应以管理员身份运行 命令提示符。
- 将以下命令粘贴到打开的命令行窗口中,然后按 Enter。
%windir%\System32\regsvr32.exe hostmib.dll (32 位)
%windir%\SysWoW64\regsvr32.exe hostmib.dll(64 位)
- 重启您的 Windows NT 计算机。
在 Windows XP、Windows 2000 和 Windows 2003 系统上配置 SNMP 代理
- 导航至 开始 > 设置 > 控制面板。
- 在 管理工具下,点击 服务。
- 在 详细信息窗格中,右键点击 SNMP 服务,然后选择 属性。
- 在 接受的社区名称下,点击 添加。
- 在 社区权限下,为此主机选择处理所选社区 SNMP 请求的权限级别。
- 在 社区名称中,输入区分大小写的社区名称,然后点击 添加。
- 选择是否接受来自主机的 SNMP 数据包:
- 要接受来自网络中任何主机的 SNMP 请求(不考虑身份),点击 接受来自任何主机的 SNMP 数据包。
- 要限制接受 SNMP 数据包,点击 接受来自以下主机的 SNMP 数据包,然后点击 添加。接着输入适当的主机名、IP 或 IPX 地址,再点击 添加。
- 点击 应用。
在 Windows 上测试 SNMP
基于 PowerShell 的 SNMP 配置
本节将介绍:
远程执行的先决条件
要创建远程会话并运行远程命令,本地和远程计算机必须满足以下要求。
1. 系统要求
以下是在远程计算机上执行脚本的系统要求。
- 要在 Windows PowerShell 3.0 上运行远程会话,本地和远程计算机必须具备:
- Windows PowerShell 3.0 或更高版本。
- Microsoft .NET Framework 4 或更高版本。
- Windows Remote Management 3.0。
- 要在 Windows PowerShell 2.0 上运行远程会话,本地和远程计算机必须具备:
- Windows PowerShell 2.0 或更高版本。
- Microsoft .NET Framework 2.0 或更高版本。
- Windows Remote Management 2.0。
2. 用户权限
默认情况下,当前用户需要是远程计算机管理员组的成员,或提供管理员凭据。
3. Windows 网络/防火墙权限
服务器端和客户端的远程连接不得被防火墙阻止。
4. 以管理员身份运行
启用和配置 SNMP 需要管理员权限。
使用 PowerShell 安装
- 导航至 开始 > Windows PowerShell 文件夹 > Windows PowerShell。
- 运行以下命令:Add-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0"
注意:
- 请确认已满足远程执行的先决条件。
- 检查主机和客户端设备是否在同一网络域中。
- 在要执行此脚本的远程设备上启用 PSRemoting。可通过远程桌面连接执行此操作。
使用 PowerShell 在 Windows 设备上启用 SNMP 的步骤
- 下载 SNMPEnabler.ps1 脚本。
- 以管理员身份打开 Windows PowerShell 工具。
- 运行 SNMPEnabler.ps1 脚本并提供所需的输入参数。
- 使用提供的输入执行脚本。它将自动在本地或远程设备上启用和配置 SNMP。
脚本执行的输入参数
以下输入参数可由脚本执行处理。
| 输入参数 | 用法 | 默认值 | 是否必填? | 示例 |
|---|---|---|---|---|
| h | 需要启用 SNMP 服务的主机名。 | - | 必填(若未提供 -f) | -h ben-3515 |
| f | 包含多个主机的文件路径。文件格式:(XXXXX.txt) s24x7-dev1 localhost 192.21.23.1 ben-3515.zohocorpin.com | - | 必填(若未提供 -h) | -f D:\SNMP\hostlist.txt |
| username | 用于远程访问的账户用户名。 | - | 远程计算机必填,本地主机可选。 | -username workgroup\administrator |
| pass | 用于远程访问的账户密码。 | - |
本地主机可选。远程:可作为参数提供。远程执行时将提示输入密码。 |
-pass password@987 |
| onlyConfigure |
用于在已启用 SNMP 的机器上配置 SNMP 设置。 可能的值为 “true” 或 “false”。如果为 “true”,脚本将仅执行配置。 |
false | 可选 | -onlyConfigure true |
| communityName | 脚本执行后将添加的 SNMP 社区字符串。 | public | 可选 | -communityName networkcommunity |
| snmpType |
从社区字符串添加的权限。允许的整数值:“1” - NONE “2” - NOTIFY “4” - READONLY “8” - READWRITE “16” - READCREATE |
4 | 可选 | -snmpType 4 |
| permittedHost | 需要从远程计算机获取 SNMP 访问权限的主机。 | 执行脚本的默认本地主机名称。 | 可选 | -permittedHost s24x7-dev7 |
| debug |
用于调试。可能的值为 “true” 或 “false”。 |
false | 可选 | -debug true |
脚本命令与用法
1. 针对特定主机启用
使用默认或自定义选项启用和配置单个主机的选项。
命令
1.1 在本地计算机上使用默认选项启用和配置 SNMP:
执行:.\SNMPEnabler.pst1 -h localhost
1.2 在远程计算机上使用默认选项启用和配置 SNMP:
执行:.\SNMPEnabler.ps1 -h -username
1.3. 在本地计算机上使用自定义输入选项启用和配置 SNMP:
执行: .\SNMPEnabler.ps1 -h localhost -communityName -snmpType -permittedHost
1.4. 在远程计算机上使用自定义输入选项启用和配置 SNMP:
执行:.\SNMPEnabler.ps1 -h -username -communityName -snmpType -permittedHost
1.5. 在已启用 SNMP 的本地计算机上配置社区和允许的主机:
执行.\SNMPEnabler.ps1 -h localhost -onlyConfigure true -communityName -snmpType -permittedHost
1.6. 在已启用 SNMP 的远程计算机上配置社区和允许的主机:
执行.\SNMPEnabler.ps1 -h -username -pass -onlyConfigure true -communityName -snmpType -permittedHost
2. 批量启用(使用包含主机的输入文件)
通过传递包含主机列表的文件路径,您可以为多台服务器启用和配置 SNMP。
命令
2.1 在多台本地或远程计算机上使用默认选项启用和配置 SNMP:
执行:.\SNMPEnabler.ps1 -f -username
2.2 在多台本地或远程计算机上使用自定义选项启用和配置 SNMP:
执行:.\SNMPEnabler.ps1 -f -username -communityName -snmpType -permittedHost
2.3 在已启用 SNMP 的本地或远程计算机上配置社区和允许的主机:
执行:.\SNMPEnabler.ps1 -f -username -onlyConfigure true -communityName -snmpType -permittedHost
