5.4. 将警报作为 SNMP 陷阱发送


要启用 SNMP 陷阱,请修改 ServiceTelemetry 对象并配置 snmpTraps 参数。SNMP 陷阱使用版本 2c 发送。

5.4.1. snmpTraps 的配置参数

snmpTraps 参数包含以下子参数来配置警报接收器:

enabled
将此子参数的值设置为 true,以启用 SNMP 陷阱警报接收器。默认值为 false。
target
发送 SNMP 陷阱的目标地址。value 是一个字符串。默认为 192.168.24.254
端口
发送 SNMP 陷阱的目标端口。value 是一个整数。默认为 162
community
将 SNMP 陷阱发送到的目标社区。value 是一个字符串。默认为 public
retries
SNMP 陷阱重试交付限制。value 是一个整数。默认值为 5
timeout
SNMP 陷阱发送超时(以秒为单位)。value 是一个整数。默认值为 1
alertOidLabel
在警报中定义要发送 SNMP 陷阱的 OID 值的标签名称。value 是一个字符串。默认为 oid
trapOidPrefix
SNMP 陷阱变量绑定的 OID 前缀。value 是一个字符串。默认为 1.3.6.1.4.1.50495.15
trapDefaultOid
当没有通过警报指定警报 OID 标签时,snmp 陷阱 OID。value 是一个字符串。默认为 1.3.6.1.4.1.50495.15.1.2.1
trapDefaultSeverity
当没有设置警报严重性时,snmp 陷阱严重性。value 是一个字符串。默认为空字符串。

snmpTraps 参数配置为 ServiceTelemetry 对象中的 alerting.alertmanager.receivers 定义的一部分:

apiVersion: infra.watch/v1beta1
kind: ServiceTelemetry
metadata:
  name: default
  namespace: service-telemetry
spec:
  alerting:
    alertmanager:
      receivers:
        snmpTraps:
          alertOidLabel: oid
          community: public
          enabled: true
          port: 162
          retries: 5
          target: 192.168.25.254
          timeout: 1
          trapDefaultOid: 1.3.6.1.4.1.50495.15.1.2.1
          trapDefaultSeverity: ""
          trapOidPrefix: 1.3.6.1.4.1.50495.15
...

5.4.2. MIB 定义概述

SNMP 陷阱的交付默认使用对象标识符(OID)值 1.3.6.1.4.1.50495.1.2.1。管理信息基础(MIB)模式位于 https://github.com/infrawatch/prometheus-webhook-snmp/blob/master/PROMETHEUS-ALERT-CEPH-MIB.txt

OID 编号由以下组件值组成:strisse the value 1.3.6.1.4.1 是为私有企业定义的全局 OID。下一个标识符 50495 是 Ceph 机构 IANA 分配的私有企业号码。其它值是父值的子 OID。

15
Prometheus 对象
15.1
Prometheus 警报
15.1.2
Prometheus 警报陷阱
15.1.2.1
Prometheus 警报陷阱默认

prometheus 警报陷阱默认是由几个其他子对象组成到 OID 1.3.6.1.4.1.50495.15 的对象,它由 alerting.alertmanager.receivers.snmpTraps.trapOidPrefix 参数定义:

<trapOidPrefix>.1.1.1
警报名称
<trapOidPrefix>.1.1.2
status
<trapOidPrefix>.1.1.3
严重性
<trapOidPrefix>.1.1.4
实例
<trapOidPrefix>.1.1.5
作业
<trapOidPrefix>.1.1.6
description
<trapOidPrefix>.1.1.7
labels
<trapOidPrefix>.1.1.8
timestamp
<trapOidPrefix>.1.1.9
rawdata

以下是简单 SNMP 陷阱接收器的输出示例,该接收器将收到的陷阱输出到控制台:

  SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.50495.15.1.2.1
  SNMPv2-SMI::enterprises.50495.15.1.1.1 = STRING: "TEST ALERT FROM PROMETHEUS PLEASE ACKNOWLEDGE"
  SNMPv2-SMI::enterprises.50495.15.1.1.2 = STRING: "firing"
  SNMPv2-SMI::enterprises.50495.15.1.1.3 = STRING: "warning"
  SNMPv2-SMI::enterprises.50495.15.1.1.4 = ""
  SNMPv2-SMI::enterprises.50495.15.1.1.5 = ""
  SNMPv2-SMI::enterprises.50495.15.1.1.6 = STRING: "TEST ALERT FROM "
  SNMPv2-SMI::enterprises.50495.15.1.1.7 = STRING: "{\"cluster\": \"TEST\", \"container\": \"sg-core\", \"endpoint\": \"prom-https\", \"prometheus\": \"service-telemetry/default\", \"service\": \"default-cloud1-coll-meter\", \"source\": \"SG\"}"
  SNMPv2-SMI::enterprises.50495.15.1.1.8 = Timeticks: (1676476389) 194 days, 0:52:43.89
  SNMPv2-SMI::enterprises.50495.15.1.1.9 = STRING: "{\"status\": \"firing\", \"labels\": {\"cluster\": \"TEST\", \"container\": \"sg-core\", \"endpoint\": \"prom-https\", \"prometheus\": \"service-telemetry/default\", \"service\": \"default-cloud1-coll-meter\", \"source\": \"SG\"}, \"annotations\": {\"action\": \"TESTING PLEASE ACKNOWLEDGE, NO FURTHER ACTION REQUIRED ONLY A TEST\"}, \"startsAt\": \"2023-02-15T15:53:09.109Z\", \"endsAt\": \"0001-01-01T00:00:00Z\", \"generatorURL\": \"http://prometheus-default-0:9090/graph?g0.expr=sg_total_collectd_msg_received_count+%3E+1&g0.tab=1\", \"fingerprint\": \"feefeb77c577a02f\"}"

5.4.3. 配置 SNMP 陷阱

先决条件

  • 确保您知道 SNMP 陷阱接收方的 IP 地址或主机名,在其中发送警报。

流程

  1. 登录到 Red Hat OpenShift Container Platform。
  2. 进入 service-telemetry 命名空间:

    $ oc project service-telemetry
  3. 要启用 SNMP 陷阱,修改 ServiceTelemetry 对象:

    $ oc edit stf default
  4. 设置 alerts .alertmanager.receivers.snmpTraps 参数:

    apiVersion: infra.watch/v1beta1
    kind: ServiceTelemetry
    ...
    spec:
      ...
      alerting:
        alertmanager:
          receivers:
            snmpTraps:
              enabled: true
              target: 10.10.10.10
  5. 确保将 target 的值设置为 SNMP 陷阱接收器的 IP 地址或主机名。

其它信息

有关 snmpTraps 可用参数的更多信息,请参阅 第 5.4.1 节 “snmpTraps 的配置参数”

5.4.4. 为 SNMP 陷阱创建警报

您可以通过添加由 prometheus-webhook-snmp 中间件解析的标签来定义陷阱信息和交付对象标识符(OID)来创建由 SNMP 陷阱配置的警报。只有在需要更改特定警报定义的默认值时,才需要添加 oidseverity 标签。

注意
当您设置 oid 标签时,顶级 SNMP 陷阱 OID 更改,但子OID 由全局 trapOidPrefix 值以及子 OID 值 .1.1.1.1.1.9 定义。有关 MIB 定义的详情请参考 第 5.4.2 节 “MIB 定义概述”

流程

  1. 登录到 Red Hat OpenShift Container Platform。
  2. 进入 service-telemetry 命名空间:

    $ oc project service-telemetry
  3. 创建包含警报规则的 PrometheusRule 对象,以及一个包含 SNMP trap OID 覆盖值的 oid 标签:

    $ oc apply -f - <<EOF
    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      creationTimestamp: null
      labels:
        prometheus: default
        role: alert-rules
      name: prometheus-alarm-rules-snmp
      namespace: service-telemetry
    spec:
      groups:
        - name: ./openstack.rules
          rules:
            - alert: Collectd metrics receive rate is zero
              expr: rate(sg_total_collectd_msg_received_count[1m]) == 0
              labels:
                oid: 1.3.6.1.4.1.50495.15.1.2.1
                severity: critical
    EOF

附加信息

有关配置警报的详情请参考 第 5.3 节 “Service Telemetry Framework 中的警报”

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.