使用 SNMP 进行监视
GitHub Enterprise 通过 SNMP 提供关于磁盘使用情况、CPU 利用率和内存使用情况等方面的数据。
SNMP 是一种用于通过网络监视设备的公共标准。 强烈建议启用 SNMP,以便监视 您的 GitHub Enterprise Server 实例 的健康状态并了解何时向主机增加更多内存、存储空间或处理器能力。
GitHub Enterprise 采用标准 SNMP 安装,因此您可以充分利用 Nagios 或其他任何监视系统可用的多种插件。
配置 SNMP v2c
-
在任意页面的右上角,单击 。
-
在左侧边栏中,单击 管理控制台。
-
在左侧边栏中,单击 Monitoring(监控)。
-
在“Monitoring(监控)”下,选择 Enable SNMP(启用 SNMP)。
-
在 Community string 字段中,输入新的社区字符串。 如果留空,此字段将默认为
public
。 -
在左侧边栏中,单击 Save settings(保存设置)。
-
要测试 SNMP 配置,请在网络中支持 SNMP 的单独工作站上运行以下命令:
# community-string is your community string
# hostname is the IP or domain of your Enterprise instance
$ snmpget -v 2c -c community-string -O e hostname hrSystemDate.0
此命令应返回 您的 GitHub Enterprise Server 实例 主机上的系统时间。
User-based security
如果您启用 SNMP v3,则可以通过用户安全模型 (USM) 充分利用提升的基于用户的安全性。 您可以为每个唯一的用户指定安全级别:
noAuthNoPriv
:此安全级别不提供身份验证和隐私。authNoPriv
:此安全级别提供身份验证,但不提供隐私。 要查询设备,您需要用户名和密码(长度必须至少为八个字符)。 与 SNMPv2 相似,发送的信息不会进行加密。 身份验证协议可以是 MD5 或 SHA,默认为 SHA。authPriv
:此安全级别提供身份验证和隐私。 要求进行身份验证(包含一个长度至少为八个字符的身份验证密码),并且会对响应进行加密。 不需要隐私密码,但如果提供隐私密码,其长度必须至少为八个字符。 如果不提供隐私密码,将使用身份验证密码。 隐私协议可以是 DES 或 AES,默认为 AES。
配置 SNMP v3 用户
-
在任意页面的右上角,单击 。
-
在左侧边栏中,单击 管理控制台。
-
在左侧边栏中,单击 Monitoring(监控)。
-
在“Monitoring(监控)”下,选择 Enable SNMP(启用 SNMP)。
-
选择 SNMP v3。
-
在“Username”中,输入您的 SNMP v3 用户的唯一用户名。
-
在 Security Level 下拉菜单中,单击您的 SNMP v3 用户的安全级别。
-
对于安全级别为
authnopriv
的 SNMP v3 用户:-
在“Authentication password(身份验证密码)”中,键入身份验证密码。
-
在“Authentication password(身份验证密码)”的右侧,单击 Protocol(协议)下拉菜单中要使用的身份验证协议。
-
-
对于安全级别为
authpriv
的 SNMP v3 用户:-
在“Authentication password(身份验证密码)”中,键入身份验证密码。
-
在“Authentication password(身份验证密码)”的右侧,单击 Protocol(协议)下拉菜单中要使用的身份验证协议。
-
或者,在“Privacy password”中输入隐私密码。
-
在“Privacy password”右侧的 Protocol 下拉菜单中,单击您要使用的隐私协议方法。
-
-
单击 Add user。
-
在左侧边栏中,单击 Save settings(保存设置)。
查询 SNMP 数据
SNMP v3 可以提供关于您的设备的硬件和软件级信息。 由于 noAuthNoPriv
和 authNoPriv
安全级别缺少加密和隐私,我们会将 hrSWRun
表 (1.1.3.6.1.2.1.25.41) 从生成的 SNMP 记录中排除。 如果您使用的安全级别为 authPriv
,则会包含此表。
如果使用 SNMP v2c,则仅会提供关于您的设备的硬件级信息。 GitHub Enterprise 中的应用程序和服务未配置 OID 来报告指标。 提供多个 MIB,在网络中支持 SNMP 的单独工作站上运行 snmpwalk
可以查看这些 MIB:
# community-string is your community string
# hostname is the IP or domain of your Enterprise instance
$ snmpwalk -v 2c -c community-string -O e hostname
在 SNMP 的可用 MIB 中,最有用的是 HOST-RESOURCES-MIB
(.1.3.6.1.2.1.25)。 请参见下表,了解此 MIB 中的一些重要对象:
名称 | OID | 说明 |
---|---|---|
hrSystemDate.2 | .1.3.6.1.2.1.25.1.2 | 本地日期和时间的主机标记。 |
hrSystemUptime.0 | .1.3.6.1.2.1.25.1.1.0 | 自主机上次初始化以来的时间。 |
hrMemorySize.0 | .1.3.6.1.2.1.25.2.2.0 | 主机上 RAM 的大小。 |
hrSystemProcesses.0 | .1.3.6.1.2.1.25.1.6.0 | 主机上当前加载或运行的进程上下文数。 |
hrStorageUsed.1 | .1.3.6.1.2.1.25.2.3.1.6.1 | 主机上已占用的存储空间大小(单位为 hrStorageAllocationUnits)。 |
hrStorageAllocationUnits.1 | .1.3.6.1.2.1.25.2.3.1.4.1 | hrStorageAllocationUnit 的大小(单位为字节) |
例如,要通过 SNMP v3 查询 hrMemorySize
,请在您的网络中支持 SNMP 的单独工作站上运行以下命令:
# username is the unique username of your SNMP v3 user
# auth password is the authentication password
# privacy password is the privacy password
# hostname is the IP or domain of your Enterprise instance
$ snmpget -v 3 -u username -l authPriv \
-A "auth password" -a SHA \
-X "privacy password" -x AES \
-O e hostname HOST-RESOURCES-MIB::hrMemorySize.0
如果使用 SNMP v2c,要查询 hrMemorySize
,请在您的网络中支持 SNMP 的单独工作站上运行以下命令:
# community-string is your community string
# hostname is the IP or domain of your Enterprise instance
snmpget -v 2c -c community-string hostname HOST-RESOURCES-MIB::hrMemorySize.0
注:为避免泄漏关于设备上所运行服务的信息,我们会将 hrSWRun
表 (1.1.3.6.1.2.1.25.41) 从生成的 SNMP 报告中排除,除非您对 SNMP v3 使用的是 authPriv
安全级别。 如果您使用的安全级别为 authPriv
,我们将包含 hrSWRun
表。
更多关于 SNMP 中常用系统属性的 OID 映射的信息,请参阅“CPU、内存和磁盘统计信息的 Linux SNMP OID”。