Orion не уведомляет Cygnus (ошибка тайм-аута)

Похоже, Орион не может связаться с Лебедем и выдает следующее предупреждение (я скрыл IP-адреса):

WARNING@13:33:21  AlarmManager.cpp[303]: Raising alarm NotificationError Y.Y.Y.Y:5050/notify: (curl_easy_perform failed: Timeout was reached)

Сначала я создал объект, затем оформил подписку и впоследствии обновил объект. Для информации, вот весь журнал отладки с момента запуска contextBroker:

INFO@13:31:51  contextBroker.cpp[1808]: Startup completed
INFO@13:32:51  connectionOperations.cpp[626]: Database Operation Successful (command: { listDatabases: 1 })
INFO@13:32:51  connectionOperations.cpp[79]: Database Operation Successful (query: { conditions.type: "ONCHANGE" })
INFO@13:33:16  logMsg.h[1803]: Starting transaction from X.X.X.X:45738/v1/updateContext
INFO@13:33:16  connectionOperations.cpp[79]: Database Operation Successful (query: { _id.id: "1", _id.type: "auto", _id.servicePath: /^\/$/ })
INFO@13:33:16  connectionOperations.cpp[401]: Database Operation Successful (update: <{ _id.id: "1", _id.type: "auto", _id.servicePath: /\// }, { $set: { attrs.kenteken: { value: "TEST", type: "string", creDate: 1457009737, modDate: 1457011996 }, modDate: 1457011996 }, $unset: { location: 1 } }>)
INFO@13:33:16  logMsg.h[1803]: Starting transaction to Y.Y.Y.Y:5050/notify
INFO@13:33:16  logMsg.h[1887]: Transaction ended
INFO@13:33:20  logMsg.h[1803]: Starting transaction from X.X.X.X:45738/v1/subscribeContext
INFO@13:33:20  connectionOperations.cpp[153]: Database Operation Successful (query: { query: { $or: [ { _id.id: "1", _id.type: "auto" } ], _id.servicePath: { $in: [ null, /^$/, /^/.*/ ] }, attrNames: { $in: [ "kenteken", "timestamp" ] } }, orderby: { creDate: 1 } })
INFO@13:33:20  connectionOperations.cpp[153]: Database Operation Successful (query: { query: { $or: [ { _id.id: "1", _id.type: "auto" } ], _id.servicePath: { $in: [ null, /^$/, /^/.*/ ] } }, orderby: { creDate: 1 } })
INFO@13:33:20  logMsg.h[1803]: Starting transaction to Y.Y.Y.Y:5050/notify
INFO@13:33:20  connectionOperations.cpp[336]: Database Operation Successful (insert: { _id: ObjectId('56d83d2070c15b679240ebd6'), expiration: 1459604000, reference: "http://Y.Y.Y.Y:5050/notify", throttling: 1, servicePath: "/#", entities: [ { id: "1", type: "auto", isPattern: "false" } ], attrs: [ "kenteken", "timestamp" ], conditions: [ { type: "ONCHANGE", value: [ "kenteken" ] } ], expression: { q: "", geometry: "", coords: "", georel: "" }, lastNotification: 1457012000, count: 1, format: "JSON" })
INFO@13:33:20  logMsg.h[1887]: Transaction ended
WARNING@13:33:21  AlarmManager.cpp[303]: Raising alarm NotificationError Y.Y.Y.Y:5050/notify: (curl_easy_perform failed: Timeout was reached)
INFO@13:33:21  logMsg.h[1887]: Transaction ended
INFO@13:33:25  logMsg.h[1887]: Transaction ended
INFO@13:33:32  logMsg.h[1803]: Starting transaction from X.X.X.X:45738/v1/updateContext
INFO@13:33:32  connectionOperations.cpp[79]: Database Operation Successful (query: { _id.id: "1", _id.type: "auto", _id.servicePath: /^\/$/ })
INFO@13:33:32  connectionOperations.cpp[401]: Database Operation Successful (update: <{ _id.id: "1", _id.type: "auto", _id.servicePath: /\// }, { $set: { attrs.kenteken: { value: "93XBV4", type: "string", creDate: 1457009737, modDate: 1457012012 }, modDate: 1457012012 }, $unset: { location: 1 } }>)
INFO@13:33:32  logMsg.h[1803]: Starting transaction to Y.Y.Y.Y:5050/notify
INFO@13:33:32  logMsg.h[1887]: Transaction ended
INFO@13:33:32  logMsg.h[1803]: Starting transaction to Y.Y.Y.Y:5050/notify
INFO@13:33:37  logMsg.h[1887]: Transaction ended

В чем может быть причина тайм-аута?

NB: я вижу объекты, созданные в MongoDB (база данных Orion), и поэтому предполагаю, что запросы верны. Это подтверждается тем фактом, что официальная документация использует тот же формат. Cygnus также настроен в соответствии с официальной документацией и, кажется, работает как надо (ошибок в логировании нет, просто не получает данные от Orion).


person iotproject001    schedule 03.03.2016    source источник
comment
Открыт ли порт 5050 в группе безопасности виртуальной машины Y.Y.Y.Y? Работающий на этой виртуальной машине брандмауэр блокирует этот трафик (как правило, вы можете выполнить быстрый тест, запустив iptables -F, чтобы сбросить все правила брандмауэра)?   -  person fgalan    schedule 03.03.2016


Ответы (2)


Не уверен в причине этой проблемы, так как мне нужна дополнительная информация о конфигурации группы безопасности в ГГГГ (как задано в комментарии к сообщению с вопросом).

Однако наиболее вероятными причинами этой проблемы являются:

  • Cygnus не запущен на хосте Y.Y.Y.Y.
  • Cygnus запускается на хосте Y.Y.Y.Y, но на порту, отличном от 5050.
  • Что-то на хосте ГГГГ (например, брандмауэр или группа безопасности) блокирует входящее уведомление.
  • Что-то на хосте, на котором работает Orion (например, брандмауэр), блокирует исходящее уведомление.
  • Существует какая-то другая проблема с сетью, вызывающая проблему с подключением.
person fgalan    schedule 10.03.2016

Я столкнулся с той же проблемой, но со связью Orion -> Proton. Мой экземпляр Proton не получал уведомления Orion.

Поскольку я использую Docker как для Orion, так и для Proton, я решил вставить IP-адрес докера Proton в подписку.

Найдите IP-адрес докера контейнера с помощью sudo docker network inspect bridge. Мой IP-адрес контейнера Proton был 172.17.0.4.

Затем, когда вы подписываетесь на контекст, используйте этот IP-адрес в полезной нагрузке contextSubscription. В моем случае это было "reference": "http://172.17.0.4:8080/ProtonOnWebServer/rest/events",

В вашем случае при использовании Cygnus должно быть что-то вроде "reference": "http://<cygnus_docker_ip>:5050/notify",

person mrgiesel    schedule 28.03.2016