|
# |
|
# Copyright © 2016-2019 The Thingsboard Authors |
|
# |
|
# 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}" |
|
# 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}" |
|
log_controller_error_stack_trace: "${HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE:true}" |
|
ws: |
|
send_timeout: "${TB_SERVER_WS_SEND_TIMEOUT:5000}" |
|
limits: |
|
# Limit the amount of sessions and subscriptions available on each server. Put values to zero to disable particular limitation |
|
max_sessions_per_tenant: "${TB_SERVER_WS_TENANT_RATE_LIMITS_MAX_SESSIONS_PER_TENANT:0}" |
|
max_sessions_per_customer: "${TB_SERVER_WS_TENANT_RATE_LIMITS_MAX_SESSIONS_PER_CUSTOMER:0}" |
|
max_sessions_per_regular_user: "${TB_SERVER_WS_TENANT_RATE_LIMITS_MAX_SESSIONS_PER_REGULAR_USER:0}" |
|
max_sessions_per_public_user: "${TB_SERVER_WS_TENANT_RATE_LIMITS_MAX_SESSIONS_PER_PUBLIC_USER:0}" |
|
max_queue_per_ws_session: "${TB_SERVER_WS_TENANT_RATE_LIMITS_MAX_QUEUE_PER_WS_SESSION:500}" |
|
max_subscriptions_per_tenant: "${TB_SERVER_WS_TENANT_RATE_LIMITS_MAX_SUBSCRIPTIONS_PER_TENANT:0}" |
|
max_subscriptions_per_customer: "${TB_SERVER_WS_TENANT_RATE_LIMITS_MAX_SUBSCRIPTIONS_PER_CUSTOMER:0}" |
|
max_subscriptions_per_regular_user: "${TB_SERVER_WS_TENANT_RATE_LIMITS_MAX_SUBSCRIPTIONS_PER_REGULAR_USER:0}" |
|
max_subscriptions_per_public_user: "${TB_SERVER_WS_TENANT_RATE_LIMITS_MAX_SUBSCRIPTIONS_PER_PUBLIC_USER:0}" |
|
max_updates_per_session: "${TB_SERVER_WS_TENANT_RATE_LIMITS_MAX_UPDATES_PER_SESSION:300:1,3000:60}" |
|
rest: |
|
limits: |
|
tenant: |
|
enabled: "${TB_SERVER_REST_LIMITS_TENANT_ENABLED:false}" |
|
configuration: "${TB_SERVER_REST_LIMITS_TENANT_CONFIGURATION:100:1,2000:60}" |
|
customer: |
|
enabled: "${TB_SERVER_REST_LIMITS_CUSTOMER_ENABLED:false}" |
|
configuration: "${TB_SERVER_REST_LIMITS_CUSTOMER_CONFIGURATION:50:1,1000:60}" |
|
|
|
# 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: |
|
# Unique id for this node (autogenerated if empty) |
|
node_id: "${CLUSTER_NODE_ID:}" |
|
# 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}" |
|
# Queue partition id for current node |
|
partition_id: "${QUEUE_PARTITION_ID:0}" |
|
|
|
# Plugins configuration parameters |
|
plugins: |
|
# Comma separated package list used during classpath scanning for plugins |
|
scan_packages: "${PLUGINS_SCAN_PACKAGES:org.thingsboard.server.extensions,org.thingsboard.rule.engine}" |
|
|
|
# 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}" |
|
# Enable/disable case-sensitive username login |
|
user_login_case_sensitive: "${SECURITY_USER_LOGIN_CASE_SENSITIVE:true}" |
|
|
|
# Dashboard parameters |
|
dashboard: |
|
# Maximum allowed datapoints fetched by widgets |
|
max_datapoints_limit: "${DASHBOARD_MAX_DATAPOINTS_LIMIT:50000}" |
|
|
|
database: |
|
ts_max_intervals: "${DATABASE_TS_MAX_INTERVALS:700}" # Max number of DB queries generated by single API call to fetch telemetry records |
|
entities: |
|
type: "${DATABASE_ENTITIES_TYPE:sql}" # cassandra OR sql |
|
ts: |
|
type: "${DATABASE_TS_TYPE:sql}" # cassandra OR sql (for hybrid mode, only this value should be cassandra) |
|
|
|
|
|
# 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 |
|
url: "${CASSANDRA_URL:127.0.0.1:9042}" |
|
# 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 cluster initialization timeout in milliseconds (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}" |
|
max_requests_per_connection_local: "${CASSANDRA_MAX_REQUESTS_PER_CONNECTION_LOCAL:32768}" |
|
max_requests_per_connection_remote: "${CASSANDRA_MAX_REQUESTS_PER_CONNECTION_REMOTE:32768}" |
|
# 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}" |
|
# Specify partitioning size for timestamp key-value storage. Example MINUTES, HOURS, DAYS, MONTHS,INDEFINITE |
|
ts_key_value_partitioning: "${TS_KV_PARTITIONING:MONTHS}" |
|
ts_key_value_ttl: "${TS_KV_TTL:0}" |
|
events_ttl: "${TS_EVENTS_TTL:0}" |
|
buffer_size: "${CASSANDRA_QUERY_BUFFER_SIZE:200000}" |
|
concurrent_limit: "${CASSANDRA_QUERY_CONCURRENT_LIMIT:1000}" |
|
permit_max_wait_time: "${PERMIT_MAX_WAIT_TIME:120000}" |
|
dispatcher_threads: "${CASSANDRA_QUERY_DISPATCHER_THREADS:2}" |
|
callback_threads: "${CASSANDRA_QUERY_CALLBACK_THREADS:4}" |
|
poll_ms: "${CASSANDRA_QUERY_POLL_MS:50}" |
|
rate_limit_print_interval_ms: "${CASSANDRA_QUERY_RATE_LIMIT_PRINT_MS:10000}" |
|
tenant_rate_limits: |
|
enabled: "${CASSANDRA_QUERY_TENANT_RATE_LIMITS_ENABLED:false}" |
|
configuration: "${CASSANDRA_QUERY_TENANT_RATE_LIMITS_CONFIGURATION:1000:1,30000:60}" |
|
print_tenant_names: "${CASSANDRA_QUERY_TENANT_RATE_LIMITS_PRINT_TENANT_NAMES:false}" |
|
|
|
# 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}" |
|
|
|
# Actor system parameters |
|
actors: |
|
cluster: |
|
grpc_callback_thread_pool_size: "${ACTORS_CLUSTER_GRPC_CALLBACK_THREAD_POOL_SIZE:10}" |
|
tenant: |
|
create_components_on_init: "${ACTORS_TENANT_CREATE_COMPONENTS_ON_INIT:true}" |
|
session: |
|
max_concurrent_sessions_per_device: "${ACTORS_MAX_CONCURRENT_SESSION_PER_DEVICE:1}" |
|
sync: |
|
# Default timeout for processing request using synchronous session (HTTP, CoAP) in milliseconds |
|
timeout: "${ACTORS_SESSION_SYNC_TIMEOUT:10000}" |
|
rule: |
|
# Specify thread pool size for database request callbacks executor service |
|
db_callback_thread_pool_size: "${ACTORS_RULE_DB_CALLBACK_THREAD_POOL_SIZE:1}" |
|
# Specify thread pool size for javascript executor service |
|
js_thread_pool_size: "${ACTORS_RULE_JS_THREAD_POOL_SIZE:50}" |
|
# Specify thread pool size for mail sender executor service |
|
mail_thread_pool_size: "${ACTORS_RULE_MAIL_THREAD_POOL_SIZE:50}" |
|
# Whether to allow usage of system mail service for rules |
|
allow_system_mail_service: "${ACTORS_RULE_ALLOW_SYSTEM_MAIL_SERVICE:true}" |
|
# Specify thread pool size for external call service |
|
external_call_thread_pool_size: "${ACTORS_RULE_EXTERNAL_CALL_THREAD_POOL_SIZE:50}" |
|
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}" |
|
transaction: |
|
# Size of queues which store messages for transaction rule nodes |
|
queue_size: "${ACTORS_RULE_TRANSACTION_QUEUE_SIZE:20}" |
|
# Time in milliseconds for transaction to complete |
|
duration: "${ACTORS_RULE_TRANSACTION_DURATION:15000}" |
|
statistics: |
|
# Enable/disable actor statistics |
|
enabled: "${ACTORS_STATISTICS_ENABLED:true}" |
|
persist_frequency: "${ACTORS_STATISTICS_PERSIST_FREQUENCY:3600000}" |
|
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}" |
|
client_side_rpc: |
|
timeout: "${CLIENT_SIDE_RPC_TIMEOUT:60000}" |
|
|
|
cache: |
|
# caffeine or redis |
|
type: "${CACHE_TYPE:caffeine}" |
|
|
|
caffeine: |
|
specs: |
|
relations: |
|
timeToLiveInMinutes: 1440 |
|
maxSize: 100000 |
|
deviceCredentials: |
|
timeToLiveInMinutes: 1440 |
|
maxSize: 100000 |
|
devices: |
|
timeToLiveInMinutes: 1440 |
|
maxSize: 100000 |
|
sessions: |
|
timeToLiveInMinutes: 1440 |
|
maxSize: 100000 |
|
assets: |
|
timeToLiveInMinutes: 1440 |
|
maxSize: 100000 |
|
entityViews: |
|
timeToLiveInMinutes: 1440 |
|
maxSize: 100000 |
|
|
|
redis: |
|
# standalone or cluster |
|
connection: |
|
type: standalone |
|
host: "${REDIS_HOST:localhost}" |
|
port: "${REDIS_PORT:6379}" |
|
db: "${REDIS_DB:0}" |
|
password: "${REDIS_PASSWORD:}" |
|
|
|
# Check new version updates parameters |
|
updates: |
|
# Enable/disable updates checking. |
|
enabled: "${UPDATES_ENABLED:true}" |
|
|
|
# spring CORS configuration |
|
spring.mvc.cors: |
|
mappings: |
|
# Intercept path |
|
"[/api/**]": |
|
#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: "*" |
|
#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" |
|
|
|
# spring serve gzip compressed static resources |
|
spring.resources.chain: |
|
compressed: "true" |
|
strategy: |
|
content: |
|
enabled: "true" |
|
|
|
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation: "true" |
|
|
|
# HSQLDB DAO Configuration |
|
#spring: |
|
# data: |
|
# jpa: |
|
# repositories: |
|
# enabled: "true" |
|
# jpa: |
|
# hibernate: |
|
# ddl-auto: "validate" |
|
# database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.HSQLDialect}" |
|
# datasource: |
|
# driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.hsqldb.jdbc.JDBCDriver}" |
|
# url: "${SPRING_DATASOURCE_URL:jdbc:hsqldb:file:${SQL_DATA_FOLDER:/tmp}/thingsboardDb;sql.enforce_size=false;hsqldb.log_size=5}" |
|
# username: "${SPRING_DATASOURCE_USERNAME:sa}" |
|
# password: "${SPRING_DATASOURCE_PASSWORD:}" |
|
|
|
# PostgreSQL DAO Configuration |
|
spring: |
|
data: |
|
sql: |
|
repositories: |
|
enabled: "true" |
|
sql: |
|
hibernate: |
|
ddl-auto: "validate" |
|
database-platform: "${SPRING_JPA_DATABASE_PLATFORM:org.hibernate.dialect.PostgreSQLDialect}" |
|
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:test}" |
|
|
|
# Audit log parameters |
|
audit-log: |
|
# Enable/disable audit log functionality. |
|
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}" |
|
# Logging levels per each entity type. |
|
# Allowed values: OFF (disable), W (log write operations), RW (log read and write operations) |
|
logging-level: |
|
mask: |
|
"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}" |
|
"rule_chain": "${AUDIT_LOG_MASK_RULE_CHAIN:W}" |
|
"alarm": "${AUDIT_LOG_MASK_ALARM:W}" |
|
"entity_view": "${AUDIT_LOG_MASK_ENTITY_VIEW:W}" |
|
sink: |
|
# Type of external sink. possible options: none, elasticsearch |
|
type: "${AUDIT_LOG_SINK_TYPE:none}" |
|
# Name of the index where audit logs stored |
|
# Index name could contain next placeholders (not mandatory): |
|
# @{TENANT} - substituted by tenant ID |
|
# @{DATE} - substituted by current date in format provided in audit_log.sink.date_format |
|
index_pattern: "${AUDIT_LOG_SINK_INDEX_PATTERN:@{TENANT}_AUDIT_LOG_@{DATE}}" |
|
# 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}" |
|
scheme_name: "${AUDIT_LOG_SINK_SCHEME_NAME:http}" # http or https |
|
host: "${AUDIT_LOG_SINK_HOST:localhost}" |
|
port: "${AUDIT_LOG_SINK_PORT:9200}" |
|
user_name: "${AUDIT_LOG_SINK_USER_NAME:}" |
|
password: "${AUDIT_LOG_SINK_PASSWORD:}" |
|
|
|
state: |
|
defaultInactivityTimeoutInSec: "${DEFAULT_INACTIVITY_TIMEOUT:10}" |
|
defaultStateCheckIntervalInSec: "${DEFAULT_STATE_CHECK_INTERVAL:10}" |
|
|
|
kafka: |
|
enabled: true |
|
bootstrap.servers: "${TB_KAFKA_SERVERS:localhost:9092}" |
|
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}" |
|
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}" |
|
max_requests_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}" |
|
|
|
js: |
|
evaluator: "${JS_EVALUATOR:local}" # local/remote |
|
# 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: |
|
# 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_RESPONSE_TOPIC:js.eval.responses}" |
|
# JS Eval max pending requests |
|
max_pending_requests: "${REMOTE_JS_MAX_PENDING_REQUESTS:10000}" |
|
# JS Eval max request timeout |
|
max_requests_timeout: "${REMOTE_JS_MAX_REQUEST_TIMEOUT:10000}" |
|
# JS response poll interval |
|
response_poll_interval: "${REMOTE_JS_RESPONSE_POLL_INTERVAL_MS:25}" |
|
# JS response auto commit interval |
|
response_auto_commit_interval: "${REMOTE_JS_RESPONSE_AUTO_COMMIT_INTERVAL_MS:100}" |
|
# Maximum allowed JavaScript execution errors before JavaScript will be blacklisted |
|
max_errors: "${REMOTE_JS_SANDBOX_MAX_ERRORS:3}" |
|
|
|
transport: |
|
type: "${TRANSPORT_TYPE:local}" # local or remote |
|
remote: |
|
transport_api: |
|
requests_topic: "${TB_TRANSPORT_API_REQUEST_TOPIC:tb.transport.api.requests}" |
|
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: |
|
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}" |
|
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}" |
|
max_poll_records_per_minute: "${TB_RULE_ENGINE_MAX_POLL_RECORDS_PER_MINUTE:120000}" |
|
notifications: |
|
topic: "${TB_TRANSPORT_NOTIFICATIONS_TOPIC:tb.transport.notifications}" |
|
sessions: |
|
inactivity_timeout: "${TB_TRANSPORT_SESSIONS_INACTIVITY_TIMEOUT:300000}" |
|
report_timeout: "${TB_TRANSPORT_SESSIONS_REPORT_TIMEOUT:30000}" |
|
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}" |
|
json: |
|
# Cast String data types to Numeric if possible when processing Telemetry/Attributes JSON |
|
type_cast_enabled: "${JSON_TYPE_CAST_ENABLED:true}" |
|
# Maximum allowed string value length when processing Telemetry/Attributes JSON (0 value disables string value length check) |
|
max_string_value_length: "${JSON_MAX_STRING_VALUE_LENGTH:0}" |
|
# Local HTTP transport parameters |
|
http: |
|
enabled: "${HTTP_ENABLED:true}" |
|
request_timeout: "${HTTP_REQUEST_TIMEOUT:60000}" |
|
# Local MQTT transport parameters |
|
mqtt: |
|
# Enable/disable mqtt transport protocol. |
|
enabled: "${MQTT_ENABLED:true}" |
|
bind_address: "${MQTT_BIND_ADDRESS:0.0.0.0}" |
|
bind_port: "${MQTT_BIND_PORT:1883}" |
|
timeout: "${MQTT_TIMEOUT:10000}" |
|
netty: |
|
leak_detector_level: "${NETTY_LEAK_DETECTOR_LVL:DISABLED}" |
|
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. |
|
enabled: "${COAP_ENABLED:true}" |
|
bind_address: "${COAP_BIND_ADDRESS:0.0.0.0}" |
|
bind_port: "${COAP_BIND_PORT:5683}" |
|
timeout: "${COAP_TIMEOUT:10000}" |