I have Orion, MongoDB and Cygnus-ngsi installed with docker-compose on an Ubuntu 18.04 machine. The images I used were: fiware/orion:latest, fiware/cygnus-ngsi:latest and mongo:3.6.
They were installed with the command: docker-compose -f reflexwaterDocker.yaml up
I had no installation problems. All containers are UP. Orion saving to MongoDB. The Cygnus API working.
I created a subscription to an Orion entity, all ok. But when I update the entity, the orion performs on the mongo, but Cygnus does not persist the historical data.
The agent.conf file in opt/apache-flume/conf
is configured correctly. I am using the default setup for the docker-compose installation.
I followed the process described in: https://github.com/telefonicaid/fiware-cygnus/blob/master/doc/cygnus-ngsi/installation_and_administration_guide/install_with_docker.md
All ports are correct and have been tested.
I've used Cygnus with Orion and MongoDB manually installing, and I had no problem. But also, there I set up an agent_conf and a cygnus_instance.conf. Using the docker, following the step by step in the documentation it is not necessary to configure cygnus_instance.conf. It doesn't even exist inside the opt/apache-flume/conf
folder.
Does anyone have any idea what might be happening to Cygnus not persisting the data? Or have you been through this and managed to solve it?
My docker-compose looks like this for Cygnus-ngsi:
image: fiware/cygnus-ngsi:latest
hostname: cygnus
container_name: cygnus
networks:
- default
depends_on:
- mongo
expose:
- "5050"
- "5080"
ports:
- "5050:5050"
- "5080:5080"
environment:
- CYGNUS_SERVICE_PORT=5050
- CYGNUS_AGENT_NAME=cygnus-ngsi
- CYGNUS_MONGO_SERVICE_PORT=5050
- CYGNUS_DEFAULT_SERVICE=def_serv
- CYGNUS_DEFAULT_SERVICE_PATH=reflexWater
- CYGNUS_MONGO_HOSTS=localhost:27017
- CYGNUS_MONGO_USER=""
- CYGNUS_MONGO_PASS=""
- CYGNUS_MONGO_ENABLE_ENCODING=false
- CYGNUS_MONGO_ENABLE_GROUPING=false
- CYGNUS_MONGO_ENABLE_NAME_MAPPINGS=false
- CYGNUS_MONGO_DATA_MODEL=dm-by-entity
- CYGNUS_MONGO_ATTR_PERSISTENCE=column
- CYGNUS_MONGO_DB_PREFIX=db_
- CYGNUS_MONGO_COLLECTION_PREFIX=col_
- CYGNUS_MONGO_ENABLE_LOWERCASE=false
- CYGNUS_MONGO_BATCH_TIMEOUT=30
- CYGNUS_MONGO_BATCH_TTL=10
- CYGNUS_MONGO_DATA_EXPIRATION=0
- CYGNUS_MONGO_COLLECTIONS_SIZE=0
- CYGNUS_LOG_LEVEL=DEBUG
- CYGNUS_SKIP_CONF_GENERATION=false
I ran the command: docker logs cygnus
Cygnus tries to persist the data as per the log:
time=2020-05-03T01:18:27.683Z | lvl=INFO | corr=fda0c4fc-8cdb-11ea-ad11-0242ac120003 | trans=f1674faf-aa5a-4ca8-a62a-2136378f6d08 | srv=default |subsrv=/ | comp=cygnus-ngsi | op=persistAggregation | msg=com.telefonica.iot.cygnus.sinks.NGSIMongoSink[235] : [mongo-sink] Persisting data at NGSIMongoSink. Database: db_default, Collection: col_/_Room1_Room, Data: [Document{{temperature=279, recvTime=Sun May 03 01:18:27 UTC 2020}}]
But I also noticed the following error:
time=2020-05-03T01:18:28.553Z| lvl=WARN|corr=fda0c4fc-8cdb-11ea-ad11-0242ac120003 |trans=f1674faf-aa5a-4ca8-a62a-2136378f6d08 | srv=default| subsrv=/ | comp=cygnus-ngsi | op=createCollection|msg=com.telefonica.iot.cygnus.backends.mongo.MongoBackendImpl[192] : Error in collection col_/_Room1_Room creating index ex=Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='""', source='db_default', password=<hidden>, mechanismProperties=<hidden>}
As I understand it, it doesn't persist because of MongoDB's credentials.. But I am not using Username and Password for the MongoDB bank.
So, what can it be? I didn't understand the error and I couldn't even find a plausible justification for the error.
Someone who has already used cygnus on the docker and who can give me some guidance on how to solve this.
Thank you