5.4. アラートを SNMP トラップとして送信する
SNMP トラップを有効にするには、ServiceTelemetry オブジェクトを変更し、snmpTraps パラメーターを設定します。SNMP トラップはバージョン 2c を使用して送信されます。
5.4.1. snmpTraps の設定パラメーター
snmpTraps パラメーターには、アラート受信者を設定するための次のサブパラメーターが含まれています。
- enabled
- SNMP トラップアラートレシーバーを有効にするには、このサブパラメーターの値を true に設定します。デフォルト値は false です。
- target
-
SNMP トラップを送信するターゲットアドレス。値は文字列です。デフォルトは
192.168.24.254です。 - port
-
SNMP トラップを送信するターゲットポート。値は整数です。デフォルトは
162です。 - community
-
SNMP トラップの送信先のターゲットコミュニティー。値は文字列です。デフォルトは
publicです。 - retries
-
SNMP トラップの再試行配信制限。値は整数です。デフォルトは
5です。 - timeout
-
秒単位で定義されていSNMP トラップ配信タイムアウト。値は整数です。デフォルトは
1です。 - alertOidLabel
-
SNMP トラップの送信に使用する OID 値を定義するアラート内のラベル名。値は文字列です。デフォルトは
oidです。 - trapOidPrefix
-
変数バインディングの SNMP トラップ OID 接頭辞。値は文字列です。デフォルトは
1.3.6.1.4.1.50495.15です。 - trapDefaultOid
-
アラートにアラート OID ラベルが指定されていない場合の SNMP トラップ OID。値は文字列です。デフォルトは
1.3.6.1.4.1.50495.15.1.2.1です。 - trapDefaultSeverity
- アラート重大度が設定されていない場合の SNMP トラップ重大度。値は文字列です。デフォルトは空の文字列です。
ServiceTelemetry オブジェクトの alerting.alertmanager.receivers 定義の一部として snmpTraps パラメーターを設定します。
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.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 は IANA によって Ceph 組織に割り当てられた民間企業番号です。※その他の値は親の子 OID です。
- 15
- prometheus オブジェクト
- 15.1
- prometheus アラート
- 15.1.2
- prometheus アラートトラップ
- 15.1.2.1
- prometheus アラートトラップのデフォルト
prometheus アラートトラップのデフォルトは、alerting.alertmanager.receivers.snmpTraps.trapOidPrefix パラメーターによって定義される OID 1.3.6.1.4.1.50495.15 に対する他のいくつかのサブオブジェクトで設定されるオブジェクトです。
- <trapOidPrefix>.1.1.1
- アラート名
- <trapOidPrefix>.1.1.2
- status
- <trapOidPrefix>.1.1.3
- severity
- <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\"}"5.4.3. SNMP トラップの設定
前提条件
- アラートの送信先となる SNMP トラップ受信者の IP アドレスまたはホスト名を知っていることを確認してください。
手順
- Red Hat OpenShift Container Platform にログインします。
service-telemetrynamespace に切り替えます。$ oc project service-telemetry
SNMP トラップを有効にするには、
ServiceTelemetryオブジェクトを変更します。$ oc edit stf default
alerting.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 で使用可能なパラメーターの詳細については、「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 定義の詳細は、「MIB 定義の概要」を参照してください。
手順
- Red Hat OpenShift Container Platform にログインします。
service-telemetrynamespace に切り替えます。$ oc project service-telemetry
アラートルールと SNMP トラップ OID オーバーライド値を含む
oidラベルを含むPrometheusRuleオブジェクトを作成します。$ 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
追加情報
アラートの設定については、「Service Telemetry Framework でのアラート」を参照してください。