6.4. アラートを SNMP トラップとして送信する
SNMP トラップを有効にするには、ServiceTelemetry
オブジェクトを変更し、snmpTraps
パラメーターを設定します。SNMP トラップはバージョン 2c を使用して送信されます。
6.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 ...
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
は 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\"}"
6.4.3. SNMP トラップの設定
前提条件
- アラートの送信先となる SNMP トラップ受信者の IP アドレスまたはホスト名を知っていることを確認してください。
手順
- Red Hat OpenShift Container Platform にログインします。
service-telemetry
namespace に切り替えます。$ 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 の設定パラメーター」 を参照してください。
6.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-telemetry
namespace に切り替えます。$ oc project service-telemetry
アラートルールと SNMP トラップ 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
関連情報
アラートの設定については、「Service Telemetry Framework でのアラート」を参照してください。