Page History
...
This Trace SQL Store Component contains a Trace DAO implementation that can be used by the trace engine to store trace messages in a database.
The configuration options are found below in this documentBlueriq 14.8 introduces the possibility to consume trace events that are pushed on a queue by the Trace Event Publisher Component and then store them in a database in an asynchronous way. See consume trace events.
Requirements
This component persists data in a database, that must be provided. See platform support for the supported databases.
Optional: the consumer functionality needs to be able to access a queue. Currently only RabbitMQ is supported. For setting this up see Configuration of RabbitMQ for Customerdata service and Trace Event Publisher.
Installation
In order to use this component, the trace-sql-store or trace-sql-store-without-timeline the
or Include Page _ProfileTrace _ProfileTrace
(Blueriq 14.6 and onwards) profile must be active. More information on how to configure the application using Spring Profiles can be found here: Component configuration with Spring Profiles. Include Page _ProfileTraceWithoutTimeline _ProfileTraceWithoutTimeline
...
The trace can be used in different settings, to configure how the trace will behave, and how the timeline will behave. In the table below, different combinations of bootstrap.properties
are explained: Include Page _PropertiesBootstrap _PropertiesBootstrap
Active bootstrap profiles | Effect | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Both timeline and trace will be stored in the external datasource configured as "trace-sql-store" | ||||||||||||||
| Timeline is stored in external datasource "timeline-sql-store", trace is ignored | ||||||||||||||
| Timeline is stored in external datasource "timeline-sql-store", trace in "trace-sql-store"timeline-sql-store, trace-event-publisher-amqp | ||||||||||||||
| Timeline is stored in external datasource "timeline-sql-store", trace is pushed to the exchange configured at the properties and will be consumed by the consumer functionality |
Configuration
Database
Scripts to create the required database content are provided for the following databases:
- SQL Server
- Oracle
- H2 (we do we do not recommend using recommend using a H2 database in production environments)
...
- If necessary, create a new datasource. See Configuring JDBC database drivers for information on how to do this.
- Trace SQL Store component is using the trace-sql-store datasource to store data. The trace-sql-store datasource can be configured using JDBC or JNDI.
Using JDBC datasource : this can be configured in the
application-externaldatasources.properties
file. When When configuring external datasources, theexternaldatasources
profile should be enabled.Include Page _ProfileExternalDatasources _ProfileExternalDatasources Code Block language powershell title application-externaldatasources.properties blueriq.datasource.trace-sql-store.url=jdbc:sqlserver://<database_url>:<port>;databaseName=bq_comments;instance=SQL_EXPRESS blueriq.datasource.trace-sql-store.username=<username> blueriq.datasource.trace-sql-store.password=<password> blueriq.datasource.trace-sql-store.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver blueriq.hibernate.trace-sql-store.hbm2ddl.auto=validate blueriq.hibernate.trace-sql-store.dialect=org.hibernate.dialect.SQLServer2012Dialect
Using JNDI datasource : this can be configured in the
application-jndidatasources.properties
file When configuring JNDI datasources thejndidatasources
profile the
profile should be enabled.Include Page _ProfileJndiDatasources _ProfileJndiDatasources Code Block language powershell title application-jndidatasources.properties blueriq.datasource.trace-sql-store.jndiName=java:/comp/env/jdbc/blueriqTrace blueriq.hibernate.trace-sql-store.hbm2ddl.auto=validate blueriq.hibernate.trace-sql-store.dialect=org.hibernate.dialect.SQLServer2012Dialect
- Configuring the datasource from the Development Dashboard
Go to Settings Widget → Datasources tab → On the left side menu : selecttrace-sql-store
datasource. The same properties are available for configuration as from the properties file. Make sure the corresponding profile is enabled (externaldatasources or jndidatasources
orInclude Page _ProfileExternalDatasources _ProfileExternalDatasources
)Include Page _ProfileJndiDatasources _ProfileJndiDatasources - Hibernate settings
These settings are done for each datasource type in the corresponding properties file, as in the examples above.
...
Supported hbm2ddl.auto values:
- none
- validate
Consume trace events
The Trace SQL Store component can store trace messages directly in the database, but it is also possible to decouple the storage of trace messages using the Trace Event Publisher Component to publish trace events to a queue and then consume them using this component.
To be able to consume event messages, the event channel needs to be configured in the
Include Page | ||||
---|---|---|---|---|
|
Include Page | ||||
---|---|---|---|---|
|
Note |
---|
The Trace SQL Store either stores trace messages in the database, or consumes trace events from the queue. When the configuration below is enabled, only trace events are consumed, no trace messages are saved to the database directly. So if you enable this configuration, be sure to also enable the Trace Event Publisher Component, otherwise no trace information is saved anywhere. |
# RabbitMQ configuration blueriq.trace.event.listener.amqp.version=2.0 # Enable consumer functionality blueriq.trace.event.listener.amqp.enabled=true |
Enable TLS connection
To enable a secure (TLS) AMQP connection to the queue, set the property "blueriq.trace.event.listener.amqp.rabbitmq.ssl
.enabled
" to "true
".
The default for AQMP port with TLS on RabbitMQ is '5671', it needs to be explicitly enabled though, see https://www.rabbitmq.com/ssl.html for more information.
Performance
The performance impact of the Trace SQL Store is minimal when used normally: to write trace messages to the database.
...