搜索

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

download PDF

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

6.4.1. snmpTraps 的配置参数

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

enabled
将此子参数的值设为 true 以启用 SNMP 陷阱警报接收器。默认值为 false。
target
发送 SNMP 陷阱的目标地址。value 是一个字符串。默认为 192.168.24.254
端口
发送 SNMP 陷阱的目标端口。value 是一个整数。默认为 162
community
将 SNMP 陷阱发送到的目标社区。value 是一个字符串。默认为 公共
retries
SNMP 陷入重试交付限制。value 是一个整数。默认值为 5
timeout
SNMP 陷阱交付超时(以秒为单位)。value 是一个整数。默认为 1
alertOidLabel
警报中的标签名称,用于定义 OID 值以发送 SNMP 陷阱。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
如果没有设置警报严重性时,SNM 陷阱严重性。value 是一个字符串。默认为空字符串。

snmpTraps 参数配置为 ServiceTelemetry 对象中的 alert.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
...

6.4.2. MIB 定义概述

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

OID 数量由以下组件值组成:* 值 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 alert trap 默认是一个由几个其他子对象到 OID 1.3.6.1.4.1.50495.15 的对象,它由 alert. 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
job
<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\"}"

6.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. 设置 alerting.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 可用参数的详情,请参考 第 6.4.1 节 “snmpTraps 的配置参数”

6.4.4. 为 SNMP 陷阱创建警报

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

注意

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

流程

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

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

    $ oc apply -f - <<EOF
    apiVersion: monitoring.rhobs/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

附加信息

有关配置警报的更多信息,请参阅 第 6.3 节 “Service Telemetry Framework 中的警报”

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.