cygnus-common docker

コンテンツ :

始める前に

Docker がインストールされ、実行されている必要があります。[公式スタートガイド]((https://docs.docker.com/linux/started/)をチェックしてください

トップ

イメージを取得

ソースからのビルド

fiware-cygnus リポジトリをクローンすることから始めます :

$ git clone https://github.com/telefonicaid/fiware-cygnus.git

ディレクトリを変更 :

$ cd fiware-cygnus/docker/cygnus-common

次のコマンドを実行 :

$ docker build -t cygnus-common .

しばらく時間がかかることがあります、完了したら、Docker で利用可能なイメージを確認するには、次のように入力します :

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
cygnus-common       latest              0d2e537ac922        41 minutes ago      673.8 MB
centos              6                   61bf77ab8841        6 weeks ago         228.9 MB                          

トップ

Docker Hub イメージの使用

最初からイメージを作成する代わりに、hub.docker.com からイメージをダウンロードすることができます :

$ docker pull fiware/cygnus-common

上記と同じ方法でリストすることができます :

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
cygnus-common       latest              0d2e537ac922        41 minutes ago      673.8 MB
centos              6                   61bf77ab8841        6 weeks ago         228.9 MB                          

トップ

イメージを使用

そのまま

cygnus-common のイメージ (最初から作成したもの、hub.docker.comからダウンロードしたもの)は、INFO レベルでメッセージを記録する Cygnus エージェントを実行することができます。これは、デフォルトのエージェント設定が logger-sink を実行しているためです。

ターミナルで次のように入力してこのイメージのコンテナを開始します :

$ docker run cygnus-common

直後に、cygnus-common ロギングトレースを見られるでしょう:

+ exec /usr/lib/jvm/java-1.7.0/bin/java -Xmx20m -Dflume.root.logger=INFO,console -cp '/opt/apache-flume/conf:/opt/apache-flume/lib/*:/opt/apache-flume/plugins.d/cygnus/lib/*:/opt/apache-flume/plugins.d/cygnus/libext/*' -Djava.library.path= com.telefonica.iot.cygnus.nodes.CygnusApplication -f /opt/apache-flume/conf/agent.conf -n cygnus-common
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/apache-flume/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/apache-flume/plugins.d/cygnus/libext/cygnus-common-1.0.0_SNAPSHOT-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
time=2016-05-17T06:36:23.867UTC | lvl=INFO | corr= | trans= | srv= | subsrv= | function=main | comp= | msg=com.telefonica.iot.cygnus.nodes.CygnusApplication[166] : Starting Cygnus, version 1.0.0_SNAPSHOT.d7cfee4455a59a1854cc53f37e16ff4866b26010
...
...
time=2016-05-17T06:36:25.046UTC | lvl=INFO | corr= | trans= | srv= | subsrv= | function=main | comp=cygnus-common | msg=com.telefonica.iot.cygnus.nodes.CygnusApplication[286] : Starting a Jetty server listening on port 8081 (Management Interface)

2番目のターミナルのシェルで、実行中のコンテナをチェックすることができます :

$ docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                NAMES
c88bc1b66cdc        cygnus-common       "/cygnus-entrypoint.   6 seconds ago       Up 5 seconds        5050/tcp, 8081/tcp   naughty_mayer  

上のコンテナの IP アドレスを確認するには、次のようにします :

$ docker inspect c88bc1b66cdc | grep \"IPAddress\"
        "IPAddress": "172.17.0.8",

2番目のターミナルのシェルで、コンテナの IP アドレスが取得されたら、Cygnus のバージョンを確認します :

$ curl "http://172.17.0.8:8081/v1/version"
{"success":"true","version":"1.0.0_SNAPSHOT.d7cfee4455a59a1854cc53f37e16ff4866b26010"}

API メソッドを使用しても、cygnus-common が INFO レベルでログを出力する方法を知ることができます。

$ curl -X POST "http://172.17.0.7:8081/v1/subscriptions?ngsi_version=2" -d '{"subscription":{"description": "title_of_subscription","subject": {"entities": [{"idPattern": ".*","type": "Room"}],"condition": {"attrs": ["attr1"],"expression": {"q": "attr1>40"}}},"notification": {"http": {"url": "http://localhost:1234"},"attrs": ["attr1","attr2"]},"expires": "2016-05-05T14:00:00.00Z","throttling": 5}, "endpoint":{"host":"orion_host", "port":"orion_port", "ssl":"false", "xauthtoken":"your_auth_token"}}'
{"success":"true","result" : { SubscriptionID = 573ac3b6aba73680b1905f5c}

cygnus-common のターミナルにで次のような内容が出力されます :

time=2016-05-17T07:09:40.956UTC | lvl=INFO | corr= | trans= | srv= | subsrv= | function=handle | comp=cygnus-common | msg=com.telefonica.iot.cygnus.management.ManagementInterface[131] : Management interface request. Method: POST, URI: /v1/subscriptions
time=2016-05-17T07:09:41.343UTC | lvl=INFO | corr=dfca71a9-41f1-4f98-8fa8-4f15612a72db | trans=dfca71a9-41f1-4f98-8fa8-4f15612a72db | srv= | subsrv= | function=<init> | comp=cygnus-common | msg=com.telefonica.iot.cygnus.backends.http.HttpClientFactory[79] : Setting max total connections (500)
time=2016-05-17T07:09:41.343UTC | lvl=INFO | corr=dfca71a9-41f1-4f98-8fa8-4f15612a72db | trans=dfca71a9-41f1-4f98-8fa8-4f15612a72db | srv= | subsrv= | function=<init> | comp=cygnus-common | msg=com.telefonica.iot.cygnus.backends.http.HttpClientFactory[80] : Setting default max connections per route (100)

コンテナを次のようにして停止できます :

$ docker stop c88bc1b66cdc
c88bc1b66cdc
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

トップ

特定の構成の使用

上記のように、イメージと共に配布されるデフォルトの設定は、テストに適していない特定の値が設定されています。具体的には :

  • ロギングレベルは INFO です
  • ロギングアペンダは console です

適切な値で上記の値を変更する必要があるかもしれません。

トップ

Docker ファイルの編集

最も簡単な方法は、docker/cygnus-common 下の Dockerfile および/または agent.conf の両方を編集することで、最初から cygnus-common のイメージを構築します。

docker イメージを完全に制御できます。

トップ

環境変数

環境変数に関連付けられたこれらのパラメータは、-e オプションを使用してコマンドラインで簡単に上書きすることができます。たとえば、log4j ロギング・レベルを変更する場合は、次のコマンドを実行します :

$ docker run -e LOG_LEVEL='DEBUG' cygnus-common

トップ

ボリュームの使用

もう1つの可能性は、ボリューム(-v オプション)を持つコンテナを起動し、そのコンテナ内のコンフィギュレーション・ファイル全体をファイルのローカル・バージョンでマップすることです :

$ docker run -v /absolute/path/to/local/agent.conf:/opt/apache-flume/conf/agent.conf cygnus-common-1

もちろん、ボリュームと環境変数を組み合わせて上書きすることもできます :

$ docker run -v /absolute/path/to/local/agent.conf:/opt/apache-flume/conf/agent.conf -e LOG_LEVEL='DEBUG' cygnus-common

トップ