SNMP Trap Source Connector for Confluent Platform¶
SNMP Trap Source Connector は、SNMP を介してデバイスからデータ(SNMP トラップ)を受信し、そのトラップメッセージを Kafka のレコードに変換するために使用されます。
Simple Network Management Protocol(SNMP)は、ネットワークデバイスとそれらの機能の管理やモニタリングに使用されるアプリケーション層のプロトコルです。SNMP は、ローカルエリアネットワーク(LAN)または広域エリアネットワーク(WAN)の単一ベンダーおよび複数ベンダーの環境内で管理情報を中継するネットワークデバイスに共通の言語を提供します。SNMP の最新のバージョン 3 には、SNMP メッセージの認証と暗号化、および転送中のパケットの保護を行うセキュリティ機能強化が含まれています。
コネクターは、SNMP デバイスからの PDU(SNMP プロトコルデータユニット)をリッスンするように構成する必要があります。コネクターでは、トラップタイプの PDU のみ解釈されます。
このコネクターは、SNMP V2 と V3 の両方のプロトコルをサポートし、snmp.v3.enabled
パラメーターを使用して構成できます。SNMP V3 をリッスンするようにコネクターを構成する場合は、以下の SNMPv3 オプションを指定する必要があります。
- 認証プロトコル: SNMPv3 認証プロトコルまたはタイプを指定します。その値は [md5、sha、hmac128sha224、hmac192sha256、hmac256sha384、hmac384sha512] のいずれかにすることができます。
- 認証パスワード: SNMPv3 認証のパスフレーズまたはパスワードを指定します。
- プライバシー/暗号化プロトコル: SNMPv3 プライバシー/暗号化プロトコルを指定します。その値は [des、3des、aes、aes128、aes192、aes256] のいずれかにすることができます。
- プライバシーパスワード: SNMPv3 暗号化パスワードを指定します。
- セキュリティ名: SNMPv3 セキュリティ名またはユーザー名を指定します。
機能¶
少なくとも 1 回のデリバリー¶
このコネクターによって、レコードが Kafka のトピックに少なくとも 1 回は配信されることが保証されます。コネクターを再起動した場合、Kafka のトピックに重複レコードが存在している可能性があります。
1 つのタスクをサポート¶
SNMP Trap Source Connector は、1 つのタスクのみの実行をサポートしています。
前提条件¶
SNMP Trap Source Connector を実行するには、以下が必要です。
- Kafka ブローカー : Confluent Platform 3.3.0 以上、または Kafka 0.11.0 以上
- Connect: Confluent Platform 4.0.0 以上、または Kafka 1.0.0 以上
- Java: 1.8
制限¶
- コネクターでは、
snmp.listen.protocol
、snmp.listen.address
、およびsnmp.listen.port
の構成に基づいてリスナーポートを開くため、1 つのタスクのみサポートされます。複数のタスクの場合は、複数のポートを開く必要があります。現在、これはサポートされていません。 sha2
を使用する認証プロトコルは、現在サポートされていません。
SNMP Trap Source Connector のインストール¶
このコネクターは、Confluent Hub クライアントのインストール手順 に従ってインストールするか、手作業で ZIP ファイルをダウンロードしてインストールします。
前提条件¶
注釈
このコネクターは、Connect が実行されるすべてのマシンにインストールする必要があります。
Confluent Hub クライアント のインストール。
注釈
これは、Confluent Enterprise とともにデフォルトでインストールされます。
コネクターの最新(
latest
)バージョンのインストール。コネクターの
latest
バージョンをインストールするには、Confluent Platform のインストールディレクトリに移動し、次のコマンドを実行します。confluent-hub install confluentinc/kafka-connect-snmp-trap:latest
特定のバージョンをインストールするには、次の例に示すように
latest
をバージョン番号に置き換えます。confluent-hub install confluentinc/kafka-connect-snmp-trap:1.0.0-preview
コネクターの手動インストール¶
コネクターの ZIP ファイル をダウンロードして展開し、コネクターの手動インストール 手順 に従ってください。
ライセンス¶
このコネクターは、ライセンスキーがなくても 30 日間試用できます。
30 日間経過後は、 Confluent エンタープライズライセンス を取得することで、このコネクターを利用できます。Confluent では、契約者に Confluent エンタープライズライセンス キーを発行します。併せて、Confluent Platform とコネクターに関する エンタープライズレベルのサポート を提供します。既にご契約されている場合は、詳細について Confluent サポート(support@confluent.io)にお問い合わせください。
ライセンスのプロパティについては、「 Confluent Platform ライセンス」を参照してください。ライセンストピックの詳細については、「 ライセンストピックの構成」を参照してください。
構成プロパティ¶
このコネクターの構成プロパティの網羅的なリストについては、「SNMP Trap Source Connector 構成プロパティ」を参照してください。
注釈
Kafka Connect を Confluent Cloud に接続する方法の例については、「分散クラスター」を参照してください。
クイックスタート¶
以下では、SnmpTrapSourceConnector
を使用して、SNMP を介してデバイスからデータ(SNMP トラップ)を受信し、そのデータを Kafka のトピックに送信します。
Confluent Hub クライアント を使用してコネクターをインストールします。
# run from your Confluent Platform installation directory confluent-hub install confluentinc/kafka-connect-snmp-trap:latest
ちなみに
デフォルトで、プラグインが
share/confluent-hub-components
にインストールされ、このディレクトリがプラグインパスに追加されます。これが初めてインストールしたコネクターだった場合は、プラグインパスの変更を反映するために、Connect サーバーの再起動が必要になる場合があります。
プロパティベースの例¶
snmp-trap-source-quickstart.properties
ファイルを以下のコンテンツで作成するか、snmp-trap-source-quickstart.properties
を使用します。この構成は通常、 スタンドアロンワーカー と併せて使用されます。name=SnmpTrapSourceConnector tasks.max=1 connector.class=io.confluent.connect.snmp.SnmpTrapSourceConnector snmp.v3.enabled=true kafka.topic=snmp-kafka-topic snmp.batch.size=50 snmp.listen.address=<ip-address to listen trap from> snmp.listen.port=<port to listen trap from> auth.password=<Auth-Password> privacy.password=<privacy-password> security.name=<security-name> confluent.topic.bootstrap.servers=localhost:9092 confluent.topic.replication.factor=1 confluent.license=
ちなみに
以下では、Kafka に保管されている Confluent ライセンスを指定するため、Kafka のブートストラップアドレスが必要です。
replication.factor
には、送信先クラスターの Kafka ブローカーの数よりも大きな値は使用できません。ここでは、デモ用に「1」を設定します。本稼働環境の構成では常に「3」以上を使用します。SNMP Trap Source Connector を読み込みます。
注意
コネクター名とフラグの間に、ダブルダッシュ(
--
)を含める必要があります。詳細については、こちらの投稿 を参照してください。ちなみに
Confluent CLI 開発用コマンドのコマンド構文は、5.3.0 で変更されています。該当するコマンドは
confluent local
に移行されています。たとえば、confluent start
の構文は、confluent local services start
に変わりました。詳しくは、「confluent local」を参照してください。confluent local services connect connector load snmp-trap-source --config snmp-trap-source-quickstart.properties
重要
Confluent CLI は、本稼働環境では使用しないでください。
コネクターが
RUNNING
状態であることを確認します。confluent local services connect connector status snmp-trap-source
SNMP デバイスが実行され、PDU が生成されている必要があります。コネクターによってトラップタイプの PDU がリッスンされ、Kafka のトピックにプッシュされます。
メッセージが Kafka に送信されていることを確認します。
kafka-avro-console-consumer --bootstrap-server localhost:9092 --property schema.registry.url=http://localhost:8081 --topic snmp-kafka-topic --from-beginning
sysDescr
Oid の場合、タイプトラップの SNMP PDU のサンプルはこののようになります。https://www.alvestrand.no/objectid/1.3.6.1.2.1.1.1.html を参照してください。
TRAP[
{
contextEngineID=80:00:00:59:03:78:d2:94:b8:9f:95,
contextName=
},
requestID=2058388122,
errorStatus=0,
errorIndex=0,
VBS[
1.3.6.1.2.1.1.1.0 = 24-Port Gigabit Smart Switch with PoE and 4 SFP uplinks
]
]
Kafka トピックのデータ。
{
"peerAddress":"127.0.0.1/55159",
"securityName":"admin",
"variables":[
{
"oid":"1.3.6.1.2.1.1.1.0",
"type":"octetString",
"counter32":null,
"counter64":null,
"gauge32":null,
"integer":null,
"ipaddress":null,
"null":null,
"objectIdentifier":null,
"octetString":null,
"opaque":null,
"timeticks":null,
"metadata":{
"string":"24-Port Gigabit Smart Switch with PoE and 4 SFP uplinks"
}
}]
}
REST ベースの例¶
この設定は、 分散ワーカー と併せて使用します。以下の JSON を snmp-trap-source-config.json
に書き込み、必要な値をすべて構成し、以下のコマンドを使用して、分散された Connect ワーカーのいずれかに構成をポストします。詳細については、「Kafka Connect Kafka Connect REST インターフェイス 」を参照してください。
{
"name": "SnmpTrapSourceConnector",
"config": {
"name":"SnmpTrapSourceConnector",
"connector.class":"io.confluent.connect.snmp.SnmpTrapSourceConnector",
"tasks.max":"1",
"kafka.topic":"snmp-kafka-topic",
"snmp.v3.enabled":"true",
"snmp.batch.size":"50",
"snmp.listen.address":"<ip-address to listen trap from>",
"snmp.listen.port":"<port to listen trap from>",
"auth.password":"<Auth-Password>",
"privacy.password":"<privacy-password>",
"security.name":"<security-name>",
"confluent.topic.bootstrap.servers":"localhost:9092",
"confluent.topic.replication.factor":"1"
}
}
いずれかの Kafka Connect ワーカーに構成をポストするには、curl
を使用します。http://localhost:8083/
は、Kafka Connect ワーカーのいずれかのエンドポイントに変更します。
curl -sS -X POST -H 'Content-Type: application/json' --data @snmp-trap-source-config.json http://localhost:8083/connectors
以下のコマンドを使用して、既存のコネクターの構成をアップデートします。
curl -s -X PUT -H 'Content-Type: application/json' --data @snmp-trap-source-config.json http://localhost:8083/connectors/snmpTrapSourceConnector/config
コネクターが正常に起動されたことを確認します。以下を入力して、Connect ワーカーのログを確認します。
confluent local services connect log
SNMP デバイスが実行され、PDU が生成されている必要があります。コネクターによってトラップタイプの PDU がリッスンされ、Kafka のトピックにプッシュされます。
レコードスキーマ¶
ソースコネクターでは、以下のフォーマットのレコードが作成されます。
キースキーマ¶
キーは以下のフィールドを持つ struct
です。
フィールド名 | スキーマの型 | 省略可能かどうか | 説明 |
---|---|---|---|
peerAddress | string | 必須 | トラップを送信するホストのリモートアドレス。 |
値スキーマ¶
値は以下のフィールドを持つ struct
です。
フィールド名 | スキーマの型 | 省略可能かどうか | 説明 |
---|---|---|---|
peerAddress | string | 必須 | トラップを送信するホストのリモートアドレス。 |
securityName | string | 必須 | イベントの送信先コミュニティの名前。 |
variables | 構造体の配列 | 必須 | このトラップの変数。 |
変数スキーマ¶
変数は以下のフィールドを持つ struct
です。
フィールド名 | スキーマの型 | 省略可能かどうか | 説明 |
---|---|---|---|
oid | string | 必須 | OID |
type | string | 必須 | 変数バインディングの構文タイプ。 |
counter32 | int32 | 省略可能 | Counter32 値。0 から 4294967295 までの範囲。 |
counter64 | int64 | 省略可能 | Counter64 値。0 から 18446744073709551615 までの範囲。 |
gauge32 | int32 | 省略可能 | Gauge32 値。0 から 4294967295 までの範囲。 |
integer | int32 | 省略可能 | 整数値。 |
ipaddress | string | 省略可能 | IpAddress 値。 |
null | string | 省略可能 | null 値。 |
objectIdentifier | string | 省略可能 | OID 値。 |
octetString | string | 省略可能 | オクテット文字列値。 |
opaque | string | 省略可能 | opaque 値。 |
timeticks | int32 | 省略可能 | timeticks 値。0 から 4294967295 までの範囲。 |
metadata | string | 省略可能 | 変数の値オブジェクトを含むメタデータフィールド。 |