KafkaによるContrail Insights
Kafkaのセットアップ
Contrail Insights は Kafka のトピックを明示的に作成しません。Kafka ブローカー クラスターは、トピックを自動的に作成するように構成する必要があります。または、トピック作成を手動で管理することもできます。Kafkaをすでに実行している場合は、 Kafkaのセットアップ をスキップして、 KafkaでContrail Insightsを設定するに直接行くことができます。
DockerコンテナとしてのKafkaの設定:
-
以下のコマンドを実行して、このKafkaコンテナとその依存関係が接続するためのDockerネットワークを作成します。
docker network create AppformixKafka
-
次に、Kafkaのズーキーパーを起動して動作します。
docker run -d \ --name appformix-zookeeper \ --net AppformixKafka \ -e ZOOKEEPER_TICK_TIME=2000 \ -e ZOOKEEPER_CLIENT_PORT=2181 \ -p 2181:2181 \ --restart always \ confluent/zookeeper
-
以下を実行してKafkaコンテナを起動します。変数
ip_address
は、適切に指定する必要があります。docker run -d \ --net=AppformixKafka \ --name=appformix-kafka \ -p 9092:9092 \ -e KAFKA_BROKER_ID=2 \ -e KAFKA_ZOOKEEPER_CONNECT=appformix-zookeeper:2181 \ -e KAFKA_ADVERTISED_HOST_NAME=appformix-kafka \ -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://<ip_address>:9092 \ -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \ confluentinc/cp-kafka:latest
-
SSL を使用した Kafka が必要な場合は、追加のパラメーターが必要です。
docker run -d \ --net=AppformixKafkaSSL \ --name=appformix-kafka-ssl \ -p 9092:9092 \ -e KAFKA_BROKER_ID=2 \ -e KAFKA_ZOOKEEPER_CONNECT=appformix-zookeeper-ssl:2181 \ -e KAFKA_ADVERTISED_HOST_NAME=appformix-kafka-ssl \ -e KAFKA_ADVERTISED_LISTENERS=SSL://$ipaddr:9092 \ -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \ -e KAFKA_SECURITY_INTER_BROKER_PROTOCOL=SSL \ -e KAFKA_SSL_KEYSTORE_FILENAME=kafka.broker.keystore.jks \ -e KAFKA_SSL_KEYSTORE_CREDENTIALS=broker_keystore_creds \ -e KAFKA_SSL_KEY_CREDENTIALS=broker_sslkey_creds \ -e KAFKA_SSL_TRUSTSTORE_FILENAME=kafka.broker.truststore.jks \ -e KAFKA_SSL_TRUSTSTORE_CREDENTIALS=broker_truststore_creds \ -e KAFKA_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM=" " \ -e KAFKA_SSL_CLIENT_AUTH=requested \ -v <secret_files_path>:/etc/kafka/secrets \ confluentinc/cp-kafka:latest
は
secret_files_path
、すべての鍵ストアファイルとトラストストア・ファイルが存在する場所で置き換える必要があります。上記の鍵ストアとトラストストアの作成方法の例については、以下を参照してください: https://github.com/confluentinc/cp-docker-images/blob/5.2.1-post/examples/kafka-cluster-ssl/secrets/create-certs.sh。メモ:SSL を使用した Kafka が必要な場合は、Contrail Insights で監視されるすべてのホストに、Python バージョン 2.7.9 以上が必要です。また、Kafka ブローカーの証明書に使用される認証機関(CA)は、Contrail Insights によって監視されるすべてのホストで信頼できる CA である必要があります。Contrail Insights コンテナが Kafka ブローカーと通信するためには、CA ファイルをインストール時に変数
appformix_kafka_ssl_ca
としてgroup_vars/all
設定する必要があります。Kafkaがセットアップされると、次にKafkaでContrail Insightsを設定できます。
KafkaでContrail Insightsを設定
KafkaでContrail Insightsを設定するには、POSTリクエストをContrail InsightsプラットフォームAPIに送信する必要があります。
http://<controller_ip>:9000/appformix/controller/v2.0/kafka_config
この要求では、以下のフィールドを送信する必要があります。
Name | Kafka クラスターの名前は何でも可能です。 |
BootstrapServers | Kafka クラスタへの最初の接続を確立するために使用するホスト/ポート ペアのリスト。リスト内の各項目は、形式 |
Ansibleを使用してPOST本文リクエストを送信するには、次の手順に基います。
次のような POST 本文要求を実行します。
{ "Name": "Kafka Config", "BootstrapServers": ["10.X.X.1:9092"] }
Kafka が SSL でセットアップされている場合は、追加のフィールドが必要です。
{ "Name": "Kafka Config", "BootstrapServers": ["10.X.X.1:9092"], "SecurityProtocol": "SSL" }
Contrail Insights ダッシュボードから POST 本文リクエストを送信するには、次の手順にしたがっています。
-
右上隅の [設定] を選択し、 [AppFormix 設定] > Kafka を選択します。次に、[ + 構成の追加] をクリックします。
図 1:Kafka ページ の AppFormix 設定 -
Kafka設定の名前を入力し、ブートストラップサーバーを形式の各文字列
host:port
で区切られた文字列のリストとしてリストします。 -
フィールドを入力した後、[ 設定] をクリックします。
メモ:次の手順は、ネットワークテレメトリデータをKafkaにストリーミングします。上記の手順で述べたようにKafkaが設定されると、すべてのContrail InsightsアラームがKafkaに自動的に送信されます。アラームに追加の手順は必要ありません。 KafkaのContrail Insightsアラームを参照してください。
-
[ + サブスクリプションの追加] をクリックしてサブスクリプションを作成します。
-
次にトピックを作成し、デバイスを選択して、Kafkaに送信するセンサー/MIBを選択します。指定されたデータは、指定されたトピックの下で Kafka に送信されます。フィールド に入力 した後、[サブスクリプションの作成] をクリックします。
Contrail Insights から Kafka へのメッセージ
設定後、適切なKafkaコンシューマーがContrail Insightsからのメッセージを受信します。
以下のコマンドでは、 bootstrap_server
上の変数で BootstrapServers
指定されたブートストラップサーバーの1つであり、 topic
作成されたサブスクリプションで指定されたトピックです。
/usr/bin/kafka-console-consumer --bootstrap-server <bootstrap_server> --topic <topic> --from-beginning
このコマンドは、標準出力にメッセージを出力します。センサー/components/
を選択したトピックgrpc-components
の出力は次のようになります。
[ { "AgentId": uuid, "Timestamp": 1533915694346, "RoomKey": "QFX0:Routing Engine0", "ResourcePath": "/components/", "Data": { "cpu-utilization-background": 0, "cpu-utilization-user": 1, "temperature": 36, "temperature-cpu": 36 }, }, ]
KafkaによるContrail Insightsアラーム
Contrail Insightsアラームは、KafkaがContrail Insightsで設定されている場合、Kafkaにアラートを自動的に送信するように設定されています。 KafkaによるContrail Insightsの設定を参照してください。Contrail Insights は、アラームの名前としてトピックとともにアラームを送信します。例えば、アラーム名 host_cpu
はトピック host_cpu
とともにKafkaに送信されます。