Skip to main content

使用 SNMP 进行监视

GitHub Enterprise 通过 SNMP 提供关于磁盘使用情况、CPU 利用率和内存使用情况等方面的数据。

SNMP 是一种用于通过网络监视设备的公共标准。 强烈建议启用 SNMP,以便监视 你的 GitHub Enterprise Server 实例 的运行状况,并了解何时向主机增加更多内存、存储空间或处理器能力。

GitHub Enterprise 具有标准 SNMP 安装,因此你可以利用可用于 Nagios 或任何其他监视系统的多种插件

配置 SNMP v2c

  1. 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击

  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。

  3. 在“ 站点管理”边栏中,单击“管理控制台”。

  4. 在“设置”边栏中,单击“监视”。

  5. 在“监视”下,选择“启用 SNMP”。

  6. 在“社区字符串”字段中,输入新的社区字符串。 如果留空,则默认为 public

  7. 在“设置”边栏下,单击“保存设置”。

    Note

    保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。

  8. 等待配置运行完毕。

  9. 要测试 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 实例 主机上的系统时间。

基于用户的安全性

如果您启用 SNMP v3,则可以通过用户安全模型 (USM) 充分利用提升的基于用户的安全性。 对于每个唯一的用户,您可以指定一个安全等级:

  • noAuthNoPriv:此安全等级不提供任何身份验证和隐私保护。
  • authNoPriv:此安全级别提供身份验证,但不提供隐私保护。 要查询设备,您需要用户名和密码(长度必须至少为八个字符)。 与 SNMPv2 相似,发送的信息不会进行加密。 身份验证协议可以是 MD5 或 SHA,默认为 SHA。
  • authPriv:此安全级别提供身份验证和隐私保护。 要求进行身份验证(包含一个长度至少为八个字符的身份验证密码),并且会对响应进行加密。 不需要隐私密码,但如果提供隐私密码,其长度必须至少为八个字符。 如果不提供隐私密码,将使用身份验证密码。 隐私协议可以是 DES 或 AES,默认为 AES。

配置 SNMP v3 的用户

  1. 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击

  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。

  3. 在“ 站点管理”边栏中,单击“管理控制台”。

  4. 在“设置”边栏中,单击“监视”。

  5. 在“监视”下,选择“启用 SNMP”。

  6. 选择“SNMP v3”。

  7. 在“用户名”下,输入 SNMP v3 用户的唯一用户名。

  8. 选择“安全级别”下拉菜单,然后单击你的 SNMP v3 用户的安全级别。

  9. 对于安全级别为 authnopriv 的 SNMP v3 用户,请配置身份验证。

    • 在“身份验证密码”下,键入身份验证密码。
    • 在“身份验证密码”旁,选择“协议”下拉菜单,然后单击要使用的身份验证协议。
    • 如果外部监视系统需要 SHA 算法,GitHub Enterprise Server 当前使用 SHA-1。
  10. 对于安全级别为 authpriv 的 SNMP v3 用户,请配置身份验证。

    • 在“身份验证密码”下,键入身份验证密码。
    • 在“身份验证密码”旁,选择“协议”下拉菜单,然后单击要使用的身份验证协议。
    • (可选)在“隐私密码”下,输入隐私密码。
    • 选择“隐私密码”旁边的“协议”下拉菜单,然后单击要使用的隐私协议方法。
    • 如果外部监视系统需要 AES 算法,GitHub Enterprise Server 当前使用 AES-128。
  11. 单击“添加用户”。****

  12. 在“设置”边栏下,单击“保存设置”。

    Note

    保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。

  13. 等待配置运行完毕。

查询 SNMP 数据

关于您的设备的硬件和软件级信息都适用于 SNMP v3。 由于 noAuthNoPrivauthNoPriv 安全级别缺少加密和隐私,我们会将 hrSWRun 表 (1.3.6.1.2.1.25.4) 从生成的 SNMP 报告中排除。 如果你使用 authPriv 安全级别,则会包含此表。 有关详细信息,请参阅“OID 参考文档”。

如果使用 SNMP v2c,则仅会提供关于您的设备的硬件级信息。 GitHub Enterprise 中的应用程序和服务未配置 OID 来报告指标。 有多个 MIB 可用,可以通过在网络中支持 SNMP 的单独工作站上运行 snmpwalk 来查看它们:

# 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.21.3.6.1.2.1.25.1.2本地日期和时间的主机标记。
hrSystemUptime.01.3.6.1.2.1.25.1.1.0自主机上次初始化以来的时间。
hrMemorySize.01.3.6.1.2.1.25.2.2.0主机上 RAM 的大小。
hrSystemProcesses.01.3.6.1.2.1.25.1.6.0主机上当前加载或运行的进程上下文数。
hrStorageUsed.11.3.6.1.2.1.25.2.3.1.6.1主机上已占用的存储空间大小(单位为 hrStorageAllocationUnits)。
hrStorageAllocationUnits.11.3.6.1.2.1.25.2.3.1.4.1hrStorageAllocationUnit 的大小(单位为字节)

例如,若要使用 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

Note

为防止泄露有关设备上运行的服务的信息,我们会将 hrSWRun 表 (1.3.6.1.2.1.25.4) 从生成的 SNMP 报告中排除,除非你对 SNMP v3 使用 authPriv 安全级别。 如果你使用 authPriv 安全级别,则会包含 hrSWRun 表。

有关 SNMP 中常见系统属性的 OID 映射的详细信息,请参阅“用于 CPU、内存和磁盘统计信息的 Linux SNMP OID”。