Cygnus-ngsi, установленный с Docker-compose, не сохраняет данные в MongoDB

У меня установлены Orion, MongoDB и Cygnus-ngsi с помощью docker-compose на машине Ubuntu 18.04. Я использовал следующие изображения: fiware / orion: latest, fiware / cygnus-ngsi: latest и mongo: 3.6.

Их устанавливали командой: docker-compose -f reflexwaterDocker.yaml up

Проблем с установкой не было. Все контейнеры ВВЕРХ. Сохранение Ориона в MongoDB. Cygnus API работает.

Я создал подписку на организацию Орион, все в порядке. Но когда я обновляю сущность, орион действует на монго, но Лебедь не сохраняет исторические данные.

Файл agent.conf в opt/apache-flume/conf настроен правильно. Я использую настройку по умолчанию для установки docker-compose.

Я выполнил процесс, описанный в: https://github.com/telefonicaid/fiware-cygnus/blob/master/doc/cygnus-ngsi/installation_and_administration_guide/install_with_docker.md

Все порты правильные и протестированы.

Я использовал Cygnus с Orion и MongoDB вручную, и у меня не было проблем. Но также там я установил agent_conf и cygnus_instance.conf. Используя докер, следуя пошаговым инструкциям в документации, настраивать cygnus_instance.conf не нужно. Его даже нет в папке opt/apache-flume/conf.

Кто-нибудь знает, что может случиться с Cygnus, который не сохраняет данные? Или вы уже прошли через это и сумели это решить?

Мой docker-compose для 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

Я выполнил команду: docker logs cygnus

Cygnus пытается сохранить данные в соответствии с журналом: 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}}]

Но я также заметил следующую ошибку:

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>}

Насколько я понимаю, это не сохраняется из-за учетных данных MongoDB .. Но я не использую имя пользователя и пароль для банка MongoDB.

Итак, что это может быть? Я не понял ошибки и даже не смог найти правдоподобного оправдания ошибки.

Кто-то, кто уже использовал cygnus в докере и может дать мне несколько советов, как решить эту проблему.

Спасибо


person Rosiberto    schedule 02.05.2020    source источник
comment
Вы говорите «Использование докера», следуя пошаговым инструкциям в документации .... На какую документацию вы ссылаетесь? Было бы здорово, если бы вы могли отредактировать свой вопрос и включить ссылку на такую ​​документацию. Спасибо!   -  person fgalan    schedule 05.05.2020
comment
Использует ли ваш экземпляр MongoDB аутентификацию?   -  person fgalan    schedule 05.05.2020
comment
Без аутентификации.   -  person Rosiberto    schedule 12.05.2020


Ответы (1)


Принимая во внимание это

Я использовал Cygnus с Orion и MongoDB вручную, и у меня не было проблем

Я бы сказал, что проблема как-то связана с развертыванием докера. Более того, глядя на след:

Исключение аутентификации MongoCredential

возможно, переменные env CYGNUS_MONGO_USER="" и CYGNUS_MONGO_PASS="" неправильно обрабатываются (я полагаю, с помощью entrypoint.sh или аналогичного скрипта), и это вызывает проблему.

Чтобы отладить это, я предлагаю вам сравнить файлы Cygnus agent.conf / cygnus_instance.conf в рабочем случае (установка вручную) и в случае сбоя (докер). Возможно, различия могут дать некоторое представление о проблеме. В случае с докером, возможно, файлы не в opt/apache-flume/conf, но они должны быть где-то (либо внутри контейнера, либо смонтированы как том в системе хостинга).

Другой связанный с этим вопрос: версия Cygnus, которую вы заставляете работать вручную, именно та, что вы используете в случае с докером? Убедитесь, что вы используете точно такое же программное обеспечение.

person fgalan    schedule 13.05.2020
comment
Привет, fgalan, я провел сравнение, и ошибка была именно в моих переменных среды CYGNUS_MONGO_USER = "" и CYGNUS_MONGO_PASS = "". Правильным было: CYGNUS_MONGO_USER = и CYGNUS_MONGO_PASS = Я удалил двойные кавычки, и это сработало. Спасибо! - person Rosiberto; 16.05.2020
comment
Я рад узнать, что вы наконец нашли решение :) Итак, если вы найдете мой ответ правильным, пожалуйста, проголосуйте за него и отметьте его как правильный. Это не для того, чтобы накормить свое эго;), а чтобы помочь другим пользователям, давая им понять, что тот же ответ может быть им полезен. Спасибо! - person fgalan; 17.05.2020