ClearBlade config
Title = "ClearBlade Configuration File"
[Buckets]
QueueEmptyIntervalSecs = 5 # Number of seconds to wait before emptying queue full of file storage system events
MaxFilePacketSize = 2048 # Maximum number of bytes that can be copied/transferred in a single RPC packet
RootDir = "$GOPATH/src/clearblade/blade-runner/clearblade_edge_buckets" # Root path to buckets
GoogleBucketName = "clearblade-buckets" # The Google Cloud storage bucket name to use
DefaultEdgeStorageType = "local" # Use the local file system
DefaultPlatformStorageType = "google" # Use an already-configured Google bucket instance
MaxParallelSyncEvents = 10 # Max number of goroutines processing a bucket's sync queue
[Cluster]
HostAddress = "" # The IP address for other clustered nodes to contact this platform
EnableHAProxyController = false # Enable the HAProxy controller to handle dynamic cluster nodes
[DataUsage]
DataUsageDBFlushIntervalSeconds = 300 # How often does the data usage collector flush the info to the DB
MaxDataUsageDataExpirationMinutes = 131400 # (3 months) Used to set the expiry in minutes for MQTT/HTTP usage data
GoogleMinMessageSizeBytes = 1024 # Messages below this size will be set equal to GoogleMinMessageSizeBytes
[Database]
DBStore = "postgres" # Database store to use. Postgres for platform and SQLite for edge
DBType = "postgres" # Similar to DBStore. Postgres for platform and SQLite for edge
DBHost = "127.0.0.1" # The database server's address
DBPort = "5432" # Database port
DBUsername = "myUser" # Username for connecting to the database
DBPassword = "myPassword" # Password for connecting to the database
MaxMySQLDBConnections = 5 # Max number of connections to MySQL to open per collection
MongoOperationTimeoutSeconds = 60 # Mongo operation timeout in seconds
MongoMaxPoolSize = 100 # Maximum connection pool size for Mongo
DisableDBRecoveryMode = false # Disables database recovery mode. The platform will go into a crash restart loop if it cannot connect to a database
DisableTimescale = false # Disables timescale. This option is ignored on the edge
[Debug]
DisablePprof = true # This will disable pprof output file and web-server creation if set to true
PprofCPUInterval = 600 # The length of time, in seconds, to wait between successive pprof CPU profile generations
PprofHeapInterval = 600 # The length of time, in seconds, to wait between successive pprof heap profile generations
PprofLatencyInterval = 600 # The length of time, in seconds, to wait between successive pprof latency profile generations
PprofMaxFiles = 30 # The maximum number of CPU and heap profiles to retain. 0 indicates keeping all of them
PprofMaxFileAge = 1440 # The maximum amount of time, specified in minutes, in which to retain CPU and heap profile data files
EnablePrometheus = true # Collect debug metrics and expose Prometheus exporter endpoints
BrokerQosLogging = false # Extra debug logging around QoS storage in the broker
[EdgeMonitoring]
MaxEdgeMonSizeDays = 365 # Number of days of events to store in the database table.
[Engine]
PreloaderRequestTimeoutSeconds = 60
MaxLegacyServiceLogLines = 2500
HotSwapUserCtx = true
MessageQueueLength = 10000
EventQueueLength = 10000
[FileHostingConfig]
URL = "http://localhost:8915" # URL with a port for the file hosting server
EdgeBinaryLocation = "/edge/" # Location where the edge binaries are stored on the file hosting server
[HTTP]
HttpPort = ":9000" # Listen port for the HTTP server
HttpMTLSPort = ":9001" # Listen port for the HTTP mTLS server
HttpURL = "https://platform.clearblade.com" # The platform's external URL
TimeProfile = -1 # Enables time profiling of HTTP requests (in ms). Default is disabled (-1)
GzipResponses = true # gzip HTTP responses if HTTP client supports it
[IotCore]
DeviceNumIdColumn = "numid" # Column in the device table representing the device numerical ID in IoT Core
DeviceTimestampCacheSeconds = 300 # How often to dump device timestamps from cache to DB
[KVStore]
Store = "local" # Specifies which KVStore to use. Supported stores are local and Redis
Address = "" # The Redis server's address. Empty if using a local store
Port = "" # Redis port. Empty if using a local store
Password = "" # Redis username. Empty if using a local store
LocalCacheReaperIntervalSeconds = 60 # How often to scan the local cache and delete expired keys
DeviceCacheExpirySeconds = 10 # How long to keep entries in the local device cache
[LeanMode]
LeanMode = false # Stop storing analytics, message history, and code logs. Takes precedence over the next three variables
StoreAnalytics = true # Stop storing analytics if set to false
StoreMessageHistory = true # Stop storing message history if set to false
StoreCodeLogs = true # Stop storing code logs if set to false
DefaultCodeLogsTTLMinutes = -1 # When < 0, use the DB schema default (7 days); otherwise, use this value
MaxPageSize = 1000 # Maximum page size for analytics calls
MaxAuditTrailDays = 7 # Number of days of audit trail to keep
MaxAuditTrailCounts = 500 # Max number of audit trail entries per (asset_class,action_type)
DisableDebugGoroutines = false # Disable all goroutines that print debug info
MaxNotificationHistory = 500 # Max number of notification history entries
FailedServiceStorageTimeHours = 72 # Time to keep failed runs in the DB before deletion
FailedServiceCleanerIntervalMinutes = 60 # Time between delete calls to failed services
CodeLogCleanerIntervalMinutes = 30 # Time between delete calls to code logs
[License]
PKey = "" # Platform key issued by ClearBlade
RegistrationKey = "" # Key required for creating a new developer account
AutoRenewLicense = false # (bool) attempt to auto-renew license
LicenseRenewalWebhook = "" # (string) where to request a new license from
LicenseAutoRenewDays = 15 # (int) how many days until expiry should we start trying to renew the license
PlatformID = "" # (string) the license's registration ID
[Locks]
MaxLockTime = 60 # Number of seconds to hold the lock before forcing an unlock
MaxLockWaitTime = 120 # Number of seconds to wait for the lock before giving up and returning an error
BumpInterval = 60 # Number of seconds in-between wait queue bumps to prevent locks from getting stuck
CheckLockLock = false # Whether to check Lock(); Lock(); sequence which is valid in our JavaScript
EnableBumpingWaitQueue = false # Should we periodically bump the wait queues to prevent locks from getting stuck
[Logging]
LoggingEnabled = true # Enable or disable logging
LogLevel = "debug" # Raise minimum log-level (super,debug,info,warn,error,fatal)
Logfile = "" # The logfile's location. If the value "stderr" or "stdout" are supplied, then it will forward to their respective file handles
MaxLogFileSizeInKB = 50000 # Maximum size of the log file before rotation in KB. Default 50MB. Must be greater than 100 KB. -1 indicates no limit. Only used when Logfile is set and not stdout/stderr
MaxLogFileBackups = 1 # Maximum backups of the log file. Must be greater than 0
Includes = "" # Categories to log. If empty, all categories are logged. Works in concert with log level
Excludes = "" # Categories not to log. If empty, no categories are excluded. Works in concert with log level
LogFormat = "plain" # Valid formats are plain, json
[MQTT]
BrokerTCPPort = ":1883" # The MQTT broker's listen port
BrokerTLSPort = ":1884" # The MQTT broker's TLS listen port
BrokerWSPort = ":8903" # The MQTT broker's WebSocket listen port
BrokerWSSPort = ":8904" # The MQTT broker's TLS WebSocket listen port
MessagingAuthPort = ":8905" # The MQTT Auth broker's listen port
MessagingAuthWSPort = ":8907" # The MQTT Auth broker's WebSocket listen port
UseTLSMessaging = false # Use TLS for the MQTT broker
UseTLSMessagingWS = false # Use TLS for the WebSocket MQTT broker
UseTLSMessagingAuth = false # Use TLS for the MQTT Auth broker
MaxPublishSize = 1e9 # Maximum MQTT publish packet size
MessagingURL = "messaging.clearblade.com" # Used to configure the platform's external messaging URL. May be proxied
AllowDuplicateClientId = false # Allow a duplicate client ID connection; kill the old connection with the same client ID
EnforceMQTTKeepAlive = false # Explicitly enforce MQTT keep alive at the MQTT client level
InitialReadTimeoutSeconds = 60 # How long a client has to send us data before we disconnect them
UseModifiedErrorCodes = false # Use error code 5 when the JWT private key doesn't match the cert
WriteTimeoutSeconds = 5 # Timeout for a socket write
IgnorePermissionErrors = false # Allow clients to stay connected if they attempt to publish or subscribe to a topic they don't have perms for
AllowRetainMessages = true # Allow clients to retain messages that get returned on future subscribes
RetainMessageTTL = 0 # Cache TTL (# of seconds) for retained messages (0 is infinite)
AddRandomToClientIds = false # Append random string to client IDs
MaxConcurrentConnectsPerNode = -1 # Node limit on concurrent connection processing (only applies if >0)
[MessageHistory]
TimePeriodDeleteMsgHistory = 120 # Time interval to delete message history based on storage rules (seconds)
EnableDeviceStateHistoryCleanup = false # Enables IoT Core device state history cleanup
DeviceStateHistoryCleanupInterval = 1440 # Device state cleanup interval
MinDeviceStatesToKeep = 10 # Minimum number of device states to keep
[Metrics]
ReportMetrics = false # Should we send metrics
ReportIntervalHours = 24 # How often to send metrics
MetricWebhook = "" # Where to send the metrics
[Misc]
MaxServiceCachesPerSystem = 11 # Max service caches per system
UserCtxCacheTTLSeconds = 60 # TTL for user ctx cache
[Profiler]
Enabled = false # Is profiling enabled?
NumGatherers = 5 # Number of profiling event gatherer goroutines
GathererBufferSize = 51200 # Max number of profile events to cache before writing
WriterType = "Local File System" # Type of profiler writer
MaxDuration = "5m" # Maximum duration to run a profile. Specified as a duration string
[Profiler.LocalFile]
RootPath = "/tmp/cb_profiling" # Where to store the gathered profile info at run time
[RPC]
RPCTransport = "tcp" # Transport layer for RPC communications
RPCPort = "8950" # Listen port for external RPC server. Used for edge-to-platform communication
RPCPortInternal = "8952" # Listen port for internal RPC server. Used for node-to-node communication
RPCTimeout = 120 # Timeout for all RPC calls within the platform or from platform to edge
RPCKeepaliveInterval = 60 # Keepalive interval for RPC connections
MaxRPCPacketSizeMB = 20 # Maximum RPC packet size, after which packets will be split into segments for transfer
RPCSegmentSizeMB = 5 # Each RPC packet segment's size. Only set on the edge
MaxInMemorySegmentStorageSizeMB = 100 # Maximum in memory segment storage size during data transfer, after which segments are stored in the database
MaxSegmentStorageDays = 5 # Maximum number of days to store segments in the database
EncoderDecoderType = "json" # RPC encoder decoder
DataCompression = "lz4" # RPC data compression
MaxInFlightWorkers = 100 # Maximum number of process message goroutines at a time per RPC client
MaxProcessMessageQueue = 10000 # Maximum number of process message goroutines at a time per RPC client
RPCMessageTrafficSeconds = 120 # Interval to dump and clear the RPC message traffic on a single node
[Security]
Key = "" # The TLS key file's location
Cert = "" # The TLS cert file's location
ExpireTokens = true # Set to invalidate user/device tokens issued more than the system's tokenTTL (defaults to 5 days)
ExpireDevTokens = true # Set to invalidate developer tokens issued more than the instance's tokenTTL (defaults to 5 days)
EnableMutualTLSAuth = false # Set to turn on mTLS auth for devices. mTLS endpoint will be turned on when this is set to true
MaxSocketReadSizeMB = 500 # If data to be read on any socket exceeds this number, the client is disconnected
MEKStorageLocation = "./" # The master encryption key's location
[Sync]
SyncOptimize = true # Optimizes the syncing process if set to true
SyncOptimizeExceptions = "" # Exceptions for the sync optimization process
SyncOptimizations = "" # List specific optimizations to run
PerSystemOptimizerIntervalSeconds = 3600 # Interval to run the per system optimizer (currently only for collection items in inserts)
AllowOverlappingDeployments= false # Set to true to disable overlapping deployment check (not recommended)
[Triggers]
MaxExecutors = 1024 # Maximum number of trigger executors running at one time