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 地址或主机名,在其中发送警报。
流程
- 登录到 Red Hat OpenShift Container Platform。
进入
service-telemetry命名空间:$ oc project service-telemetry要启用 SNMP 陷阱,修改
ServiceTelemetry对象:$ oc edit stf default设置 alerts
.alertmanager.receivers.snmpTraps参数:apiVersion: infra.watch/v1beta1 kind: ServiceTelemetry ... spec: ... alerting: alertmanager: receivers: snmpTraps: enabled: true target: 10.10.10.10-
确保将
target的值设置为 SNMP 陷阱接收器的 IP 地址或主机名。
其它信息
有关 snmpTraps 可用参数的更多信息,请参阅 第 5.4.1 节 “snmpTraps 的配置参数”。
5.4.4. 为 SNMP 陷阱创建警报 复制链接链接已复制到粘贴板!
您可以通过添加由 prometheus-webhook-snmp 中间件解析的标签来定义陷阱信息和交付对象标识符(OID)来创建由 SNMP 陷阱配置的警报。只有在需要更改特定警报定义的默认值时,才需要添加 oid 或 severity 标签。
- 注意
-
当您设置 oid 标签时,顶级 SNMP 陷阱 OID 更改,但子OID 由全局
trapOidPrefix值以及子 OID 值.1.1.1到.1.1.9定义。有关 MIB 定义的详情请参考 第 5.4.2 节 “MIB 定义概述”。
流程
- 登录到 Red Hat OpenShift Container Platform。
进入
service-telemetry命名空间:$ oc project service-telemetry创建包含警报规则的
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 中的警报”。