Skip to content

Latest commit

 

History

History
114 lines (107 loc) · 27.6 KB

EnvironmentVariables.md

File metadata and controls

114 lines (107 loc) · 27.6 KB

Edge Agent and Edge Hub Environment Variables

Use the following environment variables to configure the Edge Agent and Edge Hub services. These variables are used in the deployment manifest to configure the Edge Agent and Edge Hub modules.

You can set Edge Agent and Edge Hub environment variables in the Azure portal. In the details page for your IoT Edge device, select Set Modules. In the IoT Edge Modules section, select Runtime Settings. Choose the Edge Agent or Edge Hub tab for the module's environment variable you want to set. Add the variable detail in the Environment Variables section. Apply and create the deployment for the device.

EdgeAgent

Variable Description Value Range Default Value
BackupConfigFilePath Path to put the backup deployment config file string
CloseCloudConnectionOnIdleTimeout Whether the upstream connection should be closed when CloudConnectionIdleTimeoutSecs is reached bool false
CloudConnectionIdleTimeoutSecs If there are no IoT operations, time span to wait before the upstream connection is considered idle int32 300
ConfigRefreshFrequencySecs Interval at which the EdgeAgent config is refreshed from upstream int32 3600
ConfigSource twin / local, specifies where the deployment config should be read from twin, local twin
CoolOffTimeUnitInSeconds Time span to wait between restart attempts on a module 0-300 10
DisableDeviceAnalyticsMetadata Whether to disable sending basic metadata about the device to Microsoft. bool false
EnableK8sServiceCallTracing Whether to enable logging for K8s requests that the Agent makes bool false
EnableOrphanedIdentityCleanup Whether to enable removal of any orphaned identities
NOTE: There is an issue with the managedBy tag for module identities that WILL cause this logic to remove Host-Level modules (i.e. managed by something other than IotEdge)
bool false
EnableSdkDebugLogs If set, emits SDK client events to logs. Note that this method will substantially slow down execution. bool false
Https_Proxy Address of the proxy to use for outbound HTTPS requests string
IntensiveCareTimeInMinutes Time span for a module to be running before considered completely healthy (restart time / count cleared) int32
K8sNamespace K8s namespace to use for deploying modules string
LocalConfigPath Path to local .json file containing Agent config string .\config.json
ManagementApiTimeoutSecs Time span to wait before the connection to managament api times out int32 300
MaxRestartCount Max number of restarts allowed before a module is considered to have failed int32
MetricsEnabled Whether to enable metrics listener bool true
MetricsHistogramMaxAge Time interval for the metrics histogram TimeSpan string 01:00:00 (1 hour)
MetricScrapeInterval Interval at which diagnostic metrics are sampled TimeSpan string 01:00:00 (1 hour)
MetricUploadInterval Interval at which diagnostic metrics are uploaded TimeSpan string 1.00:00:00 (1 day)
ModuleUpdateMode Behavior for module updates. Either wait for all images to be downloaded, or make a best effort. NonBlocking, WaitForAllPulls NonBlocking
PerformanceMetricsUpdateFrequency Interval to sample system performance metrics from host. These include CPU, RAM and Disk Space measurements. TimeSpan string 00:05:00 (5 minutes)
Mode specifies the mode for module deployment iotedged, docker, kubernetes iotedged
PersistentVolumeClaimDefaultSizeInMb Size of the PersistedVolumeClaim, must be used with StorageClassName int32
RequestTimeoutSecs Timeout for handling ping and GetTaskStatus direct methods int32 600
RocksDB_MaxOpenFiles Max number of files to be concurrently opened by RocksDB int32
RocksDB_MaxTotalWalSize Max size to be used by RocksDB's write-ahead-log ulong
RocksDB_MaxManifestFileSize Max size of a RocksDB MANIFEST file before it's rolled over ulong
RunAsNonRoot If set, runs at user = 1000 instead of root bool false
RuntimeLogLevel Runtime diagnostic logging level fatal, error, warning, info, debug, verbose info
SendRuntimeQualityTelemetry Whether to enable sending runtime diagnostics metric bool true
Storage_LogLevel RocksDB diagnostic log level NONE, FATAL, HEADER, ERROR, WARN, INFO, DEBUG NONE
StorageClassName StorageClassName to be used when creating a PersistedVolumeClaim string
StorageFolder Path to place the EdgeAgent database directory string TempPath of the current OS
UpstreamProtocol Protocol used to for upstream connections Amqp, AmqpWs, Mqtt, MqttWs Amqp w/ fallback to AmqpWs
UseMountSourceForVolumeName If set, the k8s conversion will use the volume mount source as persistent volume name bool false
UsePersistentStorage Whether to save deployment config and module states to disk bool true
UseServerHeartbeat Sets the client-side heartbeat interval to 60sec for the Agent's upstream AMQP connection bool true

EdgeHub

Variable Description Values Default
AmqpSettings__Enabled Whether the AMQP protocol head should be enabled bool true
AmqpSettings__Port The port for the AMQP protocol head to listen on int32 5671
AmqpSettings__DelayedBatchingEnabled Enable to wait for subsequent packets to batch them, similar to Nagle for TCP bool false
AuthenticationMode Determines who performs authentication Scope, Cloud, CloudAndScope (Cloud AuthenticationMode not supported in production) Scope
BackupFolder Path to place the backup EdgeHub database directory string TempPath of the current OS
CacheTokens Whether client authentication tokens are saved to disk bool false
CheckEntireQueueOnCleanup Periodically check all pending messages for TTL expiry, incurs more I/O but saves more storage bool false
ClientCertAuthEnabled Allows dev certificates to be used during SSL handshake with upstream and bypass cert validation bool false
CloseCloudConnectionOnDeviceDisconnect If a leaf device disconnections, immediately closes the corresponding upstream connection bool true
CloseCloudConnectionOnIdleTimeout Whether the upstream connection should be closed when CloudConnectionIdleTimeoutSecs is reached bool true
CloudConnectionHangingTimeoutSecs Time span to wait before the upstream IOT operation is set to timeout in case CloudOperationTimeoutSecs is not honored int32 50
CloudConnectionIdleTimeoutSecs If there are no IoT operations, time span to wait before the upstream connection is considered idle int32 3600
CloudOperationTimeoutSecs Time out for any upstream IoT operation int32 20
ConfigRefreshFrequencySecs Interval at which the EdgeHub config is refreshed from upstream int32 3600
ConfigSource Uses config from either EdgeHub twin, or a local config source twin, local twin
ConnectivityCheckFrequencySecs Interval at which EdgeHub will ping upstream to ensure connectivity is still present int32 300
DeviceScopeCacheRefreshRateSecs Interval at which leaf and module identities are refreshed from upstream int32 3600
EnableRoutingLogging Whether message routing logs should be enabled bool false
EnableSdkDebugLogs If set, emits SDK client events to logs. Note that this method will substantially slow down execution. bool false
EncryptTwinStore Whether to encrypt the twin data before persisting to disk bool true
Https_Proxy Address of the proxy to use for outbound HTTPS requests string
HttpSettings__Enabled Whether the HTTP server should be enabled bool true
HttpSettings__Port The port for the HTTP protocol head to listen on int32 443
ApiProxyModuleId This is the ApiProxy module name that is authorized to forward the client certificate for client CA certificate authentication string IoTEdgeAPIProxy
IotHubConnectionPoolSize Pool size for upstream AMQP connection int32
MaxConnectedClients Maximum number of downstream clients allowed to connect int32 101 (100 clients + 1 EdgeHub)
MaxUpstreamBatchSize Max number of messages to concurrently send upstream int32 10
MessageAckTimeoutSecs Time span to wait for sending a message downstream to a leaf device int32 30
MessageCleanupIntervalSecs Time interval for task that cleans up messages in edgeHub's store int32 1800
Metrics__Listener__Host Hostname of the metrics listener, used to construct the metrics listener URL string *
Metrics__Listener__MetricsEnabled Whether to enable metrics listener bool true
Metrics__Listener__MetricsHistogramMaxAge Time interval for the metrics histogram TimeSpan string 00:01:00 (1 hour)
Metrics__Listener__Port Port of the metrics listener, used to construct the metrics listener URL int32 9600
Metrics__Listener__Suffix Appended to the metrics listener URL string metrics
MinTwinSyncPeriodSecs Maximum frequency for pull any device/module twin int32 120
MqttSettings__Enabled Whether the MQTT broker should be enabled bool true
MqttSettings__UsePooledBuffers Whether MQTT protocol head should use pooled buffers bool false
OptimizeForPerformance Increase RocksDB file I/O usage to speed up message storage bool true
ReportedPropertiesSyncFrequencySecs Maximum frequency for pushing reported properties upstream int32 5
RocksDB_MaxOpenFiles Max number of files to be concurrently opened by RocksDB int32
RocksDB_MaxTotalWalSize Max size to be used by RocksDB's write-ahead-log ulong
RocksDB_MaxManifestFileSize Max size of a RocksDB MANIFEST file before it's rolled over ulong
RuntimeLogLevel Runtime diagnostic logging level fatal, error, warning, info, debug, verbose info
ShutdownWaitPeriod Seconds to wait on shutdown before hard termination int32 60
SslProtocols TLS protocol(s) to be supported tls1.2, tls1.3, or any combination thereof separated by comma tls1.2,tls1.3
Storage_LogLevel RocksDB diagnostic log level NONE, FATAL, HEADER, ERROR, WARN, INFO, DEBUG NONE
StorageFolder Path to place the EdgeHub databases directory string TempPath of the current OS
UpstreamFanOutFactor Max number of message groups to concurrently process for sending, grouped by sender int32 10
UpstreamProtocol Protocol used to for upstream connections Amqp, AmqpWs, Mqtt, MqttWs Amqp w/ fallback to AmqpWs
UseServerHeartbeat Sets the client-side heartbeat interval to 60sec for upstream AMQP connections bool true
UsePersistentStorage If set, will enable directly persisting messages / twins into the local database before forwarding/processing bool true
EnableNonPersistentStorageBackup If messages / twins are not directly persisted, this will backup twins and any unprocessed messages on shutdown so Edge can resume on next startup bool false
ServerCertificateRenewAfterInMs Maximum time duration after which the EdgeHub server certificate will be renewed, irrespective of certificate expiry time int32 int32.max
MaxCheckCertExpiryInMs Maximum time duration after which EdgeHub server certificate expiry should be checked, irrespective of certificate expiry time int32 n/a

Cloud authentication is not supported in production because of several known limitations:

  • Does not work for clients with x509 certitificate authentication (thumbprint or CA)
  • Does not work in offline mode
  • When a device sends telemetry and disconnects before EdgeHub, there is no way for EdgeHub to drain those messages to IoT Hub
  • Token refresh or validation requires dropping connection to the device and may cause stability issues.