Page tree
Skip to end of metadata
Go to start of metadata

The agents can be configured either via environmental variables or by a configuration file provided as an argument at starting time. Both configurations by file or by environmental variables use the same configuration settings.

Configuration by file

At the moment of starting the agent, the configuration file complete path and filename must be given as an argument of the application. The file doesn't need to contain all settings, it needs only the settings that differ from the default. 

Configuration by environmental variables

The configuration by environmental variables must be enabled for changing settings with the variables. To enable the environmental variables settings, the `env_var_enabled` variable must be set. Afterwards, any setting can be changed using the system, application or JVM variables. The setting names are the same for the configuration file. 

Notes tags:

In the file 

Notes about broker configurations:

The brokers can be define using aliases. Each broker defines by an alias in the property 'connection.brokers.aliases' will have the default configuration. If one of the configuration settings of one particular broker wants to be changed, the alias of the must be added as postfix concatenates with a ".". This, it will overwrite any default configuration. WARNING: changing the configuration of a broker will automatically create a new connection profile, ergo, it will create a new connection to the broker instead of reusing the existing ones. 


Sample Config File
__def__agent__conf__.cfg ddl
# Copyright [2013] [Fraunhofer-Gesellschaft]
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#
# @author Jose Angel Carvajal Soto
# @since       1.3.1


###########################################################################
#                            SECTION                                      #
#                       Agent configuration                               #
#                                                                         #
###########################################################################

#
## General configuration and information of the agent
#
    #
    # ID of the agent. If is * it will generate an UUID.
    # The ID is used by the agent several places for the incoming messages by using the tag <id> which will be replaced by the actual ID
        agent_id=*
    # Description of this instance
        agent_description=The instantiation of an LinkSmart(R) IoT Agent. A service for Stream Mining and Machine Learning management.
    # Topic were the agent is registered as Thing and the statements as Datastreams (accordingly to LinkSmart specs)
        ogc_registration_topic=LS/<ls_code>/<id>/OGC/1.0/Thing/
    # The will OGC topic for the agent as Thing (accordingly to LinkSmart OGC specs)
        ogc_topic_will=LS/<ls_code>/<id>/OGC/1.0/Thing/<id>/will/
    # Broker where messages that LinkSmart platform is connected to
        linksmart_broker=main_broker
   # How long till the Service Catalog removes the registration if there is no heartbeat
        linksmart_ttl=86400
   # Topic were the agent is registered as a Service (accordingly to LinkSmart specs)
        linksmart_service_registration_topic=LS/v${linksmart.major.version}/<ls_code>/<id>/service/
   # The will LinkSmart topic for the agent as Service (accordingly to LinkSmart OGC specs)
        linksmart_service_will_topic= LS/v${linksmart.major.version}/<ls_code>/<id>/will/
   # LinkSmart Service Catalog endpoint
        linksmart_service_catalog_endpoint=http://localhost:8082/
        linksmart_service_catalog_in_registration_fail_stop=false


# Statement API conf:
#
## This set properties define the broker and topic configuration where the statements will arrived and where the notifications will be sent.
#

    ## Enable the MQTT Statement API. If true the agent is able to receive requests addressing Statements, false otherwise.
        api_statements_mqtt_enable=true
    ## Broker configuration
        api_statements_mqtt_broker=control
    ## This topic will be use to publish the feedback when a application sends a statement
        api_statements_mqtt_topic_base=/statement/    
    ## Topic for get all statements
        api_statements_mqtt_topic_base_get=get
    ## Topic for add new statements are coming
        api_statements_mqtt_topic_base_add=add
    ## Topic for create new statements are coming
        api_statements_mqtt_topic_base_create=new
    ## Topic for add new statements are coming
        api_statements_mqtt_topic_base_update=update
    ## Topic for add new statements are coming
        api_statements_mqtt_topic_base_remove=delete

    ## Topic for output errors cannot be traced to an statement but made by one
        api_statements_mqtt_topic_base_errors=/statement/errors/
    ## Default output type
        api_statements_default_output_type=Observation
# Incoming Event API conf:
#
## This set properties define the broker and topic configuration where the events will arrived.
#
    ## A list of brokers where the events are incoming
        api_events_mqtt_broker_incoming=incoming
    ## the agent will try to parse any event without sending any exception or warning
        api_events_promiscuous=true
    ## the agent will try filter the events sent by himself
        api_event_filter_own_topics=true
    ## it will transform any event into the 'api_statements_default_output_type'
        api_events_translator=false
    ## name or alias of the types of the incoming events (as they will be referenced in the Statements/queries)
        connector_observers_type_aliases=Observation,Observation097,SenML,GPRTtype,Raw
        # Type Observation v1.0:
            api_events_mqtt_topic_incoming_Observation=LS/+/+/OGC/1.0/Datastreams/#
            connector_observers_payload_type_class_Observation=eu.linksmart.services.payloads.ogc.sensorthing.linked.ObservationImpl
        # Type Observation v0.97:
            api_events_mqtt_topic_incoming_Observation097=/incoming/#
            connector_observers_payload_type_class_Observation097=eu.almanac.ogc.sensorthing.api.datamodel.Observation
        # Type SenML v10:
            api_events_mqtt_topic_incoming_SenML=LS/+/+/SenML/10/Event/#
            connector_observers_payload_type_class_SenML =eu.linksmart.services.payloads.SenML.SenML

        # Type GPRTtype:
            api_events_mqtt_topic_incoming_GPRTtype=/storage/devices/+/variables/+/measurements/#
            connector_observers_payload_type_class_GPRTtype=eu.linksmart.services.payloads.gprt.GPRTtype

        # Type Raw:
                api_events_mqtt_topic_incoming_Raw=/raw/#
                connector_observers_payload_type_class_Raw=eu.linksmart.services.payloads.raw.RawEvent


# Outgoing EVENT API conf:
#
## This set properties define the brokers and topic configuration where the compounded or "complex" events will be published.
#

    ## Output topic for the compounded or "complex" events
         api_events_mqtt_topic_outgoing=LS/<ls_code>/<id>/OGC/1.0/Datastreams/<datastream_id>

    ## If this property is true the in case an compound event result is collection/map, the agent will send the event (if possible) in a single message.
    ## If it set false, each value of the collection/map will be send in individual separate messages.
        handler_events_output_aggregation=true
#
## Logging and monitoring features of the Agents conf:
#
    ## indicates how often a "alive" message is sent to the broker
        core_monitoring_heartbeat_every_milliseconds=30000
    ## indicates how often a "process" message is reported in the log
        feeder_monitoring_report_every=20
        connector_monitoring_mqtt_events_report_topics=false
        connector_monitoring_mqtt_events_report_everySeconds=60

#
## Advance settings of the CEP Engines
#
    # Indicates which package must be loaded in the CEP engines (old CEPWrappers)
        cep_init_additionalImportPackage=eu.linksmart.services.event.cep.tooling.Tools,java.util.UUID,eu.linksmart.services.payloads.SenML.SenML,eu.linksmart.services.event.ceml.core.CEML,eu.linksmart.api.event.types.EventEnvelope

    # If externalClock property is true, the CEP engine clock will be based on the timestamps of the events and not on the system clock.
    # If this property is set true, the staringTime must be defile
        cep_simulation_externalClock=false
    # (See externalClock) In case externalClock is set true, this property indicates the stating time of the CEP engine clock.
        cep_simulation_staringTime=2009-08-24T00:00:00.00Z

    ## Indicates which CEP engine will be loaded
        cep_init_engines=eu.linksmart.services.event.cep.engines.SiddhiEngine

    ## Indicate the files that contains the events and/or statement to be bootstrapped in the CEP engines
        cep_init_bootstrapping_files=
    ## Indicate the files that contains only events, one event per line (lazy loading for big files)
        cep_init_bootstrapping_events_files_Observation=
        cep_init_bootstrapping_events_files_SenML=
#
## Advance settings of the Agent Core
#
    # This property (a list) indicates if there is any extension to be booted by the core.
                # common extensions are:
                                # eu.linksmart.services.payloads.ogc.sensorthing.LinksBlocker (removes the navigation and self links from OGC)
                                # eu.linksmart.services.event.core.ThingsRegistrationService (register the datastrems into the OGC server)
                                # eu.linksmart.services.event.core.ServiceRegistratorService (register the agent in the service catalog)
                                # eu.linksmart.services.event.core.ServiceRegistratorService (register the agent in the service catalog)
                                # eu.linksmart.services.event.core.extensions.JWS (uses JWS for serialization and deserialization of the payloads )
                                # eu.linksmart.services.event.ceml.core.CEML (starts the Complex-Event Learning Framework)
        # legacy equivalent before feeders
        agent_init_extensions=
        agent_init_after_conf_before_CEP=
        agent_init_after_CEP_before_types=
        agent_init_after_types_before_feeders=eu.linksmart.services.payloads.ogc.sensorthing.LinksBlocker
        agent_init_after_feeders_before_connectors=
        agent_init_after_connectors_before_bootstrapping=
        agent_init_end=eu.linksmart.services.event.core.ServiceRegistratorService,eu.linksmart.services.event.core.ThingsRegistrationService
    # If this property is set to true, the agent ends if a essential persistence request fails to be stored or loaded in the files
        persistent_enabled=false
        fails_if_persistence_fails=true
        connector_persist_in=.persistent_file
        persistent_storage_period=60000

connection_hosts_rest_aliases=agent
connection_host_rest_endpoint=http://echo.jsontest.com/
python_path=
###########################################################################
#                            SECTION                                      #
##                REST and Spring-boot-Jetty configuration section        #
#                                                                         #
###########################################################################p

   # indicates if the Agent REST APIs should start
        api_rest_enabled=true
   # indicates additional REST APIs should be started (in case of extension packs that comes with REST enpoints)
        rest_api_extensions=eu.linksmart.services.event.ceml.CEMLRest

   # spring-boot configuration. more in http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
        spring_managed_configuration_features=server_port,server_ssl_key-store,server_ssl_key-store-password,server_ssl_client-auth,server_ssl_client-auth,server_ssl_trust-store,server_ssl_trust-store-password,management_endpoints_web_exposure_include,management_info_git_mode
   # port of the jetty embedded server
        server_port=8319
        management_endpoints_web_exposure_include=*
        management_info_git_mode=full

        #server_ssl_key-store=Keystore
        #server_ssl_key-store-password =
        #server_ssl_clint-auth= NEED
        #server_ssl_trust-store=Truststore
        #server_ssl_trust-store-password =
###########################################################################
#                            SECTION                                      #
##                CEML (extension) configuration section                  #
#                                                                         #
###########################################################################
   # Broker where the CEML I/O API should be deploy
        ceml_api_mqtt=true
   # Broker where the CEML I/O API should be deploy
        ceml_api_mqtt_broker=ceml
   # Topic for the input CEML Request
        ceml_api_mqtt_topic_input= /ceml/
   # Topic for the output CEML messages
        ceml_api_mqtt_topic_output=/ceml/output/<datastream_id>
   # Topic for the output CEML error messages
        ceml_api_mqtt_topic_error=/ceml/error/<datastream_id>
   # Indicates if the agent should generate status report
        ceml_monitoring_evaluation_generateReports=true

###########################################################################
#                            SECTION                                      #
##                General Configuration (GC Utils Conf)                   #
#                                                                         #
###########################################################################

        logging_default_configuration_file= __def__agent__conf__.cfg
  # DEPRECATED: should not use, still in use in few features
        general_time_timestamp_format=yyyy-MM-dd'T'HH:mm:ss.SSSZ
        general_time_zone=Europe/Berlin
  # Indicates if the time should be display as long or as string timestamp
        general_time_epoch=false

###########################################################################
#                          GC SUBSECTION                                  #
##                  broker(s) default configuration                      ##
#                                                                         #
###########################################################################

    #
    # The following properties define the default properties of all brokers defined in the agent
    # In other words, if there is no specific configuration for any of this properties
    # the value set here will be use. (see non-default broker(s) configuration section)
    #

        connection_brokers_service_connection_multiple=false
        connection_broker_mqtt_hostname=localhost
        connection_broker_mqtt_port=1883
        connection_broker_mqtt_security_port=8883
        connection_broker_mqtt_enableFileConnectionPersistency=false
        connection_broker_mqtt_timeOut=60000
        connection_broker_mqtt_noReconnectTry=10
        connection_broker_mqtt_reconnectWaitingTime=1000
        connection_broker_mqtt_keepAlive=60000
        connection_broker_mqtt_security_tls=false
        connection_broker_mqtt_security_acceptAllCert=false


        messaging_client_mqtt_enableRetainPolicy=false
        messaging_client_mqtt_sub_qos=0
        messaging_client_mqtt_pub_qos=0

        # DEFAULT (try 3.1.1,otherwise 3.1), V3_1 (3.1), V3_1_1 (3.1.1)
        messaging_client_mqtt_version=DEFAULT
        messaging_client_mqtt_maxInFlightMessages=10
        messaging_client_mqtt_automaticReconnect=true
        messaging_client_mqtt_session_clean_enabled=true
        messaging_client_mqtt_autoblacklisting=true


###########################################################################
#                            GC Broker SUBSUBSECTION                      #
#                broker(s) security default configuration                 #
#                                                                         #
###########################################################################
        messaging_client_mqtt_security_default_credentials=false
#       there is no default user/password it must be set connection by connection
#        messaging_client_mqtt_security_user=
#        messaging_client_mqtt_security_password=

#        connection_broker_mqtt_security_certificateBaseSecurityEnabled=false
#        connection_broker_mqtt_security_trustStorePath=
#        connection_broker_mqtt_security_trustStorePassword=
#        connection_broker_mqtt_security_keyStorePath=
#        connection_broker_mqtt_security_keyStorePassword=
#        connection_broker_mqtt_security_caCertificatePath=
#        connection_broker_mqtt_security_caCertificatePassword=
#        connection_broker_mqtt_security_certificatePath=
#        connection_broker_mqtt_security_certificatePassword=
#        connection_broker_mqtt_security_keyPath=
#        connection_broker_mqtt_security_keyPassword=


###########################################################################
#                         GC Broker SUBSUBSECTION                         #
#                  non-default broker(s) configuration                    #
#                                                                         #
###########################################################################
    #
    ## definition of brokers. The brokers defined here the "known" by the agent and can be used in queries,statements or in the configuration.
    #
        connection_brokers_aliases=

    #
    # Add here configuration that differs from the default configuration.
    # The configuration property stays the same, just add the alias of the broker as postfix.
    # Below we can see an example that change the default "hostname" of the broker with alias "control"
    # e.g.
        #connection.broker.mqtt.hostname.control=almanac-broker

        connection_broker_mqtt_hostname_fit=almanac.fit.fraunhofer.de
        connection_broker_mqtt_hostname_amiat=almanac.fit.fraunhofer.de
        connection_broker_mqtt_hostname_ismb=almanac-showcase.ismb.it
        connection_broker_mqtt_hostname_trn=almanac-showcase.ismb.it
        connection_broker_mqtt_hostname_alexandra=almanac.alexandra.dk
        connection_broker_mqtt_hostname_smat=almanac.alexandra.dk



###########################################################################
#                            GC SECTION                                   #
##                Debugging core configuration Log4j conf.                #
#                                                                         #
###########################################################################
    # Root logger option
        logging.default.configuration.file=log4j2.properties
        log4j.rootLogger=INFO,stdout
        log4j.logger.org.apache.component=INFO
        # Direct log messages to a log file
        log4j.appender.file=org.apache.log4j.RollingFileAppender
        log4j.appender.file.File= logging.log
        log4j.appender.file.MaxFileSize=10MB
        log4j.appender.file.MaxBackupIndex=10
        log4j.appender.file.layout=org.apache.log4j.PatternLayout
        log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %r --- [%-15t]  %-100c{15}: %m%n

        # Direct log messages to stdout
        log4j.appender.stdout=org.apache.log4j.ConsoleAppender
        log4j.appender.stdout.Target=System.out
        log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
        log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %r --- [%-15t]  %-100c{15}: %m%n
###########################################################################
#                         GC SECTION                                      #
#                 Test and validation configuration                       #
#                                                                         #
###########################################################################

#  test.validation.lot.size=10000
#  test.validation.message.forwarding.enabled
#  test.validation.mqtt.observers.enabled
# test.validation.message.deliverer



  • No labels