in src/influxDBTelemetryPublisher.py [0:0]
def relay_telemetry(influxdb_parameters) -> None:
"""
Relay Greengrass system telemetry from Greengrass to InfluxDB.
Parameters
----------
influxdb_paremeters(str): the retrieved parameters needed to connect to InfluxDB
Returns
-------
None
"""
# Now we can subscribe to Greengrass Local Telemetry and relay it to InfluxDB using our retrieved credentials
telemetry_subscriber_client = awsiot.greengrasscoreipc.connect()
handler = streamHandlers.TelemetryStreamHandler(influxdb_parameters)
telemetry_operation = telemetry_subscriber_client.new_subscribe_to_topic(handler)
try:
request = SubscribeToTopicRequest()
request.topic = telemetry_topic
future = telemetry_operation.activate(request)
future.result(TIMEOUT)
logging.info('Successfully subscribed to topic: {}'.format(telemetry_topic))
logging.info('Relaying telemetry to InfluxDB...')
except concurrent.futures.TimeoutError as e:
logging.error('Timeout occurred while subscribing to topic: {}'.format(telemetry_topic), exc_info=True)
raise e
except UnauthorizedError as e:
logging.error('Unauthorized error while subscribing to topic: {}'.format(telemetry_topic), exc_info=True)
raise e
except Exception as e:
logging.error('Exception while subscribing to topic: {}'.format(telemetry_topic), exc_info=True)
telemetry_operation.close()
raise e