2016-12-01 11:38:15 +02:00
|
|
|
#
|
2018-03-05 17:34:13 +02:00
|
|
|
# Copyright © 2016-2018 The Thingsboard Authors
|
2016-12-01 11:38:15 +02:00
|
|
|
#
|
|
|
|
|
# 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.
|
|
|
|
|
#
|
|
|
|
|
|
|
|
|
|
server:
|
|
|
|
|
# Server bind address
|
|
|
|
|
address: "${HTTP_BIND_ADDRESS:0.0.0.0}"
|
|
|
|
|
# Server bind port
|
|
|
|
|
port: "${HTTP_BIND_PORT:8080}"
|
2017-05-23 09:25:31 +03:00
|
|
|
# Server SSL configuration
|
|
|
|
|
ssl:
|
|
|
|
|
# Enable/disable SSL support
|
|
|
|
|
enabled: "${SSL_ENABLED:false}"
|
|
|
|
|
# Path to the key store that holds the SSL certificate
|
|
|
|
|
key-store: "${SSL_KEY_STORE:classpath:keystore/keystore.p12}"
|
|
|
|
|
# Password used to access the key store
|
|
|
|
|
key-store-password: "${SSL_KEY_STORE_PASSWORD:thingsboard}"
|
|
|
|
|
# Type of the key store
|
|
|
|
|
key-store-type: "${SSL_KEY_STORE_TYPE:PKCS12}"
|
|
|
|
|
# Alias that identifies the key in the key store
|
|
|
|
|
key-alias: "${SSL_KEY_ALIAS:tomcat}"
|
2016-12-01 11:38:15 +02:00
|
|
|
|
|
|
|
|
# Zookeeper connection parameters. Used for service discovery.
|
|
|
|
|
zk:
|
|
|
|
|
# Enable/disable zookeeper discovery service.
|
|
|
|
|
enabled: "${ZOOKEEPER_ENABLED:false}"
|
|
|
|
|
# Zookeeper connect string
|
|
|
|
|
url: "${ZOOKEEPER_URL:localhost:2181}"
|
|
|
|
|
# Zookeeper retry interval in milliseconds
|
|
|
|
|
retry_interval_ms: "${ZOOKEEPER_RETRY_INTERVAL_MS:3000}"
|
|
|
|
|
# Zookeeper connection timeout in milliseconds
|
|
|
|
|
connection_timeout_ms: "${ZOOKEEPER_CONNECTION_TIMEOUT_MS:3000}"
|
|
|
|
|
# Zookeeper session timeout in milliseconds
|
|
|
|
|
session_timeout_ms: "${ZOOKEEPER_SESSION_TIMEOUT_MS:3000}"
|
|
|
|
|
# Name of the directory in zookeeper 'filesystem'
|
|
|
|
|
zk_dir: "${ZOOKEEPER_NODES_DIR:/thingsboard}"
|
|
|
|
|
|
|
|
|
|
# RPC connection parameters. Used only in cluster mode only.
|
|
|
|
|
rpc:
|
|
|
|
|
bind_host: "${RPC_HOST:localhost}"
|
|
|
|
|
bind_port: "${RPC_PORT:9001}"
|
|
|
|
|
|
|
|
|
|
# Clustering properties related to consistent-hashing. See architecture docs for more details.
|
|
|
|
|
cluster:
|
|
|
|
|
# Name of hash function used for consistent hash ring.
|
|
|
|
|
hash_function_name: "${CLUSTER_HASH_FUNCTION_NAME:murmur3_128}"
|
|
|
|
|
# Amount of virtual nodes in consistent hash ring.
|
|
|
|
|
vitrual_nodes_size: "${CLUSTER_VIRTUAL_NODES_SIZE:16}"
|
2018-05-11 17:12:41 +03:00
|
|
|
# Queue partition id for current node
|
|
|
|
|
partition_id: "${QUEUE_PARTITION_ID:0}"
|
2016-12-01 11:38:15 +02:00
|
|
|
|
|
|
|
|
# Plugins configuration parameters
|
|
|
|
|
plugins:
|
|
|
|
|
# Comma seperated package list used during classpath scanning for plugins
|
2018-03-20 17:40:56 +02:00
|
|
|
scan_packages: "${PLUGINS_SCAN_PACKAGES:org.thingsboard.server.extensions,org.thingsboard.rule.engine}"
|
2016-12-01 11:38:15 +02:00
|
|
|
|
2018-08-17 15:59:14 +03:00
|
|
|
# Security parameters
|
|
|
|
|
security:
|
|
|
|
|
# JWT Token parameters
|
|
|
|
|
jwt:
|
|
|
|
|
tokenExpirationTime: "${JWT_TOKEN_EXPIRATION_TIME:900}" # Number of seconds (15 mins)
|
|
|
|
|
refreshTokenExpTime: "${JWT_REFRESH_TOKEN_EXPIRATION_TIME:3600}" # Seconds (1 hour)
|
|
|
|
|
tokenIssuer: "${JWT_TOKEN_ISSUER:thingsboard.io}"
|
|
|
|
|
tokenSigningKey: "${JWT_TOKEN_SIGNING_KEY:thingsboardDefaultSigningKey}"
|
|
|
|
|
# Enable/disable access to Tenant Administrators JWT token by System Administrator or Customer Users JWT token by Tenant Administrator
|
|
|
|
|
user_token_access_enabled: "${SECURITY_USER_TOKEN_ACCESS_ENABLED:true}"
|
2016-12-01 11:38:15 +02:00
|
|
|
|
2018-10-08 20:14:49 +03:00
|
|
|
# Dashboard parameters
|
|
|
|
|
dashboard:
|
|
|
|
|
# Maximum allowed datapoints fetched by widgets
|
|
|
|
|
max_datapoints_limit: "${DASHBOARD_MAX_DATAPOINTS_LIMIT:50000}"
|
2016-12-01 11:38:15 +02:00
|
|
|
|
2017-06-29 11:11:20 +03:00
|
|
|
database:
|
2018-10-31 13:17:29 +02:00
|
|
|
ts_max_intervals: "${DATABASE_TS_MAX_INTERVALS:700}" # mas number of DB queries generated by single API call to fetch telemetry records
|
2018-08-21 00:58:45 +03:00
|
|
|
entities:
|
2018-09-29 22:09:18 +03:00
|
|
|
type: "${DATABASE_ENTITIES_TYPE:sql}" # cassandra OR sql
|
2018-08-21 00:58:45 +03:00
|
|
|
ts:
|
2018-09-29 22:09:18 +03:00
|
|
|
type: "${DATABASE_TS_TYPE:sql}" # cassandra OR sql (for hybrid mode, only this value should be cassandra)
|
2018-08-21 02:05:45 +03:00
|
|
|
|
2017-06-29 11:11:20 +03:00
|
|
|
|
2016-12-01 11:38:15 +02:00
|
|
|
# Cassandra driver configuration parameters
|
|
|
|
|
cassandra:
|
|
|
|
|
# Thingsboard cluster name
|
|
|
|
|
cluster_name: "${CASSANDRA_CLUSTER_NAME:Thingsboard Cluster}"
|
|
|
|
|
# Thingsboard keyspace name
|
|
|
|
|
keyspace_name: "${CASSANDRA_KEYSPACE_NAME:thingsboard}"
|
|
|
|
|
# Specify node list
|
2017-07-31 08:27:45 +03:00
|
|
|
url: "${CASSANDRA_URL:127.0.0.1:9042}"
|
2016-12-01 11:38:15 +02:00
|
|
|
# Enable/disable secure connection
|
|
|
|
|
ssl: "${CASSANDRA_USE_SSL:false}"
|
|
|
|
|
# Enable/disable JMX
|
|
|
|
|
jmx: "${CASSANDRA_USE_JMX:true}"
|
|
|
|
|
# Enable/disable metrics collection.
|
|
|
|
|
metrics: "${CASSANDRA_DISABLE_METRICS:true}"
|
|
|
|
|
# NONE SNAPPY LZ4
|
|
|
|
|
compression: "${CASSANDRA_COMPRESSION:none}"
|
|
|
|
|
# Specify cassandra claster initialization timeout (if no hosts available during startup)
|
|
|
|
|
init_timeout_ms: "${CASSANDRA_CLUSTER_INIT_TIMEOUT_MS:300000}"
|
|
|
|
|
# Specify cassandra claster initialization retry interval (if no hosts available during startup)
|
|
|
|
|
init_retry_interval_ms: "${CASSANDRA_CLUSTER_INIT_RETRY_INTERVAL_MS:3000}"
|
2018-10-04 19:13:29 +03:00
|
|
|
max_requests_per_connection_local: "${CASSANDRA_MAX_REQUESTS_PER_CONNECTION_LOCAL:32768}"
|
|
|
|
|
max_requests_per_connection_remote: "${CASSANDRA_MAX_REQUESTS_PER_CONNECTION_REMOTE:32768}"
|
2016-12-01 11:38:15 +02:00
|
|
|
# Credential parameters #
|
|
|
|
|
credentials: "${CASSANDRA_USE_CREDENTIALS:false}"
|
|
|
|
|
# Specify your username
|
|
|
|
|
username: "${CASSANDRA_USERNAME:}"
|
|
|
|
|
# Specify your password
|
|
|
|
|
password: "${CASSANDRA_PASSWORD:}"
|
|
|
|
|
|
|
|
|
|
# Cassandra cluster connection socket parameters #
|
|
|
|
|
socket:
|
|
|
|
|
connect_timeout: "${CASSANDRA_SOCKET_TIMEOUT:5000}"
|
|
|
|
|
read_timeout: "${CASSANDRA_SOCKET_READ_TIMEOUT:20000}"
|
|
|
|
|
keep_alive: "${CASSANDRA_SOCKET_KEEP_ALIVE:true}"
|
|
|
|
|
reuse_address: "${CASSANDRA_SOCKET_REUSE_ADDRESS:true}"
|
|
|
|
|
so_linger: "${CASSANDRA_SOCKET_SO_LINGER:}"
|
|
|
|
|
tcp_no_delay: "${CASSANDRA_SOCKET_TCP_NO_DELAY:false}"
|
|
|
|
|
receive_buffer_size: "${CASSANDRA_SOCKET_RECEIVE_BUFFER_SIZE:}"
|
|
|
|
|
send_buffer_size: "${CASSANDRA_SOCKET_SEND_BUFFER_SIZE:}"
|
|
|
|
|
|
|
|
|
|
# Cassandra cluster connection query parameters #
|
|
|
|
|
query:
|
|
|
|
|
read_consistency_level: "${CASSANDRA_READ_CONSISTENCY_LEVEL:ONE}"
|
|
|
|
|
write_consistency_level: "${CASSANDRA_WRITE_CONSISTENCY_LEVEL:ONE}"
|
|
|
|
|
default_fetch_size: "${CASSANDRA_DEFAULT_FETCH_SIZE:2000}"
|
2018-08-16 17:24:59 +03:00
|
|
|
# Specify partitioning size for timestamp key-value storage. Example MINUTES, HOURS, DAYS, MONTHS,INDEFINITE
|
2018-10-23 16:30:44 +03:00
|
|
|
ts_key_value_partitioning: "${TS_KV_PARTITIONING:MONTHS}"
|
2018-05-23 17:06:51 +03:00
|
|
|
ts_key_value_ttl: "${TS_KV_TTL:0}"
|
2018-03-23 13:32:08 +02:00
|
|
|
buffer_size: "${CASSANDRA_QUERY_BUFFER_SIZE:200000}"
|
|
|
|
|
concurrent_limit: "${CASSANDRA_QUERY_CONCURRENT_LIMIT:1000}"
|
|
|
|
|
permit_max_wait_time: "${PERMIT_MAX_WAIT_TIME:120000}"
|
2018-10-24 19:28:11 +03:00
|
|
|
rate_limit_print_interval_ms: "${CASSANDRA_QUERY_RATE_LIMIT_PRINT_MS:10000}"
|
2016-12-01 11:38:15 +02:00
|
|
|
|
2018-01-09 15:24:02 +02:00
|
|
|
# SQL configuration parameters
|
|
|
|
|
sql:
|
|
|
|
|
# Specify executor service type used to perform timeseries insert tasks: SINGLE FIXED CACHED
|
|
|
|
|
ts_inserts_executor_type: "${SQL_TS_INSERTS_EXECUTOR_TYPE:fixed}"
|
|
|
|
|
# Specify thread pool size for FIXED executor service type
|
|
|
|
|
ts_inserts_fixed_thread_pool_size: "${SQL_TS_INSERTS_FIXED_THREAD_POOL_SIZE:10}"
|
|
|
|
|
|
2016-12-01 11:38:15 +02:00
|
|
|
# Actor system parameters
|
|
|
|
|
actors:
|
2017-08-28 12:54:55 +03:00
|
|
|
tenant:
|
2018-07-18 11:59:45 +03:00
|
|
|
create_components_on_init: "${ACTORS_TENANT_CREATE_COMPONENTS_ON_INIT:true}"
|
2016-12-01 11:38:15 +02:00
|
|
|
session:
|
2018-05-27 22:22:53 +03:00
|
|
|
max_concurrent_sessions_per_device: "${ACTORS_MAX_CONCURRENT_SESSION_PER_DEVICE:1}"
|
2016-12-01 11:38:15 +02:00
|
|
|
sync:
|
|
|
|
|
# Default timeout for processing request using synchronous session (HTTP, CoAP) in milliseconds
|
|
|
|
|
timeout: "${ACTORS_SESSION_SYNC_TIMEOUT:10000}"
|
|
|
|
|
rule:
|
2018-04-13 19:32:02 +03:00
|
|
|
# Specify thread pool size for database request callbacks executor service
|
|
|
|
|
db_callback_thread_pool_size: "${ACTORS_RULE_DB_CALLBACK_THREAD_POOL_SIZE:1}"
|
2018-04-05 15:07:48 +03:00
|
|
|
# Specify thread pool size for javascript executor service
|
|
|
|
|
js_thread_pool_size: "${ACTORS_RULE_JS_THREAD_POOL_SIZE:10}"
|
2018-04-13 19:32:02 +03:00
|
|
|
# Specify thread pool size for mail sender executor service
|
2018-04-12 10:57:48 +03:00
|
|
|
mail_thread_pool_size: "${ACTORS_RULE_MAIL_THREAD_POOL_SIZE:10}"
|
2018-05-23 17:06:51 +03:00
|
|
|
# Whether to allow usage of system mail service for rules
|
|
|
|
|
allow_system_mail_service: "${ACTORS_RULE_ALLOW_SYSTEM_MAIL_SERVICE:true}"
|
2018-05-07 11:34:18 +03:00
|
|
|
# Specify thread pool size for external call service
|
|
|
|
|
external_call_thread_pool_size: "${ACTORS_RULE_EXTERNAL_CALL_THREAD_POOL_SIZE:10}"
|
2018-03-20 17:40:56 +02:00
|
|
|
chain:
|
|
|
|
|
# Errors for particular actor are persisted once per specified amount of milliseconds
|
|
|
|
|
error_persist_frequency: "${ACTORS_RULE_CHAIN_ERROR_FREQUENCY:3000}"
|
|
|
|
|
node:
|
|
|
|
|
# Errors for particular actor are persisted once per specified amount of milliseconds
|
|
|
|
|
error_persist_frequency: "${ACTORS_RULE_NODE_ERROR_FREQUENCY:3000}"
|
2016-12-01 11:38:15 +02:00
|
|
|
statistics:
|
|
|
|
|
# Enable/disable actor statistics
|
|
|
|
|
enabled: "${ACTORS_STATISTICS_ENABLED:true}"
|
2017-07-24 16:24:32 +03:00
|
|
|
persist_frequency: "${ACTORS_STATISTICS_PERSIST_FREQUENCY:3600000}"
|
2018-04-18 15:49:56 +03:00
|
|
|
queue:
|
|
|
|
|
# Enable/disable persistence of un-processed messages to the queue
|
|
|
|
|
enabled: "${ACTORS_QUEUE_ENABLED:true}"
|
|
|
|
|
# Maximum allowed timeout for persistence into the queue
|
|
|
|
|
timeout: "${ACTORS_QUEUE_PERSISTENCE_TIMEOUT:30000}"
|
2018-04-19 17:07:11 +03:00
|
|
|
client_side_rpc:
|
|
|
|
|
timeout: "${CLIENT_SIDE_RPC_TIMEOUT:60000}"
|
2016-12-01 11:38:15 +02:00
|
|
|
|
|
|
|
|
cache:
|
2018-02-19 19:34:04 +02:00
|
|
|
# caffeine or redis
|
|
|
|
|
type: "${CACHE_TYPE:caffeine}"
|
|
|
|
|
|
|
|
|
|
caffeine:
|
2018-02-07 16:43:24 +02:00
|
|
|
specs:
|
|
|
|
|
relations:
|
|
|
|
|
timeToLiveInMinutes: 1440
|
2018-03-23 16:56:37 +02:00
|
|
|
maxSize: 100000
|
2018-02-07 16:43:24 +02:00
|
|
|
deviceCredentials:
|
|
|
|
|
timeToLiveInMinutes: 1440
|
|
|
|
|
maxSize: 100000
|
|
|
|
|
devices:
|
|
|
|
|
timeToLiveInMinutes: 1440
|
|
|
|
|
maxSize: 100000
|
2018-10-29 18:31:14 +02:00
|
|
|
sessions:
|
|
|
|
|
timeToLiveInMinutes: 1440
|
|
|
|
|
maxSize: 100000
|
2018-07-19 11:21:04 +02:00
|
|
|
assets:
|
|
|
|
|
timeToLiveInMinutes: 1440
|
|
|
|
|
maxSize: 100000
|
2018-09-12 18:24:45 +03:00
|
|
|
entityViews:
|
|
|
|
|
timeToLiveInMinutes: 1440
|
|
|
|
|
maxSize: 100000
|
2018-02-07 16:43:24 +02:00
|
|
|
|
2018-02-19 19:34:04 +02:00
|
|
|
redis:
|
|
|
|
|
# standalone or cluster
|
|
|
|
|
connection:
|
|
|
|
|
type: standalone
|
|
|
|
|
host: "${REDIS_HOST:localhost}"
|
|
|
|
|
port: "${REDIS_PORT:6379}"
|
|
|
|
|
db: "${REDIS_DB:0}"
|
|
|
|
|
password: "${REDIS_PASSWORD:}"
|
2016-12-01 11:38:15 +02:00
|
|
|
|
2017-03-08 20:06:04 +02:00
|
|
|
# Check new version updates parameters
|
|
|
|
|
updates:
|
|
|
|
|
# Enable/disable updates checking.
|
|
|
|
|
enabled: "${UPDATES_ENABLED:true}"
|
2018-10-25 15:34:55 +02:00
|
|
|
|
2017-06-29 11:11:20 +03:00
|
|
|
# spring CORS configuration
|
2017-05-03 17:13:42 +08:00
|
|
|
spring.mvc.cors:
|
|
|
|
|
mappings:
|
|
|
|
|
# Intercept path
|
|
|
|
|
"/api/auth/**":
|
|
|
|
|
#Comma-separated list of origins to allow. '*' allows all origins. When not set,CORS support is disabled.
|
|
|
|
|
allowed-origins: "*"
|
|
|
|
|
#Comma-separated list of methods to allow. '*' allows all methods.
|
|
|
|
|
allowed-methods: "POST,GET,OPTIONS"
|
|
|
|
|
#Comma-separated list of headers to allow in a request. '*' allows all headers.
|
|
|
|
|
allowed-headers: "*"
|
|
|
|
|
#How long, in seconds, the response from a pre-flight request can be cached by clients.
|
|
|
|
|
max-age: "1800"
|
|
|
|
|
#Set whether credentials are supported. When not set, credentials are not supported.
|
|
|
|
|
allow-credentials: "true"
|
|
|
|
|
"/api/v1/**":
|
|
|
|
|
allowed-origins: "*"
|
|
|
|
|
allowed-methods: "*"
|
|
|
|
|
allowed-headers: "*"
|
|
|
|
|
max-age: "1800"
|
|
|
|
|
allow-credentials: "true"
|
2017-05-30 21:02:14 +03:00
|
|
|
|
2018-07-06 20:49:19 +03:00
|
|
|
# spring serve gzip compressed static resources
|
|
|
|
|
spring.resources.chain:
|
|
|
|
|
gzipped: "true"
|
|
|
|
|
strategy:
|
|
|
|
|
content:
|
|
|
|
|
enabled: "true"
|
|
|
|
|
|
2017-07-05 12:25:46 +03:00
|
|
|
# HSQLDB DAO Configuration
|
2017-05-30 21:02:14 +03:00
|
|
|
spring:
|
|
|
|
|
data:
|
|
|
|
|
jpa:
|
|
|
|
|
repositories:
|
2017-05-31 12:48:35 +03:00
|
|
|
enabled: "true"
|
2017-05-30 21:02:14 +03:00
|
|
|
jpa:
|
|
|
|
|
hibernate:
|
2017-05-31 18:55:59 +03:00
|
|
|
ddl-auto: "validate"
|
2017-07-26 16:16:07 +03:00
|
|
|
database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.HSQLDialect}"
|
2017-04-11 22:09:52 -04:00
|
|
|
datasource:
|
2017-07-05 12:25:46 +03:00
|
|
|
driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.hsqldb.jdbc.JDBCDriver}"
|
2018-02-07 14:17:33 +02:00
|
|
|
url: "${SPRING_DATASOURCE_URL:jdbc:hsqldb:file:${SQL_DATA_FOLDER:/tmp}/thingsboardDb;sql.enforce_size=false;hsqldb.log_size=5}"
|
2017-07-05 12:25:46 +03:00
|
|
|
username: "${SPRING_DATASOURCE_USERNAME:sa}"
|
|
|
|
|
password: "${SPRING_DATASOURCE_PASSWORD:}"
|
|
|
|
|
|
2017-07-22 15:04:05 +03:00
|
|
|
# PostgreSQL DAO Configuration
|
2018-08-29 15:28:48 +03:00
|
|
|
# spring:
|
2017-07-05 12:25:46 +03:00
|
|
|
# data:
|
2018-05-16 20:58:46 +03:00
|
|
|
# sql:
|
2017-07-05 12:25:46 +03:00
|
|
|
# repositories:
|
|
|
|
|
# enabled: "true"
|
2018-05-16 20:58:46 +03:00
|
|
|
# sql:
|
2017-07-05 12:25:46 +03:00
|
|
|
# hibernate:
|
|
|
|
|
# ddl-auto: "validate"
|
2017-07-26 16:16:07 +03:00
|
|
|
# database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}"
|
2017-07-05 12:25:46 +03:00
|
|
|
# datasource:
|
|
|
|
|
# driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
|
|
|
|
|
# url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
|
|
|
|
|
# username: "${SPRING_DATASOURCE_USERNAME:postgres}"
|
|
|
|
|
# password: "${SPRING_DATASOURCE_PASSWORD:postgres}"
|
2018-02-14 19:51:23 +02:00
|
|
|
|
|
|
|
|
# Audit log parameters
|
|
|
|
|
audit_log:
|
|
|
|
|
# Enable/disable audit log functionality.
|
2018-02-16 16:45:59 +02:00
|
|
|
enabled: "${AUDIT_LOG_ENABLED:true}"
|
|
|
|
|
# Specify partitioning size for audit log by tenant id storage. Example MINUTES, HOURS, DAYS, MONTHS
|
|
|
|
|
by_tenant_partitioning: "${AUDIT_LOG_BY_TENANT_PARTITIONING:MONTHS}"
|
|
|
|
|
# Number of days as history period if startTime and endTime are not specified
|
|
|
|
|
default_query_period: "${AUDIT_LOG_DEFAULT_QUERY_PERIOD:30}"
|
2018-02-21 20:05:03 +02:00
|
|
|
# Logging levels per each entity type.
|
|
|
|
|
# Allowed values: OFF (disable), W (log write operations), RW (log read and write operations)
|
|
|
|
|
logging_level:
|
|
|
|
|
mask:
|
2018-02-22 11:28:24 +02:00
|
|
|
"device": "${AUDIT_LOG_MASK_DEVICE:W}"
|
|
|
|
|
"asset": "${AUDIT_LOG_MASK_ASSET:W}"
|
|
|
|
|
"dashboard": "${AUDIT_LOG_MASK_DASHBOARD:W}"
|
|
|
|
|
"customer": "${AUDIT_LOG_MASK_CUSTOMER:W}"
|
|
|
|
|
"user": "${AUDIT_LOG_MASK_USER:W}"
|
2018-03-14 12:42:12 +02:00
|
|
|
"rule_chain": "${AUDIT_LOG_MASK_RULE_CHAIN:W}"
|
2018-07-19 15:03:40 +03:00
|
|
|
"alarm": "${AUDIT_LOG_MASK_ALARM:W}"
|
2018-10-03 19:33:19 +03:00
|
|
|
"entity_view": "${AUDIT_LOG_MASK_RULE_CHAIN:W}"
|
2018-02-28 09:03:06 +02:00
|
|
|
sink:
|
2018-02-28 09:27:12 +02:00
|
|
|
# Type of external sink. possible options: none, elasticsearch
|
2018-02-28 09:03:06 +02:00
|
|
|
type: "${AUDIT_LOG_SINK_TYPE:none}"
|
2018-02-28 09:27:12 +02:00
|
|
|
# Name of the index where audit logs stored
|
2018-02-28 09:03:06 +02:00
|
|
|
# Index name could contain next placeholders (not mandatory):
|
|
|
|
|
# @{TENANT} - substituted by tenant ID
|
2018-02-28 12:32:25 +02:00
|
|
|
# @{DATE} - substituted by current date in format provided in audit_log.sink.date_format
|
2018-02-28 09:03:06 +02:00
|
|
|
index_pattern: "${AUDIT_LOG_SINK_INDEX_PATTERN:@{TENANT}_AUDIT_LOG_@{DATE}}"
|
2018-02-28 12:32:25 +02:00
|
|
|
# Date format. Details of the pattern could be found here:
|
|
|
|
|
# https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
|
|
|
|
|
date_format: "${AUDIT_LOG_SINK_DATE_FORMAT:YYYY.MM.DD}"
|
2018-02-28 09:03:06 +02:00
|
|
|
scheme_name: "${AUDIT_LOG_SINK_SCHEME_NAME:http}" # http or https
|
|
|
|
|
host: "${AUDIT_LOG_SINK_HOST:localhost}"
|
|
|
|
|
port: "${AUDIT_LOG_SINK_POST:9200}"
|
|
|
|
|
user_name: "${AUDIT_LOG_SINK_USER_NAME:}"
|
2018-05-03 19:02:04 +03:00
|
|
|
password: "${AUDIT_LOG_SINK_PASSWORD:}"
|
|
|
|
|
|
|
|
|
|
state:
|
2018-10-25 15:34:55 +02:00
|
|
|
defaultInactivityTimeoutInSec: "${DEFAULT_INACTIVITY_TIMEOUT:10}"
|
|
|
|
|
defaultStateCheckIntervalInSec: "${DEFAULT_STATE_CHECK_INTERVAL:10}"
|
2018-09-24 19:20:55 +03:00
|
|
|
|
2018-09-26 14:54:59 +03:00
|
|
|
kafka:
|
|
|
|
|
enabled: true
|
2018-10-03 16:38:18 +03:00
|
|
|
bootstrap.servers: "${TB_KAFKA_SERVERS:localhost:9092}"
|
2018-09-26 14:54:59 +03:00
|
|
|
acks: "${TB_KAFKA_ACKS:all}"
|
|
|
|
|
retries: "${TB_KAFKA_RETRIES:1}"
|
|
|
|
|
batch.size: "${TB_KAFKA_BATCH_SIZE:16384}"
|
|
|
|
|
linger.ms: "${TB_KAFKA_LINGER_MS:1}"
|
|
|
|
|
buffer.memory: "${TB_BUFFER_MEMORY:33554432}"
|
2018-10-17 20:49:35 +03:00
|
|
|
transport_api:
|
|
|
|
|
requests_topic: "${TB_TRANSPORT_API_REQUEST_TOPIC:tb.transport.api.requests}"
|
|
|
|
|
responses_topic: "${TB_TRANSPORT_API_RESPONSE_TOPIC:tb.transport.api.responses}"
|
|
|
|
|
max_pending_requests: "${TB_TRANSPORT_MAX_PENDING_REQUESTS:10000}"
|
|
|
|
|
request_timeout: "${TB_TRANSPORT_MAX_REQUEST_TIMEOUT:10000}"
|
|
|
|
|
request_poll_interval: "${TB_TRANSPORT_REQUEST_POLL_INTERVAL_MS:25}"
|
|
|
|
|
request_auto_commit_interval: "${TB_TRANSPORT_REQUEST_AUTO_COMMIT_INTERVAL_MS:100}"
|
|
|
|
|
rule_engine:
|
|
|
|
|
topic: "${TB_RULE_ENGINE_TOPIC:tb.rule-engine}"
|
|
|
|
|
poll_interval: "${TB_RULE_ENGINE_POLL_INTERVAL_MS:25}"
|
|
|
|
|
auto_commit_interval: "${TB_RULE_ENGINE_AUTO_COMMIT_INTERVAL_MS:100}"
|
|
|
|
|
notifications:
|
|
|
|
|
topic: "${TB_TRANSPORT_NOTIFICATIONS_TOPIC:tb.transport.notifications}"
|
2018-09-26 14:54:59 +03:00
|
|
|
|
2018-09-24 19:20:55 +03:00
|
|
|
js:
|
2018-10-03 16:38:18 +03:00
|
|
|
evaluator: "${JS_EVALUATOR:local}" # local/remote
|
2018-09-24 19:20:55 +03:00
|
|
|
# Built-in JVM JavaScript environment properties
|
|
|
|
|
local:
|
|
|
|
|
# Use Sandboxed (secured) JVM JavaScript environment
|
|
|
|
|
use_js_sandbox: "${USE_LOCAL_JS_SANDBOX:true}"
|
|
|
|
|
# Specify thread pool size for JavaScript sandbox resource monitor
|
|
|
|
|
monitor_thread_pool_size: "${LOCAL_JS_SANDBOX_MONITOR_THREAD_POOL_SIZE:4}"
|
|
|
|
|
# Maximum CPU time in milliseconds allowed for script execution
|
|
|
|
|
max_cpu_time: "${LOCAL_JS_SANDBOX_MAX_CPU_TIME:100}"
|
|
|
|
|
# Maximum allowed JavaScript execution errors before JavaScript will be blacklisted
|
|
|
|
|
max_errors: "${LOCAL_JS_SANDBOX_MAX_ERRORS:3}"
|
|
|
|
|
# Remote JavaScript environment properties
|
|
|
|
|
remote:
|
2018-09-26 14:54:59 +03:00
|
|
|
# JS Eval request topic
|
|
|
|
|
request_topic: "${REMOTE_JS_EVAL_REQUEST_TOPIC:js.eval.requests}"
|
|
|
|
|
# JS Eval responses topic prefix that is combined with node id
|
|
|
|
|
response_topic_prefix: "${REMOTE_JS_EVAL_REQUEST_TOPIC:js.eval.responses}"
|
|
|
|
|
# JS Eval max pending requests
|
|
|
|
|
max_pending_requests: "${REMOTE_JS_MAX_PENDING_REQUESTS:10000}"
|
|
|
|
|
# JS Eval max request timeout
|
2018-09-27 11:59:15 +03:00
|
|
|
max_requests_timeout: "${REMOTE_JS_MAX_REQUEST_TIMEOUT:10000}"
|
2018-09-26 14:54:59 +03:00
|
|
|
# JS response poll interval
|
|
|
|
|
response_poll_interval: "${REMOTE_JS_RESPONSE_POLL_INTERVAL_MS:25}"
|
2018-09-27 13:46:34 +03:00
|
|
|
# JS response auto commit interval
|
|
|
|
|
response_auto_commit_interval: "${REMOTE_JS_RESPONSE_AUTO_COMMIT_INTERVAL_MS:100}"
|
2018-09-26 14:54:59 +03:00
|
|
|
# Maximum allowed JavaScript execution errors before JavaScript will be blacklisted
|
|
|
|
|
max_errors: "${REMOTE_JS_SANDBOX_MAX_ERRORS:3}"
|
2018-10-08 14:27:02 +03:00
|
|
|
|
|
|
|
|
transport:
|
2018-10-15 15:53:06 +03:00
|
|
|
type: "${TRANSPORT_TYPE:local}" # local or remote
|
2018-10-08 14:27:02 +03:00
|
|
|
remote:
|
|
|
|
|
transport_api:
|
|
|
|
|
requests_topic: "${TB_TRANSPORT_API_REQUEST_TOPIC:tb.transport.api.requests}"
|
|
|
|
|
responses_topic: "${TB_TRANSPORT_API_RESPONSE_TOPIC:tb.transport.api.responses}"
|
|
|
|
|
max_pending_requests: "${TB_TRANSPORT_MAX_PENDING_REQUESTS:10000}"
|
|
|
|
|
request_timeout: "${TB_TRANSPORT_MAX_REQUEST_TIMEOUT:10000}"
|
|
|
|
|
request_poll_interval: "${TB_TRANSPORT_RESPONSE_POLL_INTERVAL_MS:25}"
|
|
|
|
|
request_auto_commit_interval: "${TB_TRANSPORT_RESPONSE_AUTO_COMMIT_INTERVAL_MS:1000}"
|
|
|
|
|
rule_engine:
|
2018-10-09 14:16:08 +03:00
|
|
|
topic: "${TB_RULE_ENGINE_TOPIC:tb.rule-engine}"
|
|
|
|
|
poll_interval: "${TB_RULE_ENGINE_POLL_INTERVAL_MS:25}"
|
|
|
|
|
auto_commit_interval: "${TB_RULE_ENGINE_AUTO_COMMIT_INTERVAL_MS:100}"
|
2018-10-30 12:15:30 +02:00
|
|
|
poll_records_pack_size: "${TB_RULE_ENGINE_MAX_POLL_RECORDS:1000}"
|
|
|
|
|
max_poll_records_per_second: "${TB_RULE_ENGINE_MAX_POLL_RECORDS_PER_SECOND:10000}"
|
2018-10-30 13:32:55 +02:00
|
|
|
max_poll_records_per_minute: "${TB_RULE_ENGINE_MAX_POLL_RECORDS_PER_MINUTE:120000}"
|
2018-10-09 14:16:08 +03:00
|
|
|
notifications:
|
2018-10-12 16:22:38 +03:00
|
|
|
topic: "${TB_TRANSPORT_NOTIFICATIONS_TOPIC:tb.transport.notifications}"
|
2018-10-29 18:31:14 +02:00
|
|
|
sessions:
|
|
|
|
|
inactivity_timeout: "${TB_TRANSPORT_SESSIONS_INACTIVITY_TIMEOUT:300000}"
|
|
|
|
|
report_timeout: "${TB_TRANSPORT_SESSIONS_REPORT_TIMEOUT:30000}"
|
2018-10-22 17:24:32 +03:00
|
|
|
rate_limits:
|
|
|
|
|
enabled: "${TB_TRANSPORT_RATE_LIMITS_ENABLED:false}"
|
|
|
|
|
tenant: "${TB_TRANSPORT_RATE_LIMITS_TENANT:1000:1,20000:60}"
|
|
|
|
|
device: "${TB_TRANSPORT_RATE_LIMITS_DEVICE:10:1,300:60}"
|
2018-10-12 16:22:38 +03:00
|
|
|
# Local HTTP transport parameters
|
|
|
|
|
http:
|
2018-10-17 20:49:35 +03:00
|
|
|
enabled: "${HTTP_ENABLED:true}"
|
2018-10-12 16:22:38 +03:00
|
|
|
request_timeout: "${HTTP_REQUEST_TIMEOUT:60000}"
|
|
|
|
|
# Local MQTT transport parameters
|
|
|
|
|
mqtt:
|
|
|
|
|
# Enable/disable mqtt transport protocol.
|
2018-10-17 20:49:35 +03:00
|
|
|
enabled: "${MQTT_ENABLED:true}"
|
2018-10-12 16:22:38 +03:00
|
|
|
bind_address: "${MQTT_BIND_ADDRESS:0.0.0.0}"
|
|
|
|
|
bind_port: "${MQTT_BIND_PORT:1883}"
|
|
|
|
|
timeout: "${MQTT_TIMEOUT:10000}"
|
|
|
|
|
netty:
|
2018-10-22 08:34:44 +03:00
|
|
|
leak_detector_level: "${NETTY_LEAK_DETECTOR_LVL:DISABLED}"
|
2018-10-12 16:22:38 +03:00
|
|
|
boss_group_thread_count: "${NETTY_BOSS_GROUP_THREADS:1}"
|
|
|
|
|
worker_group_thread_count: "${NETTY_WORKER_GROUP_THREADS:12}"
|
|
|
|
|
max_payload_size: "${NETTY_MAX_PAYLOAD_SIZE:65536}"
|
|
|
|
|
# MQTT SSL configuration
|
|
|
|
|
ssl:
|
|
|
|
|
# Enable/disable SSL support
|
|
|
|
|
enabled: "${MQTT_SSL_ENABLED:false}"
|
|
|
|
|
# SSL protocol: See http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SSLContext
|
|
|
|
|
protocol: "${MQTT_SSL_PROTOCOL:TLSv1.2}"
|
|
|
|
|
# Path to the key store that holds the SSL certificate
|
|
|
|
|
key_store: "${MQTT_SSL_KEY_STORE:mqttserver.jks}"
|
|
|
|
|
# Password used to access the key store
|
|
|
|
|
key_store_password: "${MQTT_SSL_KEY_STORE_PASSWORD:server_ks_password}"
|
|
|
|
|
# Password used to access the key
|
|
|
|
|
key_password: "${MQTT_SSL_KEY_PASSWORD:server_key_password}"
|
|
|
|
|
# Type of the key store
|
|
|
|
|
key_store_type: "${MQTT_SSL_KEY_STORE_TYPE:JKS}"
|
|
|
|
|
# Local CoAP transport parameters
|
|
|
|
|
coap:
|
|
|
|
|
# Enable/disable coap transport protocol.
|
2018-10-15 15:53:06 +03:00
|
|
|
enabled: "${COAP_ENABLED:true}"
|
2018-10-12 16:22:38 +03:00
|
|
|
bind_address: "${COAP_BIND_ADDRESS:0.0.0.0}"
|
|
|
|
|
bind_port: "${COAP_BIND_PORT:5683}"
|
|
|
|
|
timeout: "${COAP_TIMEOUT:10000}"
|