AppPot IoTのセットアップ
AppPot IoTをセットアップするために必要なリソースファイルの入手はお問い合わせからご連絡下さい。
セットアップに使用するスクリプトはこちらで公開しています。
Releasesから一式ダウンロードすることができます。
セットアップのスクリプトの中でyumを利用しますので、事前にyumをセットアップして下さい。
ActiveMQ、Kafuka、apppot-iotのセットアップ
apppot-iot-install.sh
を使用してセットアップを行います。
インストーラーの実行にはrootユーザーなどのインストール先(デフォルトの場合、/opt/apppot-iot/)に書き込み権限があるユーザーで行って下さい。
$ ./apppot-iot-install.sh -o wildfly
$ cd /opt/apppot-iot/
$ ls
apache-activemq-5.14.0 application fluentd kafka_2.10-0.10.0.1 middleware mysql
Fluentd(td-agent)をインストール
td-agent_installer.sh
を使用してセットアップを行います。
# ./td-agent_installer.sh -d /opt/apppot-iot
データベースの作成
-
MySQLのインストール
mysql_installer.sh
を参考に、MySQLをインストールしてください。
バージョンなど異なっている場合は、適宜変更してください。
-
データベースの作成
mysql_setup.sh
のDBユーザー、パスワードの変更を適宜変更してください。mysql_setup.sh
の実行をして、MySQLのデータベース等を作成してください。
環境に合わせた設定
KafkaにTopicを作成する
cd /opt/apppot-iot/kafka_2.11-0.10.0.1
bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic {Topic名}
apppot-iotの設定ファイル編集
- apppot_iot.properteisファイルの設定
apppot_iot.properteisはデフォルトでは/opt/apppot-iot/application/apppot-iot/config/
にあります。
# ActiveMQへの接続情報
activemq.broker.url = tcp://localhost:1883
activemq.client.id = JavaClient
# メッセージIdのプリフィックス
apppot.iot.hostname = apppot-iot-01
# Kafkaへの接続情報
kafka.bootstrap.servers = localhost:9092
kafka.retries = 0
kafka.acks = all
kafka.compression.type = none
kafka.batch.size = 200
# MySQLへの接続情報
mysql.jdbc = jdbc:mysql://localhost:3306/apppot
mysql.user = root
mysql.password = P@ssw0rd
必須で変更が必要なのはMySQLへの接続情報です。
activemqおよびkafkaについて、ActiveMQ、Kafkaの設定を変更していなければ、デフォルトのまま動作します。
apppot.iot.hostnameは、クライアントからメッセージIdが送られてこなかった場合に、apppot-iotでメッセージIdを採番する際のプリフィックスです。サーバーごとに異なる値を設定することで、どのサーバーから送信されたのかを区別することができます。
- log4j.xmlファイルの設定
log4j.xmlはデフォルトでは/opt/apppot-iot/application/apppot-iot/config/
にあります。必要に応じて、ログの出力先を設定してください。
デフォルトの設定では、下記にログが出力されます。
/var/log/apppot/apppot-iot.log
Fluentd(td-agent)の設定ファイル編集
- fluentd-consumer.propertiesの設定
fluentd-consumer.propertiesにはKafka上に格納されたメッセージを取得するために、どのTopicを使用するのかを定義します。デフォルトでは/opt/apppot-iot/application/kafka-fluentd-consumer/config/
にあります。
fluentd.consumer.topicsの値をKafka上に作成したTopic名に合わせて変更してください。
fluentd.consumer.topics=0001.serviceA
- apppot-iot.confの設定
apppot-iot.confでは、MQTTで受け取ったメッセージをどこに連携するのかを定義します。
デフォルトでは/opt/apppot-iot/fluentd/conf/
にあります。
<match apppot.{Topic名}>
のTopic名を更新してください。Topic名にはワイルドカードが使用できるため、例えば<match apppot.0001.**>
といった文字列を指定した場合、0001.serviceA
や0001.serviceB
といったTopic名で受け取ったメッセージを扱うことができます。
デフォルトの設定では/opt/apppot-iot/fluentd/message/0001
にMQTTのメッセージを出力します。出力先の変更については、別のページで説明します。
<system>
@log_level debug
</system>
<source>
@type forward
</source>
<source>
@type exec
command java -Dlog4j.configuration=file:/opt/apppot-iot/application/kafka-fluentd-consumer/config/log4j.properties -jar /opt/apppot-iot/application/kafka-fluentd-consumer/kafka-fluentd-consumer-0.3.0-all.jar /opt/apppot-iot/application/kafka-fluentd-consumer/config/fluentd-consumer.properties
tag dummy
format json
</source>
# You can specify the topic of Kafka.
<match apppot.0001.**>
@type copy
<store>
@type file
path /opt/apppot-iot/fluentd/message/0001
</store>
</match>
起動
Active MQの起動
cd /opt/apppot-iot/apache-activemq-5.14.1
bin/activemq start
cd /opt/apppot-iot/apache-activemq-5.14.1
bin/activemq stop
Kafka - Zookeeperの起動
- 起動手順
cd /opt/apppot-iot/kafka_2.11-0.10.0.1
bin/zookeeper-server-start.sh config/zookeeper.properties
- 停止手順
cd /opt/apppot-iot/kafka_2.11-0.10.0.1
bin/zookeeper-server-stop.sh config/zookeeper.properties
事前にKafka Serverが停止している必要がある。
Kafka - Kafka Serverの起動
- 起動手順
cd /opt/apppot-iot/kafka_2.11-0.10.0.1
bin/kafka-server-start.sh config/server.properties
事前にZookeeperが起動している必要がある。
- 停止手順
cd /opt/apppot-iot/kafka_2.11-0.10.0.1
bin/kafka-server-stop.sh config/server.properties
apppot-iotの起動
Fluentd(td-agent)の起動