AppPot IoTのセットアップ

AppPot IoTをセットアップするために必要なリソースファイルの入手はお問い合わせからご連絡下さい。
セットアップに使用するスクリプトはこちらで公開しています。
Releasesから一式ダウンロードすることができます。

セットアップのスクリプトの中でyumを利用しますので、事前にyumをセットアップして下さい。

ActiveMQ、Kafuka、apppot-iotのセットアップ

apppot-iot-install.shを使用してセットアップを行います。

  • 使い方
    Usage: ./apppot-iot-install.sh [-d install_dir] [-s zipfile] [-o owner]
    
    • -d: インストール対象のディレクトリ。省略した場合、/opt/apppot-iotを使用する。
    • -s: インストール用モジュールのファイル。省略した場合、本シェルと同じところにあるapppot-iot.zipを使用する。
    • -o: オーナーユーザー。インストールされるファイルのオーナーとなるOSのユーザー。省略した場合apppotを使用する。事前に指定するユーザーが存在している必要があります。

インストーラーの実行には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

データベースの作成

  1. MySQLのインストール
    mysql_installer.shを参考に、MySQLをインストールしてください。
    バージョンなど異なっている場合は、適宜変更してください。

  2. データベースの作成
    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.serviceA0001.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の起動

  • 起動手順
    cd /opt/apppot-iot/application/apppot-iot
    ./start-apppot-iot.sh 
    
  • 停止手順
    Ctrl + Cで停止

Fluentd(td-agent)の起動

  • 起動手順
    # cd /opt/td-agent
    # td-agent -c conf/apppot-iot.conf
    
  • 停止手順
    Ctrl + Cで停止