|
|
@@ -6,845 +6,23 @@
|
|
|
##
|
|
|
## The *-override.conf files are overwritten at runtime when changes
|
|
|
## are made from EMQX dashboard UI, management HTTP API, or CLI.
|
|
|
+## All configuration details can be found in emqx.conf.example
|
|
|
|
|
|
-##==================================================================
|
|
|
-## Node
|
|
|
-##==================================================================
|
|
|
node {
|
|
|
- ## Node name.
|
|
|
- ## See: http://erlang.org/doc/reference_manual/distributed.html
|
|
|
- ##
|
|
|
- ## @doc node.name
|
|
|
- ## ValueType: NodeName
|
|
|
- ## Default: emqx@127.0.0.1
|
|
|
- name = "emqx@127.0.0.1"
|
|
|
-
|
|
|
- ## Cookie for distributed node communication.
|
|
|
- ##
|
|
|
- ## @doc node.cookie
|
|
|
- ## ValueType: String
|
|
|
- ## Default: emqxsecretcookie
|
|
|
+ name: "emqx@127.0.0.1"
|
|
|
cookie = emqxsecretcookie
|
|
|
-
|
|
|
- ## Data dir for the node
|
|
|
- ##
|
|
|
- ## @doc node.data_dir
|
|
|
- ## ValueType: Folder
|
|
|
- ## Default: "{{ platform_data_dir }}"
|
|
|
data_dir = "{{ platform_data_dir }}"
|
|
|
-
|
|
|
- ## Location of crash dump file.
|
|
|
- ##
|
|
|
- ## @doc node.crash_dump_file
|
|
|
- ## ValueType: File
|
|
|
- ## Default: "{{ platform_log_dir }}/erl_crash.dump"
|
|
|
- crash_dump_file = "{{ platform_log_dir }}/erl_crash.dump"
|
|
|
-
|
|
|
- ## The number of seconds that the broker is allowed to spend writing
|
|
|
- ## a crash dump
|
|
|
- ##
|
|
|
- ## @doc node.crash_dump_seconds
|
|
|
- ## ValueType: seconds
|
|
|
- ## Default: 30s
|
|
|
- crash_dump_seconds = 30s
|
|
|
-
|
|
|
- ## The maximum size of a crash dump file in bytes.
|
|
|
- ##
|
|
|
- ## @doc node.crash_dump_bytes
|
|
|
- ## ValueType: bytes
|
|
|
- ## Default: 100MB
|
|
|
- crash_dump_bytes = 100MB
|
|
|
-
|
|
|
- ## Global GC Interval.
|
|
|
- ##
|
|
|
- ## @doc node.global_gc_interval
|
|
|
- ## ValueType: Duration
|
|
|
- ## Default: 15m
|
|
|
- global_gc_interval = 15m
|
|
|
-
|
|
|
- ## Sets the etc directory
|
|
|
etc_dir = "{{ platform_etc_dir }}"
|
|
|
-
|
|
|
- ## Sets the net_kernel tick time in seconds.
|
|
|
- ## Notice that all communicating nodes are to have the same
|
|
|
- ## TickTime value specified.
|
|
|
- ##
|
|
|
- ## See: http://www.erlang.org/doc/man/kernel_app.html#net_ticktime
|
|
|
- ##
|
|
|
- ## @doc node.dist_net_ticktime
|
|
|
- ## ValueType: Number
|
|
|
- ## Default: 2m
|
|
|
- dist_net_ticktime = 2m
|
|
|
-
|
|
|
- ## Sets the maximum depth of call stack back-traces in the exit
|
|
|
- ## reason element of 'EXIT' tuples.
|
|
|
- ## The flag also limits the stacktrace depth returned by
|
|
|
- ## process_info item current_stacktrace.
|
|
|
- ##
|
|
|
- ## @doc node.backtrace_depth
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [0,1024]
|
|
|
- ## Default: 23
|
|
|
- backtrace_depth = 23
|
|
|
-
|
|
|
- ## Comma-separated list of applications to start with emqx_machine.
|
|
|
- ## These applications may restart on cluster leave/join.
|
|
|
- ##
|
|
|
- ## @doc node.applications
|
|
|
- ## ValueType: String
|
|
|
- ## Default: "gproc, esockd, ranch, cowboy, emqx"
|
|
|
- applications = "{{ emqx_machine_boot_apps }}"
|
|
|
-
|
|
|
- cluster_call {
|
|
|
- retry_interval = 1s
|
|
|
- max_history = 100
|
|
|
- cleanup_interval = 5m
|
|
|
- }
|
|
|
-
|
|
|
- ## Database backend
|
|
|
- ##
|
|
|
- ## @doc node.db_backend
|
|
|
- ## ValueType: mnesia | rlog
|
|
|
- ## Default: rlog
|
|
|
- db_backend = rlog
|
|
|
-
|
|
|
- ## RLOG role
|
|
|
- ##
|
|
|
- ## @doc node.db_role
|
|
|
- ## ValueType: core | replicant
|
|
|
- ## Default: core
|
|
|
- db_role = core
|
|
|
-}
|
|
|
-
|
|
|
-##==================================================================
|
|
|
-## Cluster
|
|
|
-##==================================================================
|
|
|
-cluster {
|
|
|
- ## Cluster name.
|
|
|
- ##
|
|
|
- ## @doc cluster.name
|
|
|
- ## ValueType: String
|
|
|
- ## Default: emqxcl
|
|
|
- name = emqxcl
|
|
|
-
|
|
|
- ## Enable cluster autoheal from network partition.
|
|
|
- ##
|
|
|
- ## @doc cluster.autoheal
|
|
|
- ## ValueType: Boolean
|
|
|
- ## Default: true
|
|
|
- autoheal = true
|
|
|
-
|
|
|
- ## Autoclean down node. A down node will be removed from the cluster
|
|
|
- ## if this value > 0.
|
|
|
- ##
|
|
|
- ## @doc cluster.autoclean
|
|
|
- ## ValueType: Duration
|
|
|
- ## Default: 5m
|
|
|
- autoclean = 5m
|
|
|
-
|
|
|
- ## Node discovery strategy to join the cluster.
|
|
|
- ##
|
|
|
- ## @doc cluster.discovery_strategy
|
|
|
- ## ValueType: manual | static | mcast | dns | etcd | k8s
|
|
|
- ## - manual: Manual join command
|
|
|
- ## - static: Static node list
|
|
|
- ## - mcast: IP Multicast
|
|
|
- ## - dns: DNS A Record
|
|
|
- ## - etcd: etcd
|
|
|
- ## - k8s: Kubernetes
|
|
|
- ##
|
|
|
- ## Default: manual
|
|
|
- discovery_strategy = manual
|
|
|
-
|
|
|
- ## Replicant core nodes
|
|
|
- ##
|
|
|
- ## @doc cluster.core_nodes
|
|
|
- ## ValueType: comma-separated node list
|
|
|
- ## Default: ""
|
|
|
- core_nodes = ""
|
|
|
-
|
|
|
- ##----------------------------------------------------------------
|
|
|
- ## Cluster using static node list
|
|
|
- ##----------------------------------------------------------------
|
|
|
- static {
|
|
|
- ## Node list of the cluster
|
|
|
- ##
|
|
|
- ## @doc cluster.static.seeds
|
|
|
- ## ValueType: Array<NodeName>
|
|
|
- ## Default: []
|
|
|
- seeds = ["emqx1@127.0.0.1", "emqx2@127.0.0.1"]
|
|
|
- }
|
|
|
-
|
|
|
- ##----------------------------------------------------------------
|
|
|
- ## Cluster using IP Multicast
|
|
|
- ##----------------------------------------------------------------
|
|
|
- mcast {
|
|
|
- ## IP Multicast Address.
|
|
|
- ##
|
|
|
- ## @doc cluster.mcast.addr
|
|
|
- ## ValueType: IPAddress
|
|
|
- ## Default: "239.192.0.1"
|
|
|
- addr = "239.192.0.1"
|
|
|
-
|
|
|
- ## Multicast Ports.
|
|
|
- ##
|
|
|
- ## @doc cluster.mcast.ports
|
|
|
- ## ValueType: Array<Port>
|
|
|
- ## Default: [4369, 4370]
|
|
|
- ports = [4369, 4370]
|
|
|
-
|
|
|
- ## Multicast Iface.
|
|
|
- ##
|
|
|
- ## @doc cluster.mcast.iface
|
|
|
- ## ValueType: IPAddress
|
|
|
- ## Default: "0.0.0.0"
|
|
|
- iface = "0.0.0.0"
|
|
|
-
|
|
|
- ## Multicast Ttl.
|
|
|
- ##
|
|
|
- ## @doc cluster.mcast.ttl
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [0,255]
|
|
|
- ## Default: 255
|
|
|
- ttl = 255
|
|
|
-
|
|
|
- ## Multicast loop.
|
|
|
- ##
|
|
|
- ## @doc cluster.mcast.loop
|
|
|
- ## ValueType: Boolean
|
|
|
- ## Default: true
|
|
|
- loop = true
|
|
|
- }
|
|
|
-
|
|
|
- ##----------------------------------------------------------------
|
|
|
- ## Cluster using DNS A records
|
|
|
- ##----------------------------------------------------------------
|
|
|
- dns {
|
|
|
- ## DNS name.
|
|
|
- ##
|
|
|
- ## @doc cluster.dns.name
|
|
|
- ## ValueType: String
|
|
|
- ## Default: localhost
|
|
|
- name = localhost
|
|
|
-
|
|
|
- ## The App name is used to build 'node.name' with IP address.
|
|
|
- ##
|
|
|
- ## @doc cluster.dns.app
|
|
|
- ## ValueType: String
|
|
|
- ## Default: emqx
|
|
|
- app = emqx
|
|
|
- }
|
|
|
-
|
|
|
- ##----------------------------------------------------------------
|
|
|
- ## Cluster using etcd
|
|
|
- ##----------------------------------------------------------------
|
|
|
- etcd {
|
|
|
- ## Etcd server list, separated by ','.
|
|
|
- ##
|
|
|
- ## @doc cluster.etcd.server
|
|
|
- ## ValueType: URL
|
|
|
- ## Required: true
|
|
|
- server = "http://127.0.0.1:2379"
|
|
|
-
|
|
|
- ## The prefix helps build nodes path in etcd. Each node in the cluster
|
|
|
- ## will create a path in etcd: v2/keys/<prefix>/<name>/<node.name>
|
|
|
- ##
|
|
|
- ## @doc cluster.etcd.prefix
|
|
|
- ## ValueType: String
|
|
|
- ## Default: emqxcl
|
|
|
- prefix = emqxcl
|
|
|
-
|
|
|
- ## The TTL for node's path in etcd.
|
|
|
- ##
|
|
|
- ## @doc cluster.etcd.node_ttl
|
|
|
- ## ValueType: Duration
|
|
|
- ## Default: 1m
|
|
|
- node_ttl = 1m
|
|
|
-
|
|
|
- ## Path to the file containing the user's private PEM-encoded key.
|
|
|
- ##
|
|
|
- ## @doc cluster.etcd.ssl.keyfile
|
|
|
- ## ValueType: File
|
|
|
- ## Default: "{{ platform_etc_dir }}/certs/key.pem"
|
|
|
- ssl.keyfile = "{{ platform_etc_dir }}/certs/key.pem"
|
|
|
-
|
|
|
- ## Path to a file containing the user certificate.
|
|
|
- ##
|
|
|
- ## @doc cluster.etcd.ssl.certfile
|
|
|
- ## ValueType: File
|
|
|
- ## Default: "{{ platform_etc_dir }}/certs/cert.pem"
|
|
|
- ssl.certfile = "{{ platform_etc_dir }}/certs/cert.pem"
|
|
|
-
|
|
|
- ## Path to the file containing PEM-encoded CA certificates. The CA certificates
|
|
|
- ## are used during server authentication and when building the client certificate chain.
|
|
|
- ##
|
|
|
- ## @doc cluster.etcd.ssl.cacertfile
|
|
|
- ## ValueType: File
|
|
|
- ## Default: "{{ platform_etc_dir }}/certs/cacert.pem"
|
|
|
- ssl.cacertfile = "{{ platform_etc_dir }}/certs/cacert.pem"
|
|
|
- }
|
|
|
-
|
|
|
- ##----------------------------------------------------------------
|
|
|
- ## Cluster using Kubernetes
|
|
|
- ##----------------------------------------------------------------
|
|
|
- k8s {
|
|
|
- ## Kubernetes API server list, separated by ','.
|
|
|
- ##
|
|
|
- ## @doc cluster.k8s.apiserver
|
|
|
- ## ValueType: URL
|
|
|
- ## Required: true
|
|
|
- apiserver = "http://10.110.111.204:8080"
|
|
|
-
|
|
|
- ## The service name helps lookup EMQ nodes in the cluster.
|
|
|
- ##
|
|
|
- ## @doc cluster.k8s.service_name
|
|
|
- ## ValueType: String
|
|
|
- ## Default: emqx
|
|
|
- service_name = emqx
|
|
|
-
|
|
|
- ## The address type is used to extract host from k8s service.
|
|
|
- ##
|
|
|
- ## @doc cluster.k8s.address_type
|
|
|
- ## ValueType: ip | dns | hostname
|
|
|
- ## Default: ip
|
|
|
- address_type = ip
|
|
|
-
|
|
|
- ## The app name helps build 'node.name'.
|
|
|
- ##
|
|
|
- ## @doc cluster.k8s.app_name
|
|
|
- ## ValueType: String
|
|
|
- ## Default: emqx
|
|
|
- app_name = emqx
|
|
|
-
|
|
|
- ## The suffix added to dns and hostname get from k8s service
|
|
|
- ##
|
|
|
- ## @doc cluster.k8s.suffix
|
|
|
- ## ValueType: String
|
|
|
- ## Default: "pod.local"
|
|
|
- suffix = "pod.local"
|
|
|
-
|
|
|
- ## Kubernetes Namespace
|
|
|
- ##
|
|
|
- ## @doc cluster.k8s.namespace
|
|
|
- ## ValueType: String
|
|
|
- ## Default: default
|
|
|
- namespace = default
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
-##==================================================================
|
|
|
-## Log
|
|
|
-##==================================================================
|
|
|
log {
|
|
|
- ##----------------------------------------------------------------
|
|
|
- ## The console log handler send log messages to emqx console
|
|
|
- ##----------------------------------------------------------------
|
|
|
- console_handler {
|
|
|
- ## Log to single line
|
|
|
- ## @doc log.console_handler.<name>.enable
|
|
|
- ## ValueType: Boolean
|
|
|
- ## Default: false
|
|
|
- enable = false
|
|
|
-
|
|
|
- ## The log level of this handler
|
|
|
- ## All the log messages with levels lower than this level will
|
|
|
- ## be dropped.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.level
|
|
|
- ## ValueType: debug | info | notice | warning | error | critical | alert | emergency
|
|
|
- ## Default: warning
|
|
|
- level = warning
|
|
|
-
|
|
|
- ## Timezone offset to display in logs
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.time_offset
|
|
|
- ## ValueType: system | utc | String
|
|
|
- ## - "system" use system zone
|
|
|
- ## - "utc" for Universal Coordinated Time (UTC)
|
|
|
- ## - "+hh:mm" or "-hh:mm" for a specified offset
|
|
|
- ## Default: system
|
|
|
- time_offset = system
|
|
|
-
|
|
|
- ## Limits the total number of characters printed for each log event.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.chars_limit
|
|
|
- ## ValueType: unlimited | Integer
|
|
|
- ## Range: [0, +Inf)
|
|
|
- ## Default: unlimited
|
|
|
- chars_limit = unlimited
|
|
|
-
|
|
|
- ## Maximum depth for Erlang term log formatting
|
|
|
- ## and Erlang process message queue inspection.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.max_depth
|
|
|
- ## ValueType: unlimited | Integer
|
|
|
- ## Default: 100
|
|
|
- max_depth = 100
|
|
|
-
|
|
|
- ## Log formatter
|
|
|
- ## @doc log.console_handler.<name>.formatter
|
|
|
- ## ValueType: text | json
|
|
|
- ## Default: text
|
|
|
- formatter = text
|
|
|
-
|
|
|
- ## Log to single line
|
|
|
- ## @doc log.console_handler.<name>.single_line
|
|
|
- ## ValueType: Boolean
|
|
|
- ## Default: true
|
|
|
- single_line = true
|
|
|
-
|
|
|
- ## The max allowed queue length before switching to sync mode.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. If the message queue grows
|
|
|
- ## larger than this value the handler switches from anync to sync mode.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.sync_mode_qlen
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [0, ${log.console_handler.<name>.drop_mode_qlen}]
|
|
|
- ## Default: 100
|
|
|
- sync_mode_qlen = 100
|
|
|
-
|
|
|
- ## The max allowed queue length before switching to drop mode.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. When the message queue grows
|
|
|
- ## larger than this threshold, the handler switches to a mode in which
|
|
|
- ## it drops all new events that senders want to log.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.drop_mode_qlen
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [${log.console_handler.<name>.sync_mode_qlen}, ${log.console_handler.<name>.flush_qlen}]
|
|
|
- ## Default: 3000
|
|
|
- drop_mode_qlen = 3000
|
|
|
-
|
|
|
- ## The max allowed queue length before switching to flush mode.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. If the length of the message queue
|
|
|
- ## grows larger than this threshold, a flush (delete) operation takes place.
|
|
|
- ## To flush events, the handler discards the messages in the message queue
|
|
|
- ## by receiving them in a loop without logging.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.flush_qlen
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [${log.console_handler.<name>.drop_mode_qlen}, infinity)
|
|
|
- ## Default: 8000
|
|
|
- flush_qlen = 8000
|
|
|
-
|
|
|
- ## Kill the log handler when it gets overloaded.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. It is possible that a handler,
|
|
|
- ## even if it can successfully manage peaks of high load without crashing,
|
|
|
- ## can build up a large message queue, or use a large amount of memory.
|
|
|
- ## We could kill the log handler in these cases and restart it after a
|
|
|
- ## few seconds.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.overload_kill.enable
|
|
|
- ## ValueType: Boolean
|
|
|
- ## Default: true
|
|
|
- overload_kill.enable = true
|
|
|
-
|
|
|
- ## The max allowed queue length before killing the log handler.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. This is the maximum allowed queue
|
|
|
- ## length. If the message queue grows larger than this, the handler
|
|
|
- ## process is terminated.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.overload_kill.qlen
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [0, 1048576]
|
|
|
- ## Default: 20000
|
|
|
- overload_kill.qlen = 20000
|
|
|
-
|
|
|
- ## The max allowed memory size before killing the log handler.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. This is the maximum memory size
|
|
|
- ## that the handler process is allowed to use. If the handler grows
|
|
|
- ## larger than this, the process is terminated.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.overload_kill.mem_size
|
|
|
- ## ValueType: Size
|
|
|
- ## Default: 30MB
|
|
|
- overload_kill.mem_size = 30MB
|
|
|
-
|
|
|
- ## Restart the log handler after some seconds.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. If the handler is terminated,
|
|
|
- ## it restarts automatically after a delay specified in seconds.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.overload_kill.restart_after
|
|
|
- ## ValueType: Duration
|
|
|
- ## Default: 5s
|
|
|
- overload_kill.restart_after = 5s
|
|
|
-
|
|
|
- ## Controlling Bursts of Log Requests.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. Large bursts of log events - many
|
|
|
- ## events received by the handler under a short period of time - can
|
|
|
- ## potentially cause problems. By specifying the maximum number of events
|
|
|
- ## to be handled within a certain time frame, the handler can avoid
|
|
|
- ## choking the log with massive amounts of printouts.
|
|
|
- ##
|
|
|
- ## Note that there would be no warning if any messages were
|
|
|
- ## dropped because of burst control.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.burst_limit.enable
|
|
|
- ## ValueType: Boolean
|
|
|
- ## Default: false
|
|
|
- burst_limit.enable = false
|
|
|
-
|
|
|
- ## This config controls the maximum number of events to handle within
|
|
|
- ## a time frame. After the limit is reached, successive events are
|
|
|
- ## dropped until the end of the time frame defined by `window_time`.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.burst_limit.max_count
|
|
|
- ## ValueType: Integer
|
|
|
- ## Default: 10000
|
|
|
- burst_limit.max_count = 10000
|
|
|
-
|
|
|
- ## See the previous description of burst_limit_max_count.
|
|
|
- ##
|
|
|
- ## @doc log.console_handler.<name>.burst_limit.window_time
|
|
|
- ## ValueType: duration
|
|
|
- ## Default: 1s
|
|
|
- burst_limit.window_time = 1s
|
|
|
- }
|
|
|
-
|
|
|
- ##----------------------------------------------------------------
|
|
|
- ## The file log handlers send log messages to files
|
|
|
- ##----------------------------------------------------------------
|
|
|
- ## file_handlers.<name>
|
|
|
file_handlers.default {
|
|
|
- enable = true
|
|
|
- ## The log level filter of this handler
|
|
|
- ## All the log messages with levels lower than this level will
|
|
|
- ## be dropped.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.level
|
|
|
- ## ValueType: debug | info | notice | warning | error | critical | alert | emergency
|
|
|
- ## Default: warning
|
|
|
level = warning
|
|
|
-
|
|
|
- ## The log file for specified level.
|
|
|
- ##
|
|
|
- ## If `rotation` is disabled, this is the file of the log files.
|
|
|
- ##
|
|
|
- ## If `rotation` is enabled, this is the base name of the files.
|
|
|
- ## Each file in a rotated log is named <base_name>.N, where N is an integer.
|
|
|
- ##
|
|
|
- ## Note: Log files for a specific log level will only contain all the logs
|
|
|
- ## that higher than or equal to that level
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.file
|
|
|
- ## ValueType: File
|
|
|
- ## Required: true
|
|
|
file = "{{ platform_log_dir }}/emqx.log"
|
|
|
-
|
|
|
- ## Enables the log rotation.
|
|
|
- ## With this enabled, new log files will be created when the current
|
|
|
- ## log file is full, max to `rotation_count` files will be created.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.rotation.enable
|
|
|
- ## ValueType: Boolean
|
|
|
- ## Default: true
|
|
|
- rotation.enable = true
|
|
|
-
|
|
|
- ## Maximum rotation count of log files.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.rotation.count
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [1, 2048]
|
|
|
- ## Default: 10
|
|
|
- rotation.count = 10
|
|
|
-
|
|
|
- ## Maximum size of each log file.
|
|
|
- ##
|
|
|
- ## If the max_size reached and `rotation` is disabled, the handler
|
|
|
- ## will stop sending log messages, if the `rotation` is enabled,
|
|
|
- ## the file rotates.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.max_size
|
|
|
- ## ValueType: Size | infinity
|
|
|
- ## Default: 10MB
|
|
|
- max_size = 10MB
|
|
|
-
|
|
|
- ## Timezone offset to display in logs
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.time_offset
|
|
|
- ## ValueType: system | utc | String
|
|
|
- ## - "system" use system zone
|
|
|
- ## - "utc" for Universal Coordinated Time (UTC)
|
|
|
- ## - "+hh:mm" or "-hh:mm" for a specified offset
|
|
|
- ## Default: system
|
|
|
- time_offset = system
|
|
|
-
|
|
|
- ## Limits the total number of characters printed for each log event.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.chars_limit
|
|
|
- ## ValueType: unlimited | Integer
|
|
|
- ## Range: [0, +Inf)
|
|
|
- ## Default: unlimited
|
|
|
- chars_limit = unlimited
|
|
|
-
|
|
|
- ## Maximum depth for Erlang term log formatting
|
|
|
- ## and Erlang process message queue inspection.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.max_depth
|
|
|
- ## ValueType: unlimited | Integer
|
|
|
- ## Default: 100
|
|
|
- max_depth = 100
|
|
|
-
|
|
|
- ## Log formatter
|
|
|
- ## @doc log.file_handlers.<name>.formatter
|
|
|
- ## ValueType: text | json
|
|
|
- ## Default: text
|
|
|
- formatter = text
|
|
|
-
|
|
|
- ## Log to single line
|
|
|
- ## @doc log.file_handlers.<name>.single_line
|
|
|
- ## ValueType: Boolean
|
|
|
- ## Default: true
|
|
|
- single_line = true
|
|
|
-
|
|
|
- ## The max allowed queue length before switching to sync mode.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. If the message queue grows
|
|
|
- ## larger than this value the handler switches from anync to sync mode.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.sync_mode_qlen
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [0, ${log.file_handlers.<name>.drop_mode_qlen}]
|
|
|
- ## Default: 100
|
|
|
- sync_mode_qlen = 100
|
|
|
-
|
|
|
- ## The max allowed queue length before switching to drop mode.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. When the message queue grows
|
|
|
- ## larger than this threshold, the handler switches to a mode in which
|
|
|
- ## it drops all new events that senders want to log.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.drop_mode_qlen
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [${log.file_handlers.<name>.sync_mode_qlen}, ${log.file_handlers.<name>.flush_qlen}]
|
|
|
- ## Default: 3000
|
|
|
- drop_mode_qlen = 3000
|
|
|
-
|
|
|
- ## The max allowed queue length before switching to flush mode.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. If the length of the message queue
|
|
|
- ## grows larger than this threshold, a flush (delete) operation takes place.
|
|
|
- ## To flush events, the handler discards the messages in the message queue
|
|
|
- ## by receiving them in a loop without logging.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.flush_qlen
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [${log.file_handlers.<name>.drop_mode_qlen}, infinity)
|
|
|
- ## Default: 8000
|
|
|
- flush_qlen = 8000
|
|
|
-
|
|
|
- ## Kill the log handler when it gets overloaded.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. It is possible that a handler,
|
|
|
- ## even if it can successfully manage peaks of high load without crashing,
|
|
|
- ## can build up a large message queue, or use a large amount of memory.
|
|
|
- ## We could kill the log handler in these cases and restart it after a
|
|
|
- ## few seconds.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.overload_kill.enable
|
|
|
- ## ValueType: Boolean
|
|
|
- ## Default: true
|
|
|
- overload_kill.enable = true
|
|
|
-
|
|
|
- ## The max allowed queue length before killing the log handler.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. This is the maximum allowed queue
|
|
|
- ## length. If the message queue grows larger than this, the handler
|
|
|
- ## process is terminated.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.overload_kill.qlen
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [0, 1048576]
|
|
|
- ## Default: 20000
|
|
|
- overload_kill.qlen = 20000
|
|
|
-
|
|
|
- ## The max allowed memory size before killing the log handler.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. This is the maximum memory size
|
|
|
- ## that the handler process is allowed to use. If the handler grows
|
|
|
- ## larger than this, the process is terminated.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.overload_kill.mem_size
|
|
|
- ## ValueType: Size
|
|
|
- ## Default: 30MB
|
|
|
- overload_kill.mem_size = 30MB
|
|
|
-
|
|
|
- ## Restart the log handler after some seconds.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. If the handler is terminated,
|
|
|
- ## it restarts automatically after a delay specified in seconds.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.overload_kill.restart_after
|
|
|
- ## ValueType: Duration
|
|
|
- ## Default: 5s
|
|
|
- overload_kill.restart_after = 5s
|
|
|
-
|
|
|
- ## Controlling Bursts of Log Requests.
|
|
|
- ##
|
|
|
- ## Log overload protection parameter. Large bursts of log events - many
|
|
|
- ## events received by the handler under a short period of time - can
|
|
|
- ## potentially cause problems. By specifying the maximum number of events
|
|
|
- ## to be handled within a certain time frame, the handler can avoid
|
|
|
- ## choking the log with massive amounts of printouts.
|
|
|
- ##
|
|
|
- ## Note that there would be no warning if any messages were
|
|
|
- ## dropped because of burst control.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.burst_limit.enable
|
|
|
- ## ValueType: Boolean
|
|
|
- ## Default: false
|
|
|
- burst_limit.enable = false
|
|
|
-
|
|
|
- ## This config controls the maximum number of events to handle within
|
|
|
- ## a time frame. After the limit is reached, successive events are
|
|
|
- ## dropped until the end of the time frame defined by `window_time`.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.burst_limit.max_count
|
|
|
- ## ValueType: Integer
|
|
|
- ## Default: 10000
|
|
|
- burst_limit.max_count = 10000
|
|
|
-
|
|
|
- ## See the previous description of burst_limit_max_count.
|
|
|
- ##
|
|
|
- ## @doc log.file_handlers.<name>.burst_limit.window_time
|
|
|
- ## ValueType: duration
|
|
|
- ## Default: 1s
|
|
|
- burst_limit.window_time = 1s
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-##==================================================================
|
|
|
-## RPC
|
|
|
-##==================================================================
|
|
|
-rpc {
|
|
|
- ## RPC Mode.
|
|
|
- ##
|
|
|
- ## @doc rpc.mode
|
|
|
- ## ValueType: sync | async
|
|
|
- ## Default: async
|
|
|
- mode = async
|
|
|
-
|
|
|
- ## Max batch size of async RPC requests.
|
|
|
- ##
|
|
|
- ## NOTE: RPC batch won't work when rpc.mode = sync
|
|
|
- ## Zero value disables rpc batching.
|
|
|
- ##
|
|
|
- ## @doc rpc.async_batch_size
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [0, 1048576]
|
|
|
- ## Default: 0
|
|
|
- async_batch_size = 256
|
|
|
-
|
|
|
- ## RPC port discovery
|
|
|
- ##
|
|
|
- ## The strategy for discovering the RPC listening port of
|
|
|
- ## other nodes.
|
|
|
- ##
|
|
|
- ## @doc cluster.discovery_strategy
|
|
|
- ## ValueType: manual | stateless
|
|
|
- ## - manual: discover ports by `tcp_server_port`.
|
|
|
- ## - stateless: discover ports in a stateless manner.
|
|
|
- ## If node name is `emqx<N>@127.0.0.1`, where the `<N>` is
|
|
|
- ## an integer, then the listening port will be `5370 + <N>`
|
|
|
- ##
|
|
|
- ## Default: `stateless`.
|
|
|
- port_discovery = stateless
|
|
|
-
|
|
|
- ## TCP server port for RPC.
|
|
|
- ##
|
|
|
- ## Only takes effect when `rpc.port_discovery` = `manual`.
|
|
|
- ##
|
|
|
- ## @doc rpc.tcp_server_port
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [1024-65535]
|
|
|
- ## Defaults: 5369
|
|
|
- tcp_server_port = 5369
|
|
|
-
|
|
|
- ## Number of outgoing RPC connections.
|
|
|
- ##
|
|
|
- ## Set this to 1 to keep the message order sent from the same
|
|
|
- ## client.
|
|
|
- ##
|
|
|
- ## @doc rpc.tcp_client_num
|
|
|
- ## ValueType: Integer
|
|
|
- ## Range: [1, 256]
|
|
|
- ## Defaults: 10
|
|
|
- tcp_client_num = 10
|
|
|
-
|
|
|
- ## RCP Client connect timeout.
|
|
|
- ##
|
|
|
- ## @doc rpc.connect_timeout
|
|
|
- ## ValueType: Duration
|
|
|
- ## Default: 5s
|
|
|
- connect_timeout = 5s
|
|
|
-
|
|
|
- ## TCP send timeout of RPC client and server.
|
|
|
- ##
|
|
|
- ## @doc rpc.send_timeout
|
|
|
- ## ValueType: Duration
|
|
|
- ## Default: 5s
|
|
|
- send_timeout = 5s
|
|
|
-
|
|
|
- ## Authentication timeout
|
|
|
- ##
|
|
|
- ## @doc rpc.authentication_timeout
|
|
|
- ## ValueType: Duration
|
|
|
- ## Default: 5s
|
|
|
- authentication_timeout = 5s
|
|
|
-
|
|
|
- ## Default receive timeout for call() functions
|
|
|
- ##
|
|
|
- ## @doc rpc.call_receive_timeout
|
|
|
- ## ValueType: Duration
|
|
|
- ## Default: 15s
|
|
|
- call_receive_timeout = 15s
|
|
|
-
|
|
|
- ## Socket idle keepalive.
|
|
|
- ##
|
|
|
- ## @doc rpc.socket_keepalive_idle
|
|
|
- ## ValueType: Duration
|
|
|
- ## Default: 900s
|
|
|
- socket_keepalive_idle = 900s
|
|
|
-
|
|
|
- ## TCP Keepalive probes interval.
|
|
|
- ##
|
|
|
- ## @doc rpc.socket_keepalive_interval
|
|
|
- ## ValueType: Duration
|
|
|
- ## Default: 75s
|
|
|
- socket_keepalive_interval = 75s
|
|
|
-
|
|
|
- ## Probes lost to close the connection
|
|
|
- ##
|
|
|
- ## @doc rpc.socket_keepalive_count
|
|
|
- ## ValueType: Integer
|
|
|
- ## Default: 9
|
|
|
- socket_keepalive_count = 9
|
|
|
-
|
|
|
- ## Size of TCP send buffer.
|
|
|
- ##
|
|
|
- ## @doc rpc.socket_sndbuf
|
|
|
- ## ValueType: Size
|
|
|
- ## Default: 1MB
|
|
|
- socket_sndbuf = 1MB
|
|
|
-
|
|
|
- ## Size of TCP receive buffer.
|
|
|
- ##
|
|
|
- ## @doc rpc.socket_recbuf
|
|
|
- ## ValueType: Size
|
|
|
- ## Default: 1MB
|
|
|
- socket_recbuf = 1MB
|
|
|
-
|
|
|
- ## Size of user-level software socket buffer.
|
|
|
- ##
|
|
|
- ## @doc rpc.socket_buffer
|
|
|
- ## ValueType: Size
|
|
|
- ## Default: 1MB
|
|
|
- socket_buffer = 1MB
|
|
|
+cluster {
|
|
|
+ name = emqxcl
|
|
|
+ discovery_strategy = manual
|
|
|
}
|