{"version":1,"pages":[{"id":"-LOvr-CRRoge5fxV03p1","title":"Welcome","pathname":"/1.7.1","siteSpaceId":"sitesp_QaaOa","description":""},{"id":"-LOvws2k4Hbx6k13zsNs","title":"Getting Started","pathname":"/1.7.1/getting-started","siteSpaceId":"sitesp_QaaOa","description":"A quick and simple guide to get started with VerneMQ"},{"id":"-LOw3DaRMVmKnOEtxPBV","title":"Installing on Debian and Ubuntu","pathname":"/1.7.1/installation/debian_and_ubuntu","siteSpaceId":"sitesp_QaaOa","description":"VerneMQ can be installed on Debian or Ubuntu-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-LOw3aEoG2bTYk4NIJo7","title":"Installing on CentOS and RHEL","pathname":"/1.7.1/installation/centos_and_redhat","siteSpaceId":"sitesp_QaaOa","description":"VerneMQ can be installed on CentOS-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-LOw5G7noeY-4iqOBnfW","title":"Running VerneMQ using Docker","pathname":"/1.7.1/installation/docker","siteSpaceId":"sitesp_QaaOa","description":"As well as being available as packages that can be installed directly into the operating systems, VerneMQ is also available as a Docker image. Below is an example of how to set up a couple of VerneMQ","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-LOwiLF7OuN3KvoeY0U4","title":"Introduction","pathname":"/1.7.1/configuration/introduction","siteSpaceId":"sitesp_QaaOa","description":"Everything you must know to properly configure VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw5nBlmXV6EMZlDmmg","title":"Auth using files","pathname":"/1.7.1/configuration/file-auth","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw6boJztHe4K1dVyIZ","title":"Auth using a database","pathname":"/1.7.1/configuration/db-auth","siteSpaceId":"sitesp_QaaOa","description":"VerneMQ supports multiple ways to authenticate and authorize new client connections using a database.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw7NYlU5xPxlp95fWh","title":"MQTT Options","pathname":"/1.7.1/configuration/options","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw7hr2aaDWd65BdYm1","title":"MQTT Listeners","pathname":"/1.7.1/configuration/listeners","siteSpaceId":"sitesp_QaaOa","description":"VerneMQ supports multiple ways to configure one or many MQTT listeners.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw8Cr7zngTvIMI9GKE","title":"HTTP Listeners","pathname":"/1.7.1/configuration/http-listeners","siteSpaceId":"sitesp_QaaOa","description":"How to setup and configure the HTTP listener.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw8W_lav0HPVwg3QPo","title":"Non-standard MQTT options","pathname":"/1.7.1/configuration/nonstandard","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw8rU7T0GU4hgy7UUA","title":"Websockets","pathname":"/1.7.1/configuration/websockets","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw9CizhjPAWvZWM5BE","title":"Logging","pathname":"/1.7.1/configuration/logging","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw9Lon0z5p3TrbTPXp","title":"Consumer session balancing","pathname":"/1.7.1/configuration/balancing","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw9ilm3TpL4UkqB70n","title":"Plugins","pathname":"/1.7.1/configuration/plugins","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw9yRRVOD0uCR3oWbe","title":"Shared subscriptions","pathname":"/1.7.1/configuration/shared_subscriptions","siteSpaceId":"sitesp_QaaOa","description":"Working with shared subscriptions","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOwACp8uLG57EOyFq8j","title":"Advanced Options","pathname":"/1.7.1/configuration/advanced_options","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOwATeBb_4XokdU6iaK","title":"Storage","pathname":"/1.7.1/configuration/storage","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOx1iR-SJNw8pLUa8T1","title":"MQTT Bridge","pathname":"/1.7.1/configuration/bridge","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOwBRp9exyE9TX3h6ks","title":"Introduction","pathname":"/1.7.1/clustering/introduction","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-LOwC_wO8WnU89NGjWkm","title":"Inter-node Communication","pathname":"/1.7.1/clustering/communication","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-LOwCoFb6NsI2AzuOwCL","title":"Dealing with Netsplits","pathname":"/1.7.1/clustering/netsplits","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-LOwebpojP9fy5maPMEB","title":"Introduction","pathname":"/1.7.1/administration/introduction","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LY0WnogrHG-h1DeJqLN","title":"Inspecting and managing sessions","pathname":"/1.7.1/administration/managing-sessions","siteSpaceId":"sitesp_QaaOa","description":"Inspecting and managing MQTT sessions","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LY231gnkja-hveiPJJF","title":"Retained messages","pathname":"/1.7.1/administration/retained-store","siteSpaceId":"sitesp_QaaOa","description":"Inspecting the retained message store","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LOwfNJPUwf9RJVRfMFL","title":"Live reconfiguration","pathname":"/1.7.1/administration/config_values","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LOwg25QurmOL0K_dUoR","title":"Managing Listeners","pathname":"/1.7.1/administration/listeners","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LOwgRE9F7U2wFkHt_dn","title":"HTTP API","pathname":"/1.7.1/administration/http-administration","siteSpaceId":"sitesp_QaaOa","description":"Everything you need to know to work with the VerneMQ HTTP administration interface","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LRwAs4z_RyX4ab4Ve7X","title":"Tracing","pathname":"/1.7.1/administration/tracing","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LOwYy-8Z_mlUEfzOVCP","title":"Introduction","pathname":"/1.7.1/monitoring/introduction","siteSpaceId":"sitesp_QaaOa","description":"Description and Configuration of the built-in Monitoring mechanism","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZ-MSx3-rcir62mQY","title":"$SYSTree","pathname":"/1.7.1/monitoring/systree","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZlRA4RrvLvKR121r","title":"Graphite","pathname":"/1.7.1/monitoring/graphite","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_4Mpj4WC9_2HS2mK","title":"Prometheus","pathname":"/1.7.1/monitoring/prometheus","siteSpaceId":"sitesp_QaaOa","description":"Description and Configuration of the Prometheus exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4GUqcyH9bgZrP1","title":"Health Checker","pathname":"/1.7.1/monitoring/health-check","siteSpaceId":"sitesp_QaaOa","description":"The VerneMQ health checker","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4H-koFHrIJh_Fo","title":"Status Page","pathname":"/1.7.1/monitoring/status","siteSpaceId":"sitesp_QaaOa","description":"The VerneMQ status page","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_Z3Ep_-FQxREAOx3","title":"Introduction","pathname":"/1.7.1/plugindevelopment/introduction","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuKxv46KBSOjFnlk","title":"Session lifecycle","pathname":"/1.7.1/plugindevelopment/sessionlifecycle","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuKyNeGRoMV28-e3","title":"Subscribe Flow","pathname":"/1.7.1/plugindevelopment/subscribeflow","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuKzHXZiuWa0EJRU","title":"Publish Flow","pathname":"/1.7.1/plugindevelopment/publishflow","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQhdiH65oDovBdCm8JF","title":"Enhanced Auth Flow","pathname":"/1.7.1/plugindevelopment/enhancedauthflow","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuL05YHfHzrQeyMV","title":"Erlang Boilerplate","pathname":"/1.7.1/plugindevelopment/boilerplate","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuL1U5XWWWJjCrJ8","title":"Lua Scripting Support","pathname":"/1.7.1/plugindevelopment/luaplugins","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuL2odvH8UxjaAw-","title":"Webhooks","pathname":"/1.7.1/plugindevelopment/webhookplugins","siteSpaceId":"sitesp_QaaOa","description":"How to implement VerneMQ plugins using a HTTP interface","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LOw34pLBLrosNIqLnGB","title":"Loadtesting VerneMQ","pathname":"/1.7.1/misc/loadtesting","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Misc"}]},{"id":"-LOwi0EWebrkgoJySuh7","title":"Not a tuning guide","pathname":"/1.7.1/misc/not-a-tuning-guide","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Misc"}]},{"id":"-LOwjE-zPylHQlvnKhiE","title":"Change Open File Limits","pathname":"/1.7.1/misc/change-open-file-limits","siteSpaceId":"sitesp_QaaOa","description":"","breadcrumbs":[{"label":"Misc"}]},{"id":"-LOvr-CRRoge5fxV03p1","title":"Welcome","pathname":"/1.8.0","siteSpaceId":"sitesp_RQQmP","description":""},{"id":"-LOvws2k4Hbx6k13zsNs","title":"Getting Started","pathname":"/1.8.0/getting-started","siteSpaceId":"sitesp_RQQmP","description":"A quick and simple guide to get started with VerneMQ"},{"id":"-LOw3DaRMVmKnOEtxPBV","title":"Installing on Debian and Ubuntu","pathname":"/1.8.0/installation/debian_and_ubuntu","siteSpaceId":"sitesp_RQQmP","description":"VerneMQ can be installed on Debian or Ubuntu-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOw3aEoG2bTYk4NIJo7","title":"Installing on CentOS and RHEL","pathname":"/1.8.0/installation/centos_and_redhat","siteSpaceId":"sitesp_RQQmP","description":"VerneMQ can be installed on CentOS-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOw5G7noeY-4iqOBnfW","title":"Running VerneMQ using Docker","pathname":"/1.8.0/installation/docker","siteSpaceId":"sitesp_RQQmP","description":"As well as being available as packages that can be installed directly into the operating systems, VerneMQ is also available as a Docker image. Below is an example of how to set up a couple of VerneMQ","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOwiLF7OuN3KvoeY0U4","title":"Introduction","pathname":"/1.8.0/configuration/introduction","siteSpaceId":"sitesp_RQQmP","description":"Everything you must know to properly configure VerneMQ","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw5nBlmXV6EMZlDmmg","title":"Auth using files","pathname":"/1.8.0/configuration/file-auth","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw6boJztHe4K1dVyIZ","title":"Auth using a database","pathname":"/1.8.0/configuration/db-auth","siteSpaceId":"sitesp_RQQmP","description":"VerneMQ supports multiple ways to authenticate and authorize new client connections using a database.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw7NYlU5xPxlp95fWh","title":"MQTT Options","pathname":"/1.8.0/configuration/options","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw7hr2aaDWd65BdYm1","title":"MQTT Listeners","pathname":"/1.8.0/configuration/listeners","siteSpaceId":"sitesp_RQQmP","description":"VerneMQ supports multiple ways to configure one or many MQTT listeners.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8Cr7zngTvIMI9GKE","title":"HTTP Listeners","pathname":"/1.8.0/configuration/http-listeners","siteSpaceId":"sitesp_RQQmP","description":"How to setup and configure the HTTP listener.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8W_lav0HPVwg3QPo","title":"Non-standard MQTT options","pathname":"/1.8.0/configuration/nonstandard","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8rU7T0GU4hgy7UUA","title":"Websockets","pathname":"/1.8.0/configuration/websockets","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9CizhjPAWvZWM5BE","title":"Logging","pathname":"/1.8.0/configuration/logging","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9Lon0z5p3TrbTPXp","title":"Consumer session balancing","pathname":"/1.8.0/configuration/balancing","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9ilm3TpL4UkqB70n","title":"Plugins","pathname":"/1.8.0/configuration/plugins","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-Lh49Ex89Z92NYiGE5z0","title":"Shared subscriptions","pathname":"/1.8.0/configuration/shared_subscriptions","siteSpaceId":"sitesp_RQQmP","description":"Working with shared subscriptions","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwACp8uLG57EOyFq8j","title":"Advanced Options","pathname":"/1.8.0/configuration/advanced_options","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwATeBb_4XokdU6iaK","title":"Storage","pathname":"/1.8.0/configuration/storage","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOx1iR-SJNw8pLUa8T1","title":"MQTT Bridge","pathname":"/1.8.0/configuration/bridge","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwBRp9exyE9TX3h6ks","title":"Introduction","pathname":"/1.8.0/clustering/introduction","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwC_wO8WnU89NGjWkm","title":"Inter-node Communication","pathname":"/1.8.0/clustering/communication","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwCoFb6NsI2AzuOwCL","title":"Dealing with Netsplits","pathname":"/1.8.0/clustering/netsplits","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwebpojP9fy5maPMEB","title":"Introduction","pathname":"/1.8.0/administration/introduction","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LY0WnogrHG-h1DeJqLN","title":"Inspecting and managing sessions","pathname":"/1.8.0/administration/managing-sessions","siteSpaceId":"sitesp_RQQmP","description":"Inspecting and managing MQTT sessions","breadcrumbs":[{"label":"Administration"}]},{"id":"-LY231gnkja-hveiPJJF","title":"Retained messages","pathname":"/1.8.0/administration/retained-store","siteSpaceId":"sitesp_RQQmP","description":"Inspecting the retained message store","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwfNJPUwf9RJVRfMFL","title":"Live reconfiguration","pathname":"/1.8.0/administration/config_values","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwg25QurmOL0K_dUoR","title":"Managing Listeners","pathname":"/1.8.0/administration/listeners","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwgRE9F7U2wFkHt_dn","title":"HTTP API","pathname":"/1.8.0/administration/http-administration","siteSpaceId":"sitesp_RQQmP","description":"Everything you need to know to work with the VerneMQ HTTP administration interface","breadcrumbs":[{"label":"Administration"}]},{"id":"-LRwAs4z_RyX4ab4Ve7X","title":"Tracing","pathname":"/1.8.0/administration/tracing","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwYy-8Z_mlUEfzOVCP","title":"Introduction","pathname":"/1.8.0/monitoring/introduction","siteSpaceId":"sitesp_RQQmP","description":"Description and Configuration of the built-in Monitoring mechanism","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZ-MSx3-rcir62mQY","title":"$SYSTree","pathname":"/1.8.0/monitoring/systree","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZlRA4RrvLvKR121r","title":"Graphite","pathname":"/1.8.0/monitoring/graphite","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_4Mpj4WC9_2HS2mK","title":"Prometheus","pathname":"/1.8.0/monitoring/prometheus","siteSpaceId":"sitesp_RQQmP","description":"Description and Configuration of the Prometheus exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4GUqcyH9bgZrP1","title":"Health Checker","pathname":"/1.8.0/monitoring/health-check","siteSpaceId":"sitesp_RQQmP","description":"The VerneMQ health checker","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4H-koFHrIJh_Fo","title":"Status Page","pathname":"/1.8.0/monitoring/status","siteSpaceId":"sitesp_RQQmP","description":"The VerneMQ status page","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_Z3Ep_-FQxREAOx3","title":"Introduction","pathname":"/1.8.0/plugindevelopment/introduction","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKxv46KBSOjFnlk","title":"Session lifecycle","pathname":"/1.8.0/plugindevelopment/sessionlifecycle","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKyNeGRoMV28-e3","title":"Subscribe Flow","pathname":"/1.8.0/plugindevelopment/subscribeflow","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKzHXZiuWa0EJRU","title":"Publish Flow","pathname":"/1.8.0/plugindevelopment/publishflow","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQhdiH65oDovBdCm8JF","title":"Enhanced Auth Flow","pathname":"/1.8.0/plugindevelopment/enhancedauthflow","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL05YHfHzrQeyMV","title":"Erlang Boilerplate","pathname":"/1.8.0/plugindevelopment/boilerplate","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL1U5XWWWJjCrJ8","title":"Lua Scripting Support","pathname":"/1.8.0/plugindevelopment/luaplugins","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL2odvH8UxjaAw-","title":"Webhooks","pathname":"/1.8.0/plugindevelopment/webhookplugins","siteSpaceId":"sitesp_RQQmP","description":"How to implement VerneMQ plugins using a HTTP interface","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-Lf3pNmzjPos3MOW3DQe","title":"A typical VerneMQ deployment","pathname":"/1.8.0/guides/typical-vernemq-deployment","siteSpaceId":"sitesp_RQQmP","description":"In the following we describe how a typical VerneMQ deployment can look and some of the concerns one have to take into account when designing such a system.","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lf46bArrMpfMvISumEg","title":"VerneMQ on Kubernetes","pathname":"/1.8.0/guides/vernemq-on-kubernetes","siteSpaceId":"sitesp_RQQmP","description":"This guide describes how to deploy a VerneMQ cluster on Kubernetes","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOw34pLBLrosNIqLnGB","title":"Loadtesting VerneMQ","pathname":"/1.8.0/guides/loadtesting","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lg1lgfVWb3yOAjYWv6X","title":"Clustering during development","pathname":"/1.8.0/guides/clustering-during-development","siteSpaceId":"sitesp_RQQmP","description":"This describes a quick way to create a VerneMQ cluster on developer's machines","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOwi0EWebrkgoJySuh7","title":"Not a tuning guide","pathname":"/1.8.0/guides/not-a-tuning-guide","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOwjE-zPylHQlvnKhiE","title":"Change Open File Limits","pathname":"/1.8.0/guides/change-open-file-limits","siteSpaceId":"sitesp_RQQmP","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"4uX4Yx5e0rVzlRVEyJY6","title":"Welcome","pathname":"/1.12.3","siteSpaceId":"sitesp_oiijc","description":""},{"id":"-LOvws2k4Hbx6k13zsNs","title":"Getting Started","pathname":"/1.12.3/getting-started","siteSpaceId":"sitesp_oiijc","description":"A quick and simple guide to get started with VerneMQ"},{"id":"-Mjz-HhXxt6xgFvYmg7O","title":"Installing on Debian and Ubuntu","pathname":"/1.12.3/installing-vernemq/debian_and_ubuntu","siteSpaceId":"sitesp_oiijc","description":"VerneMQ can be installed on Debian or Ubuntu-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-Mjz-HhYA0be_knur2Hx","title":"Installing on CentOS and RHEL","pathname":"/1.12.3/installing-vernemq/centos_and_redhat","siteSpaceId":"sitesp_oiijc","description":"VerneMQ can be installed on CentOS-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-Mjz-HhZ1d4CwJUyeDEk","title":"Running VerneMQ using Docker","pathname":"/1.12.3/installing-vernemq/docker","siteSpaceId":"sitesp_oiijc","description":"As well as being available as packages that can be installed directly into the operating systems, VerneMQ is also available as a Docker image. Below is an example of how to set up a couple of VerneMQ","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"gvwRFG7V6fAwmmTTU8gw","title":"Introduction","pathname":"/1.12.3/configuring-vernemq/introduction","siteSpaceId":"sitesp_oiijc","description":"Everything you must know to properly configure VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"KXIAz2TjZ0dWE4VEJuP8","title":"The VerneMQ conf file","pathname":"/1.12.3/configuring-vernemq/the-vernemq-conf-file","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhcE71fNvKZm7zh","title":"Auth using files","pathname":"/1.12.3/configuring-vernemq/file-auth","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-Hhd8iS-Fkv70uyj","title":"Auth using a database","pathname":"/1.12.3/configuring-vernemq/db-auth","siteSpaceId":"sitesp_oiijc","description":"VerneMQ supports multiple ways to authenticate and authorize new client connections using a database.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw7NYlU5xPxlp95fWh","title":"MQTT Options","pathname":"/1.12.3/configuring-vernemq/options","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhfwvPWUHFLVzq3","title":"MQTT Listeners","pathname":"/1.12.3/configuring-vernemq/listeners","siteSpaceId":"sitesp_oiijc","description":"VerneMQ supports multiple ways to configure one or many MQTT listeners.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhgzrREKBJlJlle","title":"HTTP Listeners","pathname":"/1.12.3/configuring-vernemq/http-listeners","siteSpaceId":"sitesp_oiijc","description":"How to setup and configure the HTTP listener.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhheQ0iI9bcvWI5","title":"Non-standard MQTT options","pathname":"/1.12.3/configuring-vernemq/nonstandard","siteSpaceId":"sitesp_oiijc","description":"Configure Non-Standard MQTT Options VerneMQ Supports.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw8rU7T0GU4hgy7UUA","title":"Websockets","pathname":"/1.12.3/configuring-vernemq/websockets","siteSpaceId":"sitesp_oiijc","description":"Configure WebSocket Listeners for VerneMQ.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw9CizhjPAWvZWM5BE","title":"Logging","pathname":"/1.12.3/configuring-vernemq/logging","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhkCmTfldx42Exf","title":"Consumer session balancing","pathname":"/1.12.3/configuring-vernemq/balancing","siteSpaceId":"sitesp_oiijc","description":"MQTT consumers can share and loadbalance a topic subscription.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw9ilm3TpL4UkqB70n","title":"Plugins","pathname":"/1.12.3/configuring-vernemq/plugins","siteSpaceId":"sitesp_oiijc","description":"Managing VerneMQ Plugins","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhmfxJFy6TXEQrY","title":"Shared subscriptions","pathname":"/1.12.3/configuring-vernemq/shared_subscriptions","siteSpaceId":"sitesp_oiijc","description":"Working with shared subscriptions","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOwACp8uLG57EOyFq8j","title":"Advanced Options","pathname":"/1.12.3/configuring-vernemq/advanced_options","siteSpaceId":"sitesp_oiijc","description":"Configure a couple of hidden options for VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhoNEz0SRgEZ-cu","title":"Storage","pathname":"/1.12.3/configuring-vernemq/storage","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOx1iR-SJNw8pLUa8T1","title":"MQTT Bridge","pathname":"/1.12.3/configuring-vernemq/bridge","siteSpaceId":"sitesp_oiijc","description":"VerneMQ can interface with other brokers (and itself) via MQTT bridges.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-Hhstc2-2dxf_8tD","title":"Introduction","pathname":"/1.12.3/vernemq-clustering/introduction","siteSpaceId":"sitesp_oiijc","description":"Everything you must know to properly configure and deploy a VerneMQ Cluster","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-LOwC_wO8WnU89NGjWkm","title":"Inter-node Communication","pathname":"/1.12.3/vernemq-clustering/communication","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-Mjz-Hhu5u2tSMpTyOO-","title":"Dealing with Netsplits","pathname":"/1.12.3/vernemq-clustering/netsplits","siteSpaceId":"sitesp_oiijc","description":"How does VerneMQ deals with Network Partitions aka. Netsplits.","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-Mjz-HhxZo4NQ4rok7md","title":"Introduction","pathname":"/1.12.3/live-administration/introduction","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LY0WnogrHG-h1DeJqLN","title":"Inspecting and managing sessions","pathname":"/1.12.3/live-administration/managing-sessions","siteSpaceId":"sitesp_oiijc","description":"Inspecting and managing MQTT sessions","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LY231gnkja-hveiPJJF","title":"Retained messages","pathname":"/1.12.3/live-administration/retained-store","siteSpaceId":"sitesp_oiijc","description":"Inspecting the retained message store","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Mjz-Hi-RxuZIdZ_PC2l","title":"Live reconfiguration","pathname":"/1.12.3/live-administration/config_values","siteSpaceId":"sitesp_oiijc","description":"Managing VerneMQ live config values.","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LOwg25QurmOL0K_dUoR","title":"Managing Listeners","pathname":"/1.12.3/live-administration/listeners","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Mjz-Hi1F3T47vqeszQ7","title":"HTTP API","pathname":"/1.12.3/live-administration/http-administration","siteSpaceId":"sitesp_oiijc","description":"Everything you need to know to work with the VerneMQ HTTP administration interface","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LRwAs4z_RyX4ab4Ve7X","title":"Tracing","pathname":"/1.12.3/live-administration/tracing","siteSpaceId":"sitesp_oiijc","description":"Real-time inspection","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LOwYy-8Z_mlUEfzOVCP","title":"Introduction","pathname":"/1.12.3/monitoring/introduction","siteSpaceId":"sitesp_oiijc","description":"Description and Configuration of the built-in Monitoring mechanism","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZ-MSx3-rcir62mQY","title":"$SYSTree","pathname":"/1.12.3/monitoring/systree","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZlRA4RrvLvKR121r","title":"Graphite","pathname":"/1.12.3/monitoring/graphite","siteSpaceId":"sitesp_oiijc","description":"Description and Configuration of the Graphite exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"kK0TzSMDafZISF5fouRp","title":"Netdata","pathname":"/1.12.3/monitoring/netdata","siteSpaceId":"sitesp_oiijc","description":"Netdata Metrics","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_4Mpj4WC9_2HS2mK","title":"Prometheus","pathname":"/1.12.3/monitoring/prometheus","siteSpaceId":"sitesp_oiijc","description":"Description and Configuration of the Prometheus exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4GUqcyH9bgZrP1","title":"Health Checker","pathname":"/1.12.3/monitoring/health-check","siteSpaceId":"sitesp_oiijc","description":"The VerneMQ health checker","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4H-koFHrIJh_Fo","title":"Status Page","pathname":"/1.12.3/monitoring/status","siteSpaceId":"sitesp_oiijc","description":"The VerneMQ Status Page","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_Z3Ep_-FQxREAOx3","title":"Introduction","pathname":"/1.12.3/plugin-development/introduction","siteSpaceId":"sitesp_oiijc","description":"Learn how to implement VerneMQ Plugins for customizing many aspects of  how VerneMQ deals with client connections, subscriptions, and message flows.","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Mjz-HiEtopgTK9uv-YZ","title":"Session lifecycle","pathname":"/1.12.3/plugin-development/sessionlifecycle","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuKyNeGRoMV28-e3","title":"Subscribe Flow","pathname":"/1.12.3/plugin-development/subscribeflow","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuKzHXZiuWa0EJRU","title":"Publish Flow","pathname":"/1.12.3/plugin-development/publishflow","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQhdiH65oDovBdCm8JF","title":"Enhanced Auth Flow","pathname":"/1.12.3/plugin-development/enhancedauthflow","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuL05YHfHzrQeyMV","title":"Erlang Boilerplate","pathname":"/1.12.3/plugin-development/boilerplate","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Mjz-HiJV6mdtPpibNXS","title":"Lua Scripting Support","pathname":"/1.12.3/plugin-development/luaplugins","siteSpaceId":"sitesp_oiijc","description":"Learn how to implement VerneMQ plugins using the Lua Scripting Language.","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Mjz-HiKIytf4y2Y9Rs0","title":"Webhooks","pathname":"/1.12.3/plugin-development/webhookplugins","siteSpaceId":"sitesp_oiijc","description":"How to implement VerneMQ plugins using a HTTP/HTTPS interface","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LOw34pLBLrosNIqLnGB","title":"Loadtesting VerneMQ","pathname":"/1.12.3/misc/loadtesting","siteSpaceId":"sitesp_oiijc","description":"Loadtesting VerneMQ with vmq_mzbench","breadcrumbs":[{"label":"Misc"}]},{"id":"-Mjz-HiOxUxtmF-_o9Yh","title":"Not a tuning guide","pathname":"/1.12.3/misc/not-a-tuning-guide","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Misc"}]},{"id":"-LOwjE-zPylHQlvnKhiE","title":"Change Open File Limits","pathname":"/1.12.3/misc/change-open-file-limits","siteSpaceId":"sitesp_oiijc","description":"How to change the open file limits","breadcrumbs":[{"label":"Misc"}]},{"id":"hfJGpkFtww8dx0WpCTIM","title":"A typical VerneMQ deployment","pathname":"/1.12.3/guides/typical-vernemq-deployment","siteSpaceId":"sitesp_oiijc","description":"In the following we describe how a typical VerneMQ deployment can look and some of the concerns one have to take into account when designing such a system.","breadcrumbs":[{"label":"Guides"}]},{"id":"puJ0I7mQABGg3t0mEfW0","title":"VerneMQ on Kubernetes","pathname":"/1.12.3/guides/vernemq-on-kubernetes","siteSpaceId":"sitesp_oiijc","description":"This guide describes how to deploy a VerneMQ cluster on Kubernetes","breadcrumbs":[{"label":"Guides"}]},{"id":"rir5iwOhtlTdYu2qbrxd","title":"Loadtesting VerneMQ","pathname":"/1.12.3/guides/loadtesting","siteSpaceId":"sitesp_oiijc","description":"Loadtesting VerneMQ with vmq_mzbench","breadcrumbs":[{"label":"Guides"}]},{"id":"IQLZxooJ60looszfvBAi","title":"Clustering during development","pathname":"/1.12.3/guides/clustering-during-development","siteSpaceId":"sitesp_oiijc","description":"This describes a quick way to create a VerneMQ cluster on developer's machines","breadcrumbs":[{"label":"Guides"}]},{"id":"70tQDhbz7i50vN2w8Zky","title":"Not a tuning guide","pathname":"/1.12.3/guides/not-a-tuning-guide","siteSpaceId":"sitesp_oiijc","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"YVg2PM3pA5NzeKRcHgeu","title":"Change Open File Limits","pathname":"/1.12.3/guides/change-open-file-limits","siteSpaceId":"sitesp_oiijc","description":"A guide that shows how to change the open file limtits","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOvr-CRRoge5fxV03p1","title":"Welcome","pathname":"/1.9.0","siteSpaceId":"sitesp_VTTLj","description":""},{"id":"-LOvws2k4Hbx6k13zsNs","title":"Getting Started","pathname":"/1.9.0/getting-started","siteSpaceId":"sitesp_VTTLj","description":"A quick and simple guide to get started with VerneMQ"},{"id":"-LOw3DaRMVmKnOEtxPBV","title":"Installing on Debian and Ubuntu","pathname":"/1.9.0/installation/debian_and_ubuntu","siteSpaceId":"sitesp_VTTLj","description":"VerneMQ can be installed on Debian or Ubuntu-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOw3aEoG2bTYk4NIJo7","title":"Installing on CentOS and RHEL","pathname":"/1.9.0/installation/centos_and_redhat","siteSpaceId":"sitesp_VTTLj","description":"VerneMQ can be installed on CentOS-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOw5G7noeY-4iqOBnfW","title":"Running VerneMQ using Docker","pathname":"/1.9.0/installation/docker","siteSpaceId":"sitesp_VTTLj","description":"As well as being available as packages that can be installed directly into the operating systems, VerneMQ is also available as a Docker image. Below is an example of how to set up a couple of VerneMQ","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOwiLF7OuN3KvoeY0U4","title":"Introduction","pathname":"/1.9.0/configuration/introduction","siteSpaceId":"sitesp_VTTLj","description":"Everything you must know to properly configure VerneMQ","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw5nBlmXV6EMZlDmmg","title":"Auth using files","pathname":"/1.9.0/configuration/file-auth","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw6boJztHe4K1dVyIZ","title":"Auth using a database","pathname":"/1.9.0/configuration/db-auth","siteSpaceId":"sitesp_VTTLj","description":"VerneMQ supports multiple ways to authenticate and authorize new client connections using a database.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw7NYlU5xPxlp95fWh","title":"MQTT Options","pathname":"/1.9.0/configuration/options","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw7hr2aaDWd65BdYm1","title":"MQTT Listeners","pathname":"/1.9.0/configuration/listeners","siteSpaceId":"sitesp_VTTLj","description":"VerneMQ supports multiple ways to configure one or many MQTT listeners.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8Cr7zngTvIMI9GKE","title":"HTTP Listeners","pathname":"/1.9.0/configuration/http-listeners","siteSpaceId":"sitesp_VTTLj","description":"How to setup and configure the HTTP listener.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8W_lav0HPVwg3QPo","title":"Non-standard MQTT options","pathname":"/1.9.0/configuration/nonstandard","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8rU7T0GU4hgy7UUA","title":"Websockets","pathname":"/1.9.0/configuration/websockets","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9CizhjPAWvZWM5BE","title":"Logging","pathname":"/1.9.0/configuration/logging","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9Lon0z5p3TrbTPXp","title":"Consumer session balancing","pathname":"/1.9.0/configuration/balancing","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9ilm3TpL4UkqB70n","title":"Plugins","pathname":"/1.9.0/configuration/plugins","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-Lh49Ex89Z92NYiGE5z0","title":"Shared subscriptions","pathname":"/1.9.0/configuration/shared_subscriptions","siteSpaceId":"sitesp_VTTLj","description":"Working with shared subscriptions","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwACp8uLG57EOyFq8j","title":"Advanced Options","pathname":"/1.9.0/configuration/advanced_options","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwATeBb_4XokdU6iaK","title":"Storage","pathname":"/1.9.0/configuration/storage","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOx1iR-SJNw8pLUa8T1","title":"MQTT Bridge","pathname":"/1.9.0/configuration/bridge","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwBRp9exyE9TX3h6ks","title":"Introduction","pathname":"/1.9.0/clustering/introduction","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwC_wO8WnU89NGjWkm","title":"Inter-node Communication","pathname":"/1.9.0/clustering/communication","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwCoFb6NsI2AzuOwCL","title":"Dealing with Netsplits","pathname":"/1.9.0/clustering/netsplits","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwebpojP9fy5maPMEB","title":"Introduction","pathname":"/1.9.0/administration/introduction","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LY0WnogrHG-h1DeJqLN","title":"Inspecting and managing sessions","pathname":"/1.9.0/administration/managing-sessions","siteSpaceId":"sitesp_VTTLj","description":"Inspecting and managing MQTT sessions","breadcrumbs":[{"label":"Administration"}]},{"id":"-LY231gnkja-hveiPJJF","title":"Retained messages","pathname":"/1.9.0/administration/retained-store","siteSpaceId":"sitesp_VTTLj","description":"Inspecting the retained message store","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwfNJPUwf9RJVRfMFL","title":"Live reconfiguration","pathname":"/1.9.0/administration/config_values","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwg25QurmOL0K_dUoR","title":"Managing Listeners","pathname":"/1.9.0/administration/listeners","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwgRE9F7U2wFkHt_dn","title":"HTTP API","pathname":"/1.9.0/administration/http-administration","siteSpaceId":"sitesp_VTTLj","description":"Everything you need to know to work with the VerneMQ HTTP administration interface","breadcrumbs":[{"label":"Administration"}]},{"id":"-LRwAs4z_RyX4ab4Ve7X","title":"Tracing","pathname":"/1.9.0/administration/tracing","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwYy-8Z_mlUEfzOVCP","title":"Introduction","pathname":"/1.9.0/monitoring/introduction","siteSpaceId":"sitesp_VTTLj","description":"Description and Configuration of the built-in Monitoring mechanism","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZ-MSx3-rcir62mQY","title":"$SYSTree","pathname":"/1.9.0/monitoring/systree","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZlRA4RrvLvKR121r","title":"Graphite","pathname":"/1.9.0/monitoring/graphite","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_4Mpj4WC9_2HS2mK","title":"Prometheus","pathname":"/1.9.0/monitoring/prometheus","siteSpaceId":"sitesp_VTTLj","description":"Description and Configuration of the Prometheus exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4GUqcyH9bgZrP1","title":"Health Checker","pathname":"/1.9.0/monitoring/health-check","siteSpaceId":"sitesp_VTTLj","description":"The VerneMQ health checker","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4H-koFHrIJh_Fo","title":"Status Page","pathname":"/1.9.0/monitoring/status","siteSpaceId":"sitesp_VTTLj","description":"The VerneMQ status page","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_Z3Ep_-FQxREAOx3","title":"Introduction","pathname":"/1.9.0/plugindevelopment/introduction","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKxv46KBSOjFnlk","title":"Session lifecycle","pathname":"/1.9.0/plugindevelopment/sessionlifecycle","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKyNeGRoMV28-e3","title":"Subscribe Flow","pathname":"/1.9.0/plugindevelopment/subscribeflow","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKzHXZiuWa0EJRU","title":"Publish Flow","pathname":"/1.9.0/plugindevelopment/publishflow","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQhdiH65oDovBdCm8JF","title":"Enhanced Auth Flow","pathname":"/1.9.0/plugindevelopment/enhancedauthflow","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL05YHfHzrQeyMV","title":"Erlang Boilerplate","pathname":"/1.9.0/plugindevelopment/boilerplate","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL1U5XWWWJjCrJ8","title":"Lua Scripting Support","pathname":"/1.9.0/plugindevelopment/luaplugins","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL2odvH8UxjaAw-","title":"Webhooks","pathname":"/1.9.0/plugindevelopment/webhookplugins","siteSpaceId":"sitesp_VTTLj","description":"How to implement VerneMQ plugins using a HTTP interface","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-Lf3pNmzjPos3MOW3DQe","title":"A typical VerneMQ deployment","pathname":"/1.9.0/guides/typical-vernemq-deployment","siteSpaceId":"sitesp_VTTLj","description":"In the following we describe how a typical VerneMQ deployment can look and some of the concerns one have to take into account when designing such a system.","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lf46bArrMpfMvISumEg","title":"VerneMQ on Kubernetes","pathname":"/1.9.0/guides/vernemq-on-kubernetes","siteSpaceId":"sitesp_VTTLj","description":"This guide describes how to deploy a VerneMQ cluster on Kubernetes","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOw34pLBLrosNIqLnGB","title":"Loadtesting VerneMQ","pathname":"/1.9.0/guides/loadtesting","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lg1lgfVWb3yOAjYWv6X","title":"Clustering during development","pathname":"/1.9.0/guides/clustering-during-development","siteSpaceId":"sitesp_VTTLj","description":"This describes a quick way to create a VerneMQ cluster on developer's machines","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOwi0EWebrkgoJySuh7","title":"Not a tuning guide","pathname":"/1.9.0/guides/not-a-tuning-guide","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOwjE-zPylHQlvnKhiE","title":"Change Open File Limits","pathname":"/1.9.0/guides/change-open-file-limits","siteSpaceId":"sitesp_VTTLj","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOvr-CRRoge5fxV03p1","title":"Welcome","pathname":"/1.10.0","siteSpaceId":"sitesp_KXXPh","description":""},{"id":"-LOvws2k4Hbx6k13zsNs","title":"Getting Started","pathname":"/1.10.0/getting-started","siteSpaceId":"sitesp_KXXPh","description":"A quick and simple guide to get started with VerneMQ"},{"id":"-Lr9No7oFqWzck365Lvs","title":"Accepting the VerneMQ EULA","pathname":"/1.10.0/installation/accepting-the-vernemq-eula","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOw3DaRMVmKnOEtxPBV","title":"Installing on Debian and Ubuntu","pathname":"/1.10.0/installation/debian_and_ubuntu","siteSpaceId":"sitesp_KXXPh","description":"VerneMQ can be installed on Debian or Ubuntu-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOw3aEoG2bTYk4NIJo7","title":"Installing on CentOS and RHEL","pathname":"/1.10.0/installation/centos_and_redhat","siteSpaceId":"sitesp_KXXPh","description":"VerneMQ can be installed on CentOS-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOw5G7noeY-4iqOBnfW","title":"Running VerneMQ using Docker","pathname":"/1.10.0/installation/docker","siteSpaceId":"sitesp_KXXPh","description":"As well as being available as packages that can be installed directly into the operating systems, VerneMQ is also available as a Docker image. Below is an example of how to set up a couple of VerneMQ","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOwiLF7OuN3KvoeY0U4","title":"Introduction","pathname":"/1.10.0/configuration/introduction","siteSpaceId":"sitesp_KXXPh","description":"Everything you must know to properly configure VerneMQ","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw5nBlmXV6EMZlDmmg","title":"Auth using files","pathname":"/1.10.0/configuration/file-auth","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw6boJztHe4K1dVyIZ","title":"Auth using a database","pathname":"/1.10.0/configuration/db-auth","siteSpaceId":"sitesp_KXXPh","description":"VerneMQ supports multiple ways to authenticate and authorize new client connections using a database.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw7NYlU5xPxlp95fWh","title":"MQTT Options","pathname":"/1.10.0/configuration/options","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw7hr2aaDWd65BdYm1","title":"MQTT Listeners","pathname":"/1.10.0/configuration/listeners","siteSpaceId":"sitesp_KXXPh","description":"VerneMQ supports multiple ways to configure one or many MQTT listeners.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8Cr7zngTvIMI9GKE","title":"HTTP Listeners","pathname":"/1.10.0/configuration/http-listeners","siteSpaceId":"sitesp_KXXPh","description":"How to setup and configure the HTTP listener.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8W_lav0HPVwg3QPo","title":"Non-standard MQTT options","pathname":"/1.10.0/configuration/nonstandard","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8rU7T0GU4hgy7UUA","title":"Websockets","pathname":"/1.10.0/configuration/websockets","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9CizhjPAWvZWM5BE","title":"Logging","pathname":"/1.10.0/configuration/logging","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9Lon0z5p3TrbTPXp","title":"Consumer session balancing","pathname":"/1.10.0/configuration/balancing","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9ilm3TpL4UkqB70n","title":"Plugins","pathname":"/1.10.0/configuration/plugins","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-Lh49Ex89Z92NYiGE5z0","title":"Shared subscriptions","pathname":"/1.10.0/configuration/shared_subscriptions","siteSpaceId":"sitesp_KXXPh","description":"Working with shared subscriptions","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwACp8uLG57EOyFq8j","title":"Advanced Options","pathname":"/1.10.0/configuration/advanced_options","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwATeBb_4XokdU6iaK","title":"Storage","pathname":"/1.10.0/configuration/storage","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOx1iR-SJNw8pLUa8T1","title":"MQTT Bridge","pathname":"/1.10.0/configuration/bridge","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwBRp9exyE9TX3h6ks","title":"Introduction","pathname":"/1.10.0/clustering/introduction","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwC_wO8WnU89NGjWkm","title":"Inter-node Communication","pathname":"/1.10.0/clustering/communication","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwCoFb6NsI2AzuOwCL","title":"Dealing with Netsplits","pathname":"/1.10.0/clustering/netsplits","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwebpojP9fy5maPMEB","title":"Introduction","pathname":"/1.10.0/administration/introduction","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LY0WnogrHG-h1DeJqLN","title":"Inspecting and managing sessions","pathname":"/1.10.0/administration/managing-sessions","siteSpaceId":"sitesp_KXXPh","description":"Inspecting and managing MQTT sessions","breadcrumbs":[{"label":"Administration"}]},{"id":"-LY231gnkja-hveiPJJF","title":"Retained messages","pathname":"/1.10.0/administration/retained-store","siteSpaceId":"sitesp_KXXPh","description":"Inspecting the retained message store","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwfNJPUwf9RJVRfMFL","title":"Live reconfiguration","pathname":"/1.10.0/administration/config_values","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwg25QurmOL0K_dUoR","title":"Managing Listeners","pathname":"/1.10.0/administration/listeners","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwgRE9F7U2wFkHt_dn","title":"HTTP API","pathname":"/1.10.0/administration/http-administration","siteSpaceId":"sitesp_KXXPh","description":"Everything you need to know to work with the VerneMQ HTTP administration interface","breadcrumbs":[{"label":"Administration"}]},{"id":"-LRwAs4z_RyX4ab4Ve7X","title":"Tracing","pathname":"/1.10.0/administration/tracing","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwYy-8Z_mlUEfzOVCP","title":"Introduction","pathname":"/1.10.0/monitoring/introduction","siteSpaceId":"sitesp_KXXPh","description":"Description and Configuration of the built-in Monitoring mechanism","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZ-MSx3-rcir62mQY","title":"$SYSTree","pathname":"/1.10.0/monitoring/systree","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZlRA4RrvLvKR121r","title":"Graphite","pathname":"/1.10.0/monitoring/graphite","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_4Mpj4WC9_2HS2mK","title":"Prometheus","pathname":"/1.10.0/monitoring/prometheus","siteSpaceId":"sitesp_KXXPh","description":"Description and Configuration of the Prometheus exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4GUqcyH9bgZrP1","title":"Health Checker","pathname":"/1.10.0/monitoring/health-check","siteSpaceId":"sitesp_KXXPh","description":"The VerneMQ health checker","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4H-koFHrIJh_Fo","title":"Status Page","pathname":"/1.10.0/monitoring/status","siteSpaceId":"sitesp_KXXPh","description":"The VerneMQ status page","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_Z3Ep_-FQxREAOx3","title":"Introduction","pathname":"/1.10.0/plugindevelopment/introduction","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKxv46KBSOjFnlk","title":"Session lifecycle","pathname":"/1.10.0/plugindevelopment/sessionlifecycle","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKyNeGRoMV28-e3","title":"Subscribe Flow","pathname":"/1.10.0/plugindevelopment/subscribeflow","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKzHXZiuWa0EJRU","title":"Publish Flow","pathname":"/1.10.0/plugindevelopment/publishflow","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQhdiH65oDovBdCm8JF","title":"Enhanced Auth Flow","pathname":"/1.10.0/plugindevelopment/enhancedauthflow","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL05YHfHzrQeyMV","title":"Erlang Boilerplate","pathname":"/1.10.0/plugindevelopment/boilerplate","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL1U5XWWWJjCrJ8","title":"Lua Scripting Support","pathname":"/1.10.0/plugindevelopment/luaplugins","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL2odvH8UxjaAw-","title":"Webhooks","pathname":"/1.10.0/plugindevelopment/webhookplugins","siteSpaceId":"sitesp_KXXPh","description":"How to implement VerneMQ plugins using a HTTP interface","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-Lf3pNmzjPos3MOW3DQe","title":"A typical VerneMQ deployment","pathname":"/1.10.0/guides/typical-vernemq-deployment","siteSpaceId":"sitesp_KXXPh","description":"In the following we describe how a typical VerneMQ deployment can look and some of the concerns one have to take into account when designing such a system.","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lf46bArrMpfMvISumEg","title":"VerneMQ on Kubernetes","pathname":"/1.10.0/guides/vernemq-on-kubernetes","siteSpaceId":"sitesp_KXXPh","description":"This guide describes how to deploy a VerneMQ cluster on Kubernetes","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOw34pLBLrosNIqLnGB","title":"Loadtesting VerneMQ","pathname":"/1.10.0/guides/loadtesting","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lg1lgfVWb3yOAjYWv6X","title":"Clustering during development","pathname":"/1.10.0/guides/clustering-during-development","siteSpaceId":"sitesp_KXXPh","description":"This describes a quick way to create a VerneMQ cluster on developer's machines","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOwi0EWebrkgoJySuh7","title":"Not a tuning guide","pathname":"/1.10.0/guides/not-a-tuning-guide","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOwjE-zPylHQlvnKhiE","title":"Change Open File Limits","pathname":"/1.10.0/guides/change-open-file-limits","siteSpaceId":"sitesp_KXXPh","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOvr-CRRoge5fxV03p1","title":"Welcome","pathname":"/1.10.3","siteSpaceId":"sitesp_gbb47","description":""},{"id":"-LOvws2k4Hbx6k13zsNs","title":"Getting Started","pathname":"/1.10.3/getting-started","siteSpaceId":"sitesp_gbb47","description":"A quick and simple guide to get started with VerneMQ"},{"id":"-Lr9No7oFqWzck365Lvs","title":"Accepting the VerneMQ EULA","pathname":"/1.10.3/installation/accepting-the-vernemq-eula","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOw3DaRMVmKnOEtxPBV","title":"Installing on Debian and Ubuntu","pathname":"/1.10.3/installation/debian_and_ubuntu","siteSpaceId":"sitesp_gbb47","description":"VerneMQ can be installed on Debian or Ubuntu-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOw3aEoG2bTYk4NIJo7","title":"Installing on CentOS and RHEL","pathname":"/1.10.3/installation/centos_and_redhat","siteSpaceId":"sitesp_gbb47","description":"VerneMQ can be installed on CentOS-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOw5G7noeY-4iqOBnfW","title":"Running VerneMQ using Docker","pathname":"/1.10.3/installation/docker","siteSpaceId":"sitesp_gbb47","description":"As well as being available as packages that can be installed directly into the operating systems, VerneMQ is also available as a Docker image. Below is an example of how to set up a couple of VerneMQ","breadcrumbs":[{"label":"Installation"}]},{"id":"-LOwiLF7OuN3KvoeY0U4","title":"Introduction","pathname":"/1.10.3/configuration/introduction","siteSpaceId":"sitesp_gbb47","description":"Everything you must know to properly configure VerneMQ","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw5nBlmXV6EMZlDmmg","title":"Auth using files","pathname":"/1.10.3/configuration/file-auth","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw6boJztHe4K1dVyIZ","title":"Auth using a database","pathname":"/1.10.3/configuration/db-auth","siteSpaceId":"sitesp_gbb47","description":"VerneMQ supports multiple ways to authenticate and authorize new client connections using a database.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw7NYlU5xPxlp95fWh","title":"MQTT Options","pathname":"/1.10.3/configuration/options","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw7hr2aaDWd65BdYm1","title":"MQTT Listeners","pathname":"/1.10.3/configuration/listeners","siteSpaceId":"sitesp_gbb47","description":"VerneMQ supports multiple ways to configure one or many MQTT listeners.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8Cr7zngTvIMI9GKE","title":"HTTP Listeners","pathname":"/1.10.3/configuration/http-listeners","siteSpaceId":"sitesp_gbb47","description":"How to setup and configure the HTTP listener.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8W_lav0HPVwg3QPo","title":"Non-standard MQTT options","pathname":"/1.10.3/configuration/nonstandard","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw8rU7T0GU4hgy7UUA","title":"Websockets","pathname":"/1.10.3/configuration/websockets","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9CizhjPAWvZWM5BE","title":"Logging","pathname":"/1.10.3/configuration/logging","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9Lon0z5p3TrbTPXp","title":"Consumer session balancing","pathname":"/1.10.3/configuration/balancing","siteSpaceId":"sitesp_gbb47","description":"MQTT consumers can share and loadbalance a topic subscription.","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOw9ilm3TpL4UkqB70n","title":"Plugins","pathname":"/1.10.3/configuration/plugins","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-Lh49Ex89Z92NYiGE5z0","title":"Shared subscriptions","pathname":"/1.10.3/configuration/shared_subscriptions","siteSpaceId":"sitesp_gbb47","description":"Working with shared subscriptions","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwACp8uLG57EOyFq8j","title":"Advanced Options","pathname":"/1.10.3/configuration/advanced_options","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwATeBb_4XokdU6iaK","title":"Storage","pathname":"/1.10.3/configuration/storage","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOx1iR-SJNw8pLUa8T1","title":"MQTT Bridge","pathname":"/1.10.3/configuration/bridge","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Configuration"}]},{"id":"-LOwBRp9exyE9TX3h6ks","title":"Introduction","pathname":"/1.10.3/clustering/introduction","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwC_wO8WnU89NGjWkm","title":"Inter-node Communication","pathname":"/1.10.3/clustering/communication","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwCoFb6NsI2AzuOwCL","title":"Dealing with Netsplits","pathname":"/1.10.3/clustering/netsplits","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Clustering"}]},{"id":"-LOwebpojP9fy5maPMEB","title":"Introduction","pathname":"/1.10.3/administration/introduction","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LY0WnogrHG-h1DeJqLN","title":"Inspecting and managing sessions","pathname":"/1.10.3/administration/managing-sessions","siteSpaceId":"sitesp_gbb47","description":"Inspecting and managing MQTT sessions","breadcrumbs":[{"label":"Administration"}]},{"id":"-LY231gnkja-hveiPJJF","title":"Retained messages","pathname":"/1.10.3/administration/retained-store","siteSpaceId":"sitesp_gbb47","description":"Inspecting the retained message store","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwfNJPUwf9RJVRfMFL","title":"Live reconfiguration","pathname":"/1.10.3/administration/config_values","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwg25QurmOL0K_dUoR","title":"Managing Listeners","pathname":"/1.10.3/administration/listeners","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwgRE9F7U2wFkHt_dn","title":"HTTP API","pathname":"/1.10.3/administration/http-administration","siteSpaceId":"sitesp_gbb47","description":"Everything you need to know to work with the VerneMQ HTTP administration interface","breadcrumbs":[{"label":"Administration"}]},{"id":"-LRwAs4z_RyX4ab4Ve7X","title":"Tracing","pathname":"/1.10.3/administration/tracing","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Administration"}]},{"id":"-LOwYy-8Z_mlUEfzOVCP","title":"Introduction","pathname":"/1.10.3/monitoring/introduction","siteSpaceId":"sitesp_gbb47","description":"Description and Configuration of the built-in Monitoring mechanism","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZ-MSx3-rcir62mQY","title":"$SYSTree","pathname":"/1.10.3/monitoring/systree","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZlRA4RrvLvKR121r","title":"Graphite","pathname":"/1.10.3/monitoring/graphite","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-MC7l5hNrcEr4YlP1NFN","title":"Netdata","pathname":"/1.10.3/monitoring/netdata","siteSpaceId":"sitesp_gbb47","description":"Netdata Metrics","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_4Mpj4WC9_2HS2mK","title":"Prometheus","pathname":"/1.10.3/monitoring/prometheus","siteSpaceId":"sitesp_gbb47","description":"Description and Configuration of the Prometheus exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4GUqcyH9bgZrP1","title":"Health Checker","pathname":"/1.10.3/monitoring/health-check","siteSpaceId":"sitesp_gbb47","description":"The VerneMQ health checker","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4H-koFHrIJh_Fo","title":"Status Page","pathname":"/1.10.3/monitoring/status","siteSpaceId":"sitesp_gbb47","description":"The VerneMQ status page","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_Z3Ep_-FQxREAOx3","title":"Introduction","pathname":"/1.10.3/plugindevelopment/introduction","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKxv46KBSOjFnlk","title":"Session lifecycle","pathname":"/1.10.3/plugindevelopment/sessionlifecycle","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKyNeGRoMV28-e3","title":"Subscribe Flow","pathname":"/1.10.3/plugindevelopment/subscribeflow","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuKzHXZiuWa0EJRU","title":"Publish Flow","pathname":"/1.10.3/plugindevelopment/publishflow","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQhdiH65oDovBdCm8JF","title":"Enhanced Auth Flow","pathname":"/1.10.3/plugindevelopment/enhancedauthflow","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL05YHfHzrQeyMV","title":"Erlang Boilerplate","pathname":"/1.10.3/plugindevelopment/boilerplate","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL1U5XWWWJjCrJ8","title":"Lua Scripting Support","pathname":"/1.10.3/plugindevelopment/luaplugins","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-LQheuL2odvH8UxjaAw-","title":"Webhooks","pathname":"/1.10.3/plugindevelopment/webhookplugins","siteSpaceId":"sitesp_gbb47","description":"How to implement VerneMQ plugins using a HTTP interface","breadcrumbs":[{"label":"Plugindevelopment"}]},{"id":"-Lf3pNmzjPos3MOW3DQe","title":"A typical VerneMQ deployment","pathname":"/1.10.3/guides/typical-vernemq-deployment","siteSpaceId":"sitesp_gbb47","description":"In the following we describe how a typical VerneMQ deployment can look and some of the concerns one have to take into account when designing such a system.","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lf46bArrMpfMvISumEg","title":"VerneMQ on Kubernetes","pathname":"/1.10.3/guides/vernemq-on-kubernetes","siteSpaceId":"sitesp_gbb47","description":"This guide describes how to deploy a VerneMQ cluster on Kubernetes","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOw34pLBLrosNIqLnGB","title":"Loadtesting VerneMQ","pathname":"/1.10.3/guides/loadtesting","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lg1lgfVWb3yOAjYWv6X","title":"Clustering during development","pathname":"/1.10.3/guides/clustering-during-development","siteSpaceId":"sitesp_gbb47","description":"This describes a quick way to create a VerneMQ cluster on developer's machines","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOwi0EWebrkgoJySuh7","title":"Not a tuning guide","pathname":"/1.10.3/guides/not-a-tuning-guide","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-LOwjE-zPylHQlvnKhiE","title":"Change Open File Limits","pathname":"/1.10.3/guides/change-open-file-limits","siteSpaceId":"sitesp_gbb47","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lm8ih8uMVXvD3Jz4x0Q","title":"Welcome","pathname":"/master","siteSpaceId":"sitesp_uBB9I","description":""},{"id":"-Lm8ih7upDn-JoFTP1o7","title":"Getting Started","pathname":"/master/getting-started","siteSpaceId":"sitesp_uBB9I","description":"A quick and simple guide to get started with VerneMQ"},{"id":"-Lm8ih80C-7l5E8-TeZ5","title":"Installing on Debian and Ubuntu","pathname":"/master/installing-vernemq/debian_and_ubuntu","siteSpaceId":"sitesp_uBB9I","description":"VerneMQ can be installed on Debian or Ubuntu-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-Lm8ih81tnT0tOTjYN83","title":"Installing on CentOS and RHEL","pathname":"/master/installing-vernemq/centos_and_redhat","siteSpaceId":"sitesp_uBB9I","description":"VerneMQ can be installed on CentOS-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-Lm8ih82BlWFnB-ig7dQ","title":"Running VerneMQ using Docker","pathname":"/master/installing-vernemq/docker","siteSpaceId":"sitesp_uBB9I","description":"As well as being available as packages that can be installed directly into the operating systems, VerneMQ is also available as a Docker image. Below is an example of how to set up a couple of VerneMQ","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-Lm8ih85gaA0ALd_4HGp","title":"Introduction","pathname":"/master/configuring-vernemq/introduction","siteSpaceId":"sitesp_uBB9I","description":"Everything you must know to properly configure VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"YRsfl2TRAj4SOkuRrCx5","title":"The VerneMQ conf file","pathname":"/master/configuring-vernemq/the-vernemq-conf-file","siteSpaceId":"sitesp_uBB9I","description":"A closer look at an example vernemq.conf file (Note: This is a work-in-progress section)","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"jsrr36iOUU6nQdTIavsb","title":"Schema Files","pathname":"/master/configuring-vernemq/schema-files","siteSpaceId":"sitesp_uBB9I","description":"Schema Files in VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8632V5ndnnYrlf","title":"Auth using files","pathname":"/master/configuring-vernemq/file-auth","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih87OsKQCXLg2LtL","title":"Auth using a database","pathname":"/master/configuring-vernemq/db-auth","siteSpaceId":"sitesp_uBB9I","description":"VerneMQ supports multiple ways to authenticate and authorize new client connections using a database.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih887H__XiC6kgvU","title":"MQTT Options","pathname":"/master/configuring-vernemq/options","siteSpaceId":"sitesp_uBB9I","description":"Configure how VerneMQ handles certain aspects of MQTT","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih89yHMyJNkoPCcA","title":"MQTT Listeners","pathname":"/master/configuring-vernemq/listeners","siteSpaceId":"sitesp_uBB9I","description":"VerneMQ supports multiple ways to configure one or many MQTT listeners.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8AqyT7Qtcn-nja","title":"HTTP Listeners","pathname":"/master/configuring-vernemq/http-listeners","siteSpaceId":"sitesp_uBB9I","description":"How to setup and configure the HTTP listener.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8BhDFjsFX_8f0W","title":"Non-standard MQTT options","pathname":"/master/configuring-vernemq/nonstandard","siteSpaceId":"sitesp_uBB9I","description":"Configure Non-Standard MQTT Options VerneMQ Supports.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8CQFT3Quk6in8W","title":"Websockets","pathname":"/master/configuring-vernemq/websockets","siteSpaceId":"sitesp_uBB9I","description":"Configure WebSocket Listeners for VerneMQ.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8Dfst0fNckc2Yo","title":"Logging","pathname":"/master/configuring-vernemq/logging","siteSpaceId":"sitesp_uBB9I","description":"Configure VerneMQ Logging.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8EzZzVqxPEwgT0","title":"Consumer session balancing","pathname":"/master/configuring-vernemq/balancing","siteSpaceId":"sitesp_uBB9I","description":"MQTT consumers can share and loadbalance a topic subscription.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8FnGDz1sqr47mT","title":"Plugins","pathname":"/master/configuring-vernemq/plugins","siteSpaceId":"sitesp_uBB9I","description":"Managing VerneMQ Plugins","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8GieTQ8EJinvn7","title":"Shared subscriptions","pathname":"/master/configuring-vernemq/shared_subscriptions","siteSpaceId":"sitesp_uBB9I","description":"Working with shared subscriptions","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8H4G2nW04D2ovk","title":"Advanced Options","pathname":"/master/configuring-vernemq/advanced_options","siteSpaceId":"sitesp_uBB9I","description":"Configure a couple of hidden options for VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8IVcv93NEyVpsW","title":"Storage","pathname":"/master/configuring-vernemq/storage","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8JT2T7sI0m9aEk","title":"MQTT Bridge","pathname":"/master/configuring-vernemq/bridge","siteSpaceId":"sitesp_uBB9I","description":"VerneMQ can interface with other brokers (and itself) via MQTT bridges.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"lcnfAaaXC6jkAiGv7NNq","title":"REST Publisher","pathname":"/master/configuring-vernemq/http-pub","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8MYnX2vSopHbMk","title":"Introduction","pathname":"/master/vernemq-clustering/introduction","siteSpaceId":"sitesp_uBB9I","description":"Everything you must know to properly configure and deploy a VerneMQ Cluster","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-Lm8ih8NsUlWGl8kBrJb","title":"Inter-node Communication","pathname":"/master/vernemq-clustering/communication","siteSpaceId":"sitesp_uBB9I","description":"Everything you must know to properly configure and deploy a VerneMQ Cluster","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-Lm8ih8OW0mjqKJ6WI8q","title":"Dealing with Netsplits","pathname":"/master/vernemq-clustering/netsplits","siteSpaceId":"sitesp_uBB9I","description":"How does VerneMQ deals with Network Partitions aka. Netsplits.","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-Lm8ih8RoX8K8C85ABW1","title":"Introduction","pathname":"/master/live-administration/introduction","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8SF08zVzR03SHj","title":"Inspecting and managing sessions","pathname":"/master/live-administration/managing-sessions","siteSpaceId":"sitesp_uBB9I","description":"Inspecting and managing MQTT sessions","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8T4D7Iq_MImeo2","title":"Retained messages","pathname":"/master/live-administration/retained-store","siteSpaceId":"sitesp_uBB9I","description":"Inspecting the retained message store","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8ULHHLBDC4KwUU","title":"Live reconfiguration","pathname":"/master/live-administration/config_values","siteSpaceId":"sitesp_uBB9I","description":"Managing VerneMQ live config values.","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8VkaHN_hKY1pdZ","title":"Managing Listeners","pathname":"/master/live-administration/listeners","siteSpaceId":"sitesp_uBB9I","description":"Managing VerneMQ tcp listeners","breadcrumbs":[{"label":"Live Administration"}]},{"id":"SQPFizd2SUGbfhzS2xcn","title":"Certificate Management","pathname":"/master/live-administration/certificates","siteSpaceId":"sitesp_uBB9I","description":"Certificate management","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8WTy7BBj_S_76c","title":"HTTP API","pathname":"/master/live-administration/http-administration","siteSpaceId":"sitesp_uBB9I","description":"Everything you need to know to work with the VerneMQ HTTP administration interface","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8XSASy1DxKUxW6","title":"Tracing","pathname":"/master/live-administration/tracing","siteSpaceId":"sitesp_uBB9I","description":"Real-time inspection","breadcrumbs":[{"label":"Live Administration"}]},{"id":"Jlx9VNi8c5Ryyoe57n5u","title":"Output Format","pathname":"/master/live-administration/output_format","siteSpaceId":"sitesp_uBB9I","description":"Changing the output format of CLI commands","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8_KrMM6Gz5aLoj","title":"Introduction","pathname":"/master/monitoring/introduction","siteSpaceId":"sitesp_uBB9I","description":"Description and Configuration of the built-in Monitoring mechanism","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8afZ_ekUz56Gi-","title":"$SYSTree","pathname":"/master/monitoring/systree","siteSpaceId":"sitesp_uBB9I","description":"Description and Configuration of the $SYSTree Monitoring Feature","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8bFS7n79D_p3Dq","title":"Graphite","pathname":"/master/monitoring/graphite","siteSpaceId":"sitesp_uBB9I","description":"Description and Configuration of the Graphite exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"vj9eitnmNgpIfg2X6PKc","title":"Netdata","pathname":"/master/monitoring/netdata","siteSpaceId":"sitesp_uBB9I","description":"Netdata Metrics","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8cVtStAqvV_iRK","title":"Prometheus","pathname":"/master/monitoring/prometheus","siteSpaceId":"sitesp_uBB9I","description":"Description and Configuration of the Prometheus exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8dhNWePqooH1Ht","title":"Health Checker","pathname":"/master/monitoring/health-check","siteSpaceId":"sitesp_uBB9I","description":"The VerneMQ health checker","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8eNGt6udXxx7qB","title":"Status Page","pathname":"/master/monitoring/status","siteSpaceId":"sitesp_uBB9I","description":"The VerneMQ Status Page","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8h2QD3pwIdSoQr","title":"Introduction","pathname":"/master/plugin-development/introduction","siteSpaceId":"sitesp_uBB9I","description":"Learn how to implement VerneMQ Plugins for customizing many aspects of  how VerneMQ deals with client connections, subscriptions, and message flows.","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8iSunh-5kucavQ","title":"Session lifecycle","pathname":"/master/plugin-development/sessionlifecycle","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8jBn-GAHmWgpme","title":"Subscribe Flow","pathname":"/master/plugin-development/subscribeflow","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8kgf4zqo46bSbs","title":"Publish Flow","pathname":"/master/plugin-development/publishflow","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8lEpiA7wob_3fb","title":"Enhanced Auth Flow","pathname":"/master/plugin-development/enhancedauthflow","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8mPIAic2PRut78","title":"Erlang Boilerplate","pathname":"/master/plugin-development/boilerplate","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8nGGxAFFVdYn90","title":"Lua Scripting Support","pathname":"/master/plugin-development/luaplugins","siteSpaceId":"sitesp_uBB9I","description":"Learn how to implement VerneMQ plugins using the Lua Scripting Language.","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8o-6p10HuCQTGD","title":"Webhooks","pathname":"/master/plugin-development/webhookplugins","siteSpaceId":"sitesp_uBB9I","description":"How to implement VerneMQ plugins using a HTTP/HTTPS interface","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8ry_5NDrULDKJM","title":"Loadtesting VerneMQ","pathname":"/master/misc/loadtesting","siteSpaceId":"sitesp_uBB9I","description":"Loadtesting VerneMQ with vmq_mzbench","breadcrumbs":[{"label":"Misc"}]},{"id":"-Lm8ih8sejoJMYAcURI4","title":"Not a tuning guide","pathname":"/master/misc/not-a-tuning-guide","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Misc"}]},{"id":"nZn9GJD0SXjxbpZ8oZpJ","title":"Change Open File Limits","pathname":"/master/misc/change-open-file-limits","siteSpaceId":"sitesp_uBB9I","description":"How to change the open file limits","breadcrumbs":[{"label":"Misc"}]},{"id":"zcLjK8JQUZjqfctubigG","title":"A typical VerneMQ deployment","pathname":"/master/guides/typical-vernemq-deployment","siteSpaceId":"sitesp_uBB9I","description":"In the following we describe how a typical VerneMQ deployment can look and some of the concerns one have to take into account when designing such a system.","breadcrumbs":[{"label":"Guides"}]},{"id":"RINsmi5j1Mi4Mdm9FoMW","title":"VerneMQ on Kubernetes","pathname":"/master/guides/vernemq-on-kubernetes","siteSpaceId":"sitesp_uBB9I","description":"This guide describes how to deploy a VerneMQ cluster on Kubernetes","breadcrumbs":[{"label":"Guides"}]},{"id":"Kmsp81Q2AxYJEjGVoDuZ","title":"Loadtesting VerneMQ","pathname":"/master/guides/loadtesting","siteSpaceId":"sitesp_uBB9I","description":"Loadtesting VerneMQ with vmq_mzbench","breadcrumbs":[{"label":"Guides"}]},{"id":"ZpIBTlMaJ3pwexNQ7EIN","title":"Clustering during development","pathname":"/master/guides/clustering-during-development","siteSpaceId":"sitesp_uBB9I","description":"This describes a quick way to create a VerneMQ cluster on developer's machines","breadcrumbs":[{"label":"Guides"}]},{"id":"sW0jxS6fZaCTN5TJx6wE","title":"Not a tuning guide","pathname":"/master/guides/not-a-tuning-guide","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lm8ih8t7LKNaOmSSTrD","title":"Change Open File Limits","pathname":"/master/guides/change-open-file-limits","siteSpaceId":"sitesp_uBB9I","description":"A guide that shows how to change the open file limtits","breadcrumbs":[{"label":"Guides"}]},{"id":"CokQwpZehy436gguTr4E","title":"Migrating to 2.0","pathname":"/master/guides/migration-to-2-0","siteSpaceId":"sitesp_uBB9I","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"DJlT4MEozBIbxiaazFcY","title":"Welcome","pathname":"/","siteSpaceId":"sitesp_YrrJk","description":""},{"id":"kZeP7aOeI1dPh5ec6sRX","title":"Getting Started","pathname":"/getting-started","siteSpaceId":"sitesp_YrrJk","description":"A quick and simple guide to get started with VerneMQ"},{"id":"I68C2ADfGYMkJ1VAt78c","title":"Installing on Debian and Ubuntu","pathname":"/installing-vernemq/debian_and_ubuntu","siteSpaceId":"sitesp_YrrJk","description":"VerneMQ can be installed on Debian or Ubuntu-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"KW1UY57tSRt2tKBXwOKU","title":"Installing on CentOS and RHEL","pathname":"/installing-vernemq/centos_and_redhat","siteSpaceId":"sitesp_YrrJk","description":"VerneMQ can be installed on CentOS-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"OnUCbf1CRN9S5E1rdynG","title":"Running VerneMQ using Docker","pathname":"/installing-vernemq/docker","siteSpaceId":"sitesp_YrrJk","description":"As well as being available as packages that can be installed directly into the operating systems, VerneMQ is also available as a Docker image. Below is an example of how to set up a couple of VerneMQ","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"LApFKW5nJsrwHh9W9n2e","title":"Introduction","pathname":"/configuring-vernemq/introduction","siteSpaceId":"sitesp_YrrJk","description":"Everything you must know to properly configure VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"QbQs2smyDX8IRv5iA7GR","title":"The VerneMQ conf file","pathname":"/configuring-vernemq/the-vernemq-conf-file","siteSpaceId":"sitesp_YrrJk","description":"A closer look at an example vernemq.conf file (Note: This is a work-in-progress section)","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"ysONiWZybw8oS2GqaRcD","title":"Schema Files","pathname":"/configuring-vernemq/schema-files","siteSpaceId":"sitesp_YrrJk","description":"Schema Files in VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"kQ7Po0bajpDkyDYapv32","title":"Auth using files","pathname":"/configuring-vernemq/file-auth","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"wHosCwKs2JUCsD9hysoY","title":"Auth using a database","pathname":"/configuring-vernemq/db-auth","siteSpaceId":"sitesp_YrrJk","description":"VerneMQ supports multiple ways to authenticate and authorize new client connections using a database.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"SpAjh7RCP7HPv6NOM90Q","title":"MQTT Options","pathname":"/configuring-vernemq/options","siteSpaceId":"sitesp_YrrJk","description":"Configure how VerneMQ handles certain aspects of MQTT","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"7wTRNgUYYtpnRwCBT8DS","title":"MQTT Listeners","pathname":"/configuring-vernemq/listeners","siteSpaceId":"sitesp_YrrJk","description":"VerneMQ supports multiple ways to configure one or many MQTT listeners.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"p9s9KyIWbce6Prwgaco4","title":"HTTP Listeners","pathname":"/configuring-vernemq/http-listeners","siteSpaceId":"sitesp_YrrJk","description":"How to setup and configure the HTTP listener.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"qmj0k6ftkVs987fosOgV","title":"Non-standard MQTT options","pathname":"/configuring-vernemq/nonstandard","siteSpaceId":"sitesp_YrrJk","description":"Configure Non-Standard MQTT Options VerneMQ Supports.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"IwgCMCUief5bmLYNkiRY","title":"Websockets","pathname":"/configuring-vernemq/websockets","siteSpaceId":"sitesp_YrrJk","description":"Configure WebSocket Listeners for VerneMQ.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"Ss7zoiIEM4RBXRTxQLCR","title":"Logging","pathname":"/configuring-vernemq/logging","siteSpaceId":"sitesp_YrrJk","description":"Configure VerneMQ Logging.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"wjP8BqJQlAoysUyOE3pS","title":"Consumer session balancing","pathname":"/configuring-vernemq/balancing","siteSpaceId":"sitesp_YrrJk","description":"MQTT consumers can share and loadbalance a topic subscription.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"9mb7OU4W6RItfBW3yvms","title":"Plugins","pathname":"/configuring-vernemq/plugins","siteSpaceId":"sitesp_YrrJk","description":"Managing VerneMQ Plugins","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"canjscYJpcwZZsMakLdI","title":"Shared subscriptions","pathname":"/configuring-vernemq/shared_subscriptions","siteSpaceId":"sitesp_YrrJk","description":"Working with shared subscriptions","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"OmeP1J3H5LE1sqtNI0nS","title":"Advanced Options","pathname":"/configuring-vernemq/advanced_options","siteSpaceId":"sitesp_YrrJk","description":"Configure a couple of hidden options for VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"KRLBoLYprjY08wBpHzqb","title":"Storage","pathname":"/configuring-vernemq/storage","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"w44ZlzAPHDqDJMywlAjA","title":"MQTT Bridge","pathname":"/configuring-vernemq/bridge","siteSpaceId":"sitesp_YrrJk","description":"VerneMQ can interface with other brokers (and itself) via MQTT bridges.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"RcItoJyTAOcmBci3bqWU","title":"REST Publisher","pathname":"/configuring-vernemq/http-pub","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"5iNIxtcQWsQK0WEwlFRG","title":"Introduction","pathname":"/vernemq-clustering/introduction","siteSpaceId":"sitesp_YrrJk","description":"Everything you must know to properly configure and deploy a VerneMQ Cluster","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"VcjhVaNozdFdT9oJQWN9","title":"Inter-node Communication","pathname":"/vernemq-clustering/communication","siteSpaceId":"sitesp_YrrJk","description":"Everything you must know to properly configure and deploy a VerneMQ Cluster","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"4Bo7MyUMFQu8yaPWKVUt","title":"Dealing with Netsplits","pathname":"/vernemq-clustering/netsplits","siteSpaceId":"sitesp_YrrJk","description":"How does VerneMQ deals with Network Partitions aka. Netsplits.","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"LgUDEK3QQv3tU8O2LQIs","title":"Introduction","pathname":"/live-administration/introduction","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Live Administration"}]},{"id":"Czb3ZLEeDwawEh5l6UHf","title":"Inspecting and managing sessions","pathname":"/live-administration/managing-sessions","siteSpaceId":"sitesp_YrrJk","description":"Inspecting and managing MQTT sessions","breadcrumbs":[{"label":"Live Administration"}]},{"id":"XTnmos1Mqa44phrSVKHS","title":"Retained messages","pathname":"/live-administration/retained-store","siteSpaceId":"sitesp_YrrJk","description":"Inspecting the retained message store","breadcrumbs":[{"label":"Live Administration"}]},{"id":"iUPAYirhtqKG6uKZTd6j","title":"Live reconfiguration","pathname":"/live-administration/config_values","siteSpaceId":"sitesp_YrrJk","description":"Managing VerneMQ live config values.","breadcrumbs":[{"label":"Live Administration"}]},{"id":"XEjaVL4dKhZHQ1y7lPCE","title":"Managing Listeners","pathname":"/live-administration/listeners","siteSpaceId":"sitesp_YrrJk","description":"Managing VerneMQ tcp listeners","breadcrumbs":[{"label":"Live Administration"}]},{"id":"Uv1g3aZOJnBO2poAlfhY","title":"Certificate Management","pathname":"/live-administration/certificates","siteSpaceId":"sitesp_YrrJk","description":"Certificate management","breadcrumbs":[{"label":"Live Administration"}]},{"id":"viXsoykzFh22FwONveWU","title":"HTTP API","pathname":"/live-administration/http-administration","siteSpaceId":"sitesp_YrrJk","description":"Everything you need to know to work with the VerneMQ HTTP administration interface","breadcrumbs":[{"label":"Live Administration"}]},{"id":"qIMSkGnHCHvlKWK5IQw9","title":"Tracing","pathname":"/live-administration/tracing","siteSpaceId":"sitesp_YrrJk","description":"Real-time inspection","breadcrumbs":[{"label":"Live Administration"}]},{"id":"45hzjvLlsIiSGm1ky9gG","title":"Output Format","pathname":"/live-administration/output_format","siteSpaceId":"sitesp_YrrJk","description":"Changing the output format of CLI commands","breadcrumbs":[{"label":"Live Administration"}]},{"id":"RfNK4PvVjr3bIdMG1h92","title":"Introduction","pathname":"/monitoring/introduction","siteSpaceId":"sitesp_YrrJk","description":"Description and Configuration of the built-in Monitoring mechanism","breadcrumbs":[{"label":"Monitoring"}]},{"id":"ypR8QQR8MC0kfhdGGdge","title":"$SYSTree","pathname":"/monitoring/systree","siteSpaceId":"sitesp_YrrJk","description":"Description and Configuration of the $SYSTree Monitoring Feature","breadcrumbs":[{"label":"Monitoring"}]},{"id":"1wSeEJN7ITQGqLD9QqUh","title":"Graphite","pathname":"/monitoring/graphite","siteSpaceId":"sitesp_YrrJk","description":"Description and Configuration of the Graphite exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"IyRBXVwl1CYZwleBPc82","title":"Netdata","pathname":"/monitoring/netdata","siteSpaceId":"sitesp_YrrJk","description":"Netdata Metrics","breadcrumbs":[{"label":"Monitoring"}]},{"id":"lhRoUUWhpNKAqiucjws0","title":"Prometheus","pathname":"/monitoring/prometheus","siteSpaceId":"sitesp_YrrJk","description":"Description and Configuration of the Prometheus exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"DMtXY7dd3WWaPkeLgEOK","title":"Health Checker","pathname":"/monitoring/health-check","siteSpaceId":"sitesp_YrrJk","description":"The VerneMQ health checker","breadcrumbs":[{"label":"Monitoring"}]},{"id":"XGRMIwArBXsrbsslsoBT","title":"Status Page","pathname":"/monitoring/status","siteSpaceId":"sitesp_YrrJk","description":"The VerneMQ Status Page","breadcrumbs":[{"label":"Monitoring"}]},{"id":"pcTU39fN6Obocd9agyOV","title":"Introduction","pathname":"/plugin-development/introduction","siteSpaceId":"sitesp_YrrJk","description":"Learn how to implement VerneMQ Plugins for customizing many aspects of  how VerneMQ deals with client connections, subscriptions, and message flows.","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"d5XC7k8wrCYqg5Nd3t6L","title":"Session lifecycle","pathname":"/plugin-development/sessionlifecycle","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"F6MIgHemjESOPH51I4TU","title":"Subscribe Flow","pathname":"/plugin-development/subscribeflow","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"KHwxgvGGIzknjUYUhUmB","title":"Publish Flow","pathname":"/plugin-development/publishflow","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"y54fqvXHwp6ZRC8WuOo4","title":"Enhanced Auth Flow","pathname":"/plugin-development/enhancedauthflow","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"Fb2BnDUWrfUNm2gsQi0V","title":"Erlang Boilerplate","pathname":"/plugin-development/boilerplate","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"HT2hOhz4bZoFbQW3CKm3","title":"Lua Scripting Support","pathname":"/plugin-development/luaplugins","siteSpaceId":"sitesp_YrrJk","description":"Learn how to implement VerneMQ plugins using the Lua Scripting Language.","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"wnbrYIziSabGtHbs4FbH","title":"Webhooks","pathname":"/plugin-development/webhookplugins","siteSpaceId":"sitesp_YrrJk","description":"How to implement VerneMQ plugins using a HTTP/HTTPS interface","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"VSBBGgDs7tvQZDnDN83O","title":"Loadtesting VerneMQ","pathname":"/misc/loadtesting","siteSpaceId":"sitesp_YrrJk","description":"Loadtesting VerneMQ with vmq_mzbench","breadcrumbs":[{"label":"Misc"}]},{"id":"uhQj17MOFE4D3DWXGBGU","title":"Not a tuning guide","pathname":"/misc/not-a-tuning-guide","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Misc"}]},{"id":"Lzy5DVrCfu9A2tR1PWxc","title":"Change Open File Limits","pathname":"/misc/change-open-file-limits","siteSpaceId":"sitesp_YrrJk","description":"How to change the open file limits","breadcrumbs":[{"label":"Misc"}]},{"id":"7wDwXoJeuPdcOYSUKMCZ","title":"A typical VerneMQ deployment","pathname":"/guides/typical-vernemq-deployment","siteSpaceId":"sitesp_YrrJk","description":"In the following we describe how a typical VerneMQ deployment can look and some of the concerns one have to take into account when designing such a system.","breadcrumbs":[{"label":"Guides"}]},{"id":"rkvX7x2Tczt701AZAuWm","title":"VerneMQ on Kubernetes","pathname":"/guides/vernemq-on-kubernetes","siteSpaceId":"sitesp_YrrJk","description":"This guide describes how to deploy a VerneMQ cluster on Kubernetes","breadcrumbs":[{"label":"Guides"}]},{"id":"PhHvsOcouXJg2gpJZHdP","title":"Loadtesting VerneMQ","pathname":"/guides/loadtesting","siteSpaceId":"sitesp_YrrJk","description":"Loadtesting VerneMQ with vmq_mzbench","breadcrumbs":[{"label":"Guides"}]},{"id":"q1D8uT6tqv5AUCprLrtV","title":"Clustering during development","pathname":"/guides/clustering-during-development","siteSpaceId":"sitesp_YrrJk","description":"This describes a quick way to create a VerneMQ cluster on developer's machines","breadcrumbs":[{"label":"Guides"}]},{"id":"nMWPmGsxDoQwsIgKyfDZ","title":"Not a tuning guide","pathname":"/guides/not-a-tuning-guide","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"1vRmaHlEKFGxSHZmScEV","title":"Change Open File Limits","pathname":"/guides/change-open-file-limits","siteSpaceId":"sitesp_YrrJk","description":"A guide that shows how to change the open file limtits","breadcrumbs":[{"label":"Guides"}]},{"id":"WH54zWj1ffK4V5Cuy0Cs","title":"Migrating to 2.0","pathname":"/guides/migration-to-2-0","siteSpaceId":"sitesp_YrrJk","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"4uX4Yx5e0rVzlRVEyJY6","title":"Welcome","pathname":"/1.13.0","siteSpaceId":"sitesp_gbbml","description":""},{"id":"-LOvws2k4Hbx6k13zsNs","title":"Getting Started","pathname":"/1.13.0/getting-started","siteSpaceId":"sitesp_gbbml","description":"A quick and simple guide to get started with VerneMQ"},{"id":"-Mjz-HhXxt6xgFvYmg7O","title":"Installing on Debian and Ubuntu","pathname":"/1.13.0/installing-vernemq/debian_and_ubuntu","siteSpaceId":"sitesp_gbbml","description":"VerneMQ can be installed on Debian or Ubuntu-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-Mjz-HhYA0be_knur2Hx","title":"Installing on CentOS and RHEL","pathname":"/1.13.0/installing-vernemq/centos_and_redhat","siteSpaceId":"sitesp_gbbml","description":"VerneMQ can be installed on CentOS-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-Mjz-HhZ1d4CwJUyeDEk","title":"Running VerneMQ using Docker","pathname":"/1.13.0/installing-vernemq/docker","siteSpaceId":"sitesp_gbbml","description":"As well as being available as packages that can be installed directly into the operating systems, VerneMQ is also available as a Docker image. Below is an example of how to set up a couple of VerneMQ","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"gvwRFG7V6fAwmmTTU8gw","title":"Introduction","pathname":"/1.13.0/configuring-vernemq/introduction","siteSpaceId":"sitesp_gbbml","description":"Everything you must know to properly configure VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"KXIAz2TjZ0dWE4VEJuP8","title":"The VerneMQ conf file","pathname":"/1.13.0/configuring-vernemq/the-vernemq-conf-file","siteSpaceId":"sitesp_gbbml","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhcE71fNvKZm7zh","title":"Auth using files","pathname":"/1.13.0/configuring-vernemq/file-auth","siteSpaceId":"sitesp_gbbml","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-Hhd8iS-Fkv70uyj","title":"Auth using a database","pathname":"/1.13.0/configuring-vernemq/db-auth","siteSpaceId":"sitesp_gbbml","description":"VerneMQ supports multiple ways to authenticate and authorize new client connections using a database.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw7NYlU5xPxlp95fWh","title":"MQTT Options","pathname":"/1.13.0/configuring-vernemq/options","siteSpaceId":"sitesp_gbbml","description":"Configure how VerneMQ handles certain aspects of MQTT","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhfwvPWUHFLVzq3","title":"MQTT Listeners","pathname":"/1.13.0/configuring-vernemq/listeners","siteSpaceId":"sitesp_gbbml","description":"VerneMQ supports multiple ways to configure one or many MQTT listeners.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhgzrREKBJlJlle","title":"HTTP Listeners","pathname":"/1.13.0/configuring-vernemq/http-listeners","siteSpaceId":"sitesp_gbbml","description":"How to setup and configure the HTTP listener.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhheQ0iI9bcvWI5","title":"Non-standard MQTT options","pathname":"/1.13.0/configuring-vernemq/nonstandard","siteSpaceId":"sitesp_gbbml","description":"Configure Non-Standard MQTT Options VerneMQ Supports.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw8rU7T0GU4hgy7UUA","title":"Websockets","pathname":"/1.13.0/configuring-vernemq/websockets","siteSpaceId":"sitesp_gbbml","description":"Configure WebSocket Listeners for VerneMQ.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw9CizhjPAWvZWM5BE","title":"Logging","pathname":"/1.13.0/configuring-vernemq/logging","siteSpaceId":"sitesp_gbbml","description":"Configure VerneMQ Logging.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhkCmTfldx42Exf","title":"Consumer session balancing","pathname":"/1.13.0/configuring-vernemq/balancing","siteSpaceId":"sitesp_gbbml","description":"MQTT consumers can share and loadbalance a topic subscription.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOw9ilm3TpL4UkqB70n","title":"Plugins","pathname":"/1.13.0/configuring-vernemq/plugins","siteSpaceId":"sitesp_gbbml","description":"Managing VerneMQ Plugins","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhmfxJFy6TXEQrY","title":"Shared subscriptions","pathname":"/1.13.0/configuring-vernemq/shared_subscriptions","siteSpaceId":"sitesp_gbbml","description":"Working with shared subscriptions","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOwACp8uLG57EOyFq8j","title":"Advanced Options","pathname":"/1.13.0/configuring-vernemq/advanced_options","siteSpaceId":"sitesp_gbbml","description":"Configure a couple of hidden options for VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-HhoNEz0SRgEZ-cu","title":"Storage","pathname":"/1.13.0/configuring-vernemq/storage","siteSpaceId":"sitesp_gbbml","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-LOx1iR-SJNw8pLUa8T1","title":"MQTT Bridge","pathname":"/1.13.0/configuring-vernemq/bridge","siteSpaceId":"sitesp_gbbml","description":"VerneMQ can interface with other brokers (and itself) via MQTT bridges.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Mjz-Hhstc2-2dxf_8tD","title":"Introduction","pathname":"/1.13.0/vernemq-clustering/introduction","siteSpaceId":"sitesp_gbbml","description":"Everything you must know to properly configure and deploy a VerneMQ Cluster","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-LOwC_wO8WnU89NGjWkm","title":"Inter-node Communication","pathname":"/1.13.0/vernemq-clustering/communication","siteSpaceId":"sitesp_gbbml","description":"Everything you must know to properly configure and deploy a VerneMQ Cluster","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-Mjz-Hhu5u2tSMpTyOO-","title":"Dealing with Netsplits","pathname":"/1.13.0/vernemq-clustering/netsplits","siteSpaceId":"sitesp_gbbml","description":"How does VerneMQ deals with Network Partitions aka. Netsplits.","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-Mjz-HhxZo4NQ4rok7md","title":"Introduction","pathname":"/1.13.0/live-administration/introduction","siteSpaceId":"sitesp_gbbml","description":"","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LY0WnogrHG-h1DeJqLN","title":"Inspecting and managing sessions","pathname":"/1.13.0/live-administration/managing-sessions","siteSpaceId":"sitesp_gbbml","description":"Inspecting and managing MQTT sessions","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LY231gnkja-hveiPJJF","title":"Retained messages","pathname":"/1.13.0/live-administration/retained-store","siteSpaceId":"sitesp_gbbml","description":"Inspecting the retained message store","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Mjz-Hi-RxuZIdZ_PC2l","title":"Live reconfiguration","pathname":"/1.13.0/live-administration/config_values","siteSpaceId":"sitesp_gbbml","description":"Managing VerneMQ live config values.","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LOwg25QurmOL0K_dUoR","title":"Managing Listeners","pathname":"/1.13.0/live-administration/listeners","siteSpaceId":"sitesp_gbbml","description":"Managing VerneMQ tcp listeners","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Mjz-Hi1F3T47vqeszQ7","title":"HTTP API","pathname":"/1.13.0/live-administration/http-administration","siteSpaceId":"sitesp_gbbml","description":"Everything you need to know to work with the VerneMQ HTTP administration interface","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LRwAs4z_RyX4ab4Ve7X","title":"Tracing","pathname":"/1.13.0/live-administration/tracing","siteSpaceId":"sitesp_gbbml","description":"Real-time inspection","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-LOwYy-8Z_mlUEfzOVCP","title":"Introduction","pathname":"/1.13.0/monitoring/introduction","siteSpaceId":"sitesp_gbbml","description":"Description and Configuration of the built-in Monitoring mechanism","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZ-MSx3-rcir62mQY","title":"$SYSTree","pathname":"/1.13.0/monitoring/systree","siteSpaceId":"sitesp_gbbml","description":"Description and Configuration of the $SYSTree Monitoring Feature","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOwZlRA4RrvLvKR121r","title":"Graphite","pathname":"/1.13.0/monitoring/graphite","siteSpaceId":"sitesp_gbbml","description":"Description and Configuration of the Graphite exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"kK0TzSMDafZISF5fouRp","title":"Netdata","pathname":"/1.13.0/monitoring/netdata","siteSpaceId":"sitesp_gbbml","description":"Netdata Metrics","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_4Mpj4WC9_2HS2mK","title":"Prometheus","pathname":"/1.13.0/monitoring/prometheus","siteSpaceId":"sitesp_gbbml","description":"Description and Configuration of the Prometheus exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4GUqcyH9bgZrP1","title":"Health Checker","pathname":"/1.13.0/monitoring/health-check","siteSpaceId":"sitesp_gbbml","description":"The VerneMQ health checker","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LXxuI4H-koFHrIJh_Fo","title":"Status Page","pathname":"/1.13.0/monitoring/status","siteSpaceId":"sitesp_gbbml","description":"The VerneMQ Status Page","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-LOw_Z3Ep_-FQxREAOx3","title":"Introduction","pathname":"/1.13.0/plugin-development/introduction","siteSpaceId":"sitesp_gbbml","description":"Learn how to implement VerneMQ Plugins for customizing many aspects of  how VerneMQ deals with client connections, subscriptions, and message flows.","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Mjz-HiEtopgTK9uv-YZ","title":"Session lifecycle","pathname":"/1.13.0/plugin-development/sessionlifecycle","siteSpaceId":"sitesp_gbbml","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuKyNeGRoMV28-e3","title":"Subscribe Flow","pathname":"/1.13.0/plugin-development/subscribeflow","siteSpaceId":"sitesp_gbbml","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuKzHXZiuWa0EJRU","title":"Publish Flow","pathname":"/1.13.0/plugin-development/publishflow","siteSpaceId":"sitesp_gbbml","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQhdiH65oDovBdCm8JF","title":"Enhanced Auth Flow","pathname":"/1.13.0/plugin-development/enhancedauthflow","siteSpaceId":"sitesp_gbbml","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LQheuL05YHfHzrQeyMV","title":"Erlang Boilerplate","pathname":"/1.13.0/plugin-development/boilerplate","siteSpaceId":"sitesp_gbbml","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Mjz-HiJV6mdtPpibNXS","title":"Lua Scripting Support","pathname":"/1.13.0/plugin-development/luaplugins","siteSpaceId":"sitesp_gbbml","description":"Learn how to implement VerneMQ plugins using the Lua Scripting Language.","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Mjz-HiKIytf4y2Y9Rs0","title":"Webhooks","pathname":"/1.13.0/plugin-development/webhookplugins","siteSpaceId":"sitesp_gbbml","description":"How to implement VerneMQ plugins using a HTTP interface","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-LOw34pLBLrosNIqLnGB","title":"Loadtesting VerneMQ","pathname":"/1.13.0/misc/loadtesting","siteSpaceId":"sitesp_gbbml","description":"Loadtesting VerneMQ with vmq_mzbench","breadcrumbs":[{"label":"Misc"}]},{"id":"-Mjz-HiOxUxtmF-_o9Yh","title":"Not a tuning guide","pathname":"/1.13.0/misc/not-a-tuning-guide","siteSpaceId":"sitesp_gbbml","description":"","breadcrumbs":[{"label":"Misc"}]},{"id":"-LOwjE-zPylHQlvnKhiE","title":"Change Open File Limits","pathname":"/1.13.0/misc/change-open-file-limits","siteSpaceId":"sitesp_gbbml","description":"How to change the open file limits","breadcrumbs":[{"label":"Misc"}]},{"id":"hfJGpkFtww8dx0WpCTIM","title":"A typical VerneMQ deployment","pathname":"/1.13.0/guides/typical-vernemq-deployment","siteSpaceId":"sitesp_gbbml","description":"In the following we describe how a typical VerneMQ deployment can look and some of the concerns one have to take into account when designing such a system.","breadcrumbs":[{"label":"Guides"}]},{"id":"puJ0I7mQABGg3t0mEfW0","title":"VerneMQ on Kubernetes","pathname":"/1.13.0/guides/vernemq-on-kubernetes","siteSpaceId":"sitesp_gbbml","description":"This guide describes how to deploy a VerneMQ cluster on Kubernetes","breadcrumbs":[{"label":"Guides"}]},{"id":"rir5iwOhtlTdYu2qbrxd","title":"Loadtesting VerneMQ","pathname":"/1.13.0/guides/loadtesting","siteSpaceId":"sitesp_gbbml","description":"Loadtesting VerneMQ with vmq_mzbench","breadcrumbs":[{"label":"Guides"}]},{"id":"IQLZxooJ60looszfvBAi","title":"Clustering during development","pathname":"/1.13.0/guides/clustering-during-development","siteSpaceId":"sitesp_gbbml","description":"This describes a quick way to create a VerneMQ cluster on developer's machines","breadcrumbs":[{"label":"Guides"}]},{"id":"70tQDhbz7i50vN2w8Zky","title":"Not a tuning guide","pathname":"/1.13.0/guides/not-a-tuning-guide","siteSpaceId":"sitesp_gbbml","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"YVg2PM3pA5NzeKRcHgeu","title":"Change Open File Limits","pathname":"/1.13.0/guides/change-open-file-limits","siteSpaceId":"sitesp_gbbml","description":"A guide that shows how to change the open file limtits","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lm8ih8uMVXvD3Jz4x0Q","title":"Welcome","pathname":"/2.1.0","siteSpaceId":"sitesp_5K9bD","description":""},{"id":"-Lm8ih7upDn-JoFTP1o7","title":"Getting Started","pathname":"/2.1.0/getting-started","siteSpaceId":"sitesp_5K9bD","description":"A quick and simple guide to get started with VerneMQ"},{"id":"-Lm8ih80C-7l5E8-TeZ5","title":"Installing on Debian and Ubuntu","pathname":"/2.1.0/installing-vernemq/debian_and_ubuntu","siteSpaceId":"sitesp_5K9bD","description":"VerneMQ can be installed on Debian or Ubuntu-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-Lm8ih81tnT0tOTjYN83","title":"Installing on CentOS and RHEL","pathname":"/2.1.0/installing-vernemq/centos_and_redhat","siteSpaceId":"sitesp_5K9bD","description":"VerneMQ can be installed on CentOS-based systems using the binary package we provide.","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-Lm8ih82BlWFnB-ig7dQ","title":"Running VerneMQ using Docker","pathname":"/2.1.0/installing-vernemq/docker","siteSpaceId":"sitesp_5K9bD","description":"As well as being available as packages that can be installed directly into the operating systems, VerneMQ is also available as a Docker image. Below is an example of how to set up a couple of VerneMQ","breadcrumbs":[{"label":"Installing VerneMQ"}]},{"id":"-Lm8ih85gaA0ALd_4HGp","title":"Introduction","pathname":"/2.1.0/configuring-vernemq/introduction","siteSpaceId":"sitesp_5K9bD","description":"Everything you must know to properly configure VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"YRsfl2TRAj4SOkuRrCx5","title":"The VerneMQ conf file","pathname":"/2.1.0/configuring-vernemq/the-vernemq-conf-file","siteSpaceId":"sitesp_5K9bD","description":"A closer look at an example vernemq.conf file (Note: This is a work-in-progress section)","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"jsrr36iOUU6nQdTIavsb","title":"Schema Files","pathname":"/2.1.0/configuring-vernemq/schema-files","siteSpaceId":"sitesp_5K9bD","description":"Schema Files in VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8632V5ndnnYrlf","title":"Auth using files","pathname":"/2.1.0/configuring-vernemq/file-auth","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih87OsKQCXLg2LtL","title":"Auth using a database","pathname":"/2.1.0/configuring-vernemq/db-auth","siteSpaceId":"sitesp_5K9bD","description":"VerneMQ supports multiple ways to authenticate and authorize new client connections using a database.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih887H__XiC6kgvU","title":"MQTT Options","pathname":"/2.1.0/configuring-vernemq/options","siteSpaceId":"sitesp_5K9bD","description":"Configure how VerneMQ handles certain aspects of MQTT","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih89yHMyJNkoPCcA","title":"MQTT Listeners","pathname":"/2.1.0/configuring-vernemq/listeners","siteSpaceId":"sitesp_5K9bD","description":"VerneMQ supports multiple ways to configure one or many MQTT listeners.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8AqyT7Qtcn-nja","title":"HTTP Listeners","pathname":"/2.1.0/configuring-vernemq/http-listeners","siteSpaceId":"sitesp_5K9bD","description":"How to setup and configure the HTTP listener.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8BhDFjsFX_8f0W","title":"Non-standard MQTT options","pathname":"/2.1.0/configuring-vernemq/nonstandard","siteSpaceId":"sitesp_5K9bD","description":"Configure Non-Standard MQTT Options VerneMQ Supports.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8CQFT3Quk6in8W","title":"Websockets","pathname":"/2.1.0/configuring-vernemq/websockets","siteSpaceId":"sitesp_5K9bD","description":"Configure WebSocket Listeners for VerneMQ.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8Dfst0fNckc2Yo","title":"Logging","pathname":"/2.1.0/configuring-vernemq/logging","siteSpaceId":"sitesp_5K9bD","description":"Configure VerneMQ Logging.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8EzZzVqxPEwgT0","title":"Consumer session balancing","pathname":"/2.1.0/configuring-vernemq/balancing","siteSpaceId":"sitesp_5K9bD","description":"MQTT consumers can share and loadbalance a topic subscription.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8FnGDz1sqr47mT","title":"Plugins","pathname":"/2.1.0/configuring-vernemq/plugins","siteSpaceId":"sitesp_5K9bD","description":"Managing VerneMQ Plugins","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8GieTQ8EJinvn7","title":"Shared subscriptions","pathname":"/2.1.0/configuring-vernemq/shared_subscriptions","siteSpaceId":"sitesp_5K9bD","description":"Working with shared subscriptions","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8H4G2nW04D2ovk","title":"Advanced Options","pathname":"/2.1.0/configuring-vernemq/advanced_options","siteSpaceId":"sitesp_5K9bD","description":"Configure a couple of hidden options for VerneMQ","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8IVcv93NEyVpsW","title":"Storage","pathname":"/2.1.0/configuring-vernemq/storage","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8JT2T7sI0m9aEk","title":"MQTT Bridge","pathname":"/2.1.0/configuring-vernemq/bridge","siteSpaceId":"sitesp_5K9bD","description":"VerneMQ can interface with other brokers (and itself) via MQTT bridges.","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"lcnfAaaXC6jkAiGv7NNq","title":"REST Publisher","pathname":"/2.1.0/configuring-vernemq/http-pub","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Configuring VerneMQ"}]},{"id":"-Lm8ih8MYnX2vSopHbMk","title":"Introduction","pathname":"/2.1.0/vernemq-clustering/introduction","siteSpaceId":"sitesp_5K9bD","description":"Everything you must know to properly configure and deploy a VerneMQ Cluster","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-Lm8ih8NsUlWGl8kBrJb","title":"Inter-node Communication","pathname":"/2.1.0/vernemq-clustering/communication","siteSpaceId":"sitesp_5K9bD","description":"Everything you must know to properly configure and deploy a VerneMQ Cluster","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-Lm8ih8OW0mjqKJ6WI8q","title":"Dealing with Netsplits","pathname":"/2.1.0/vernemq-clustering/netsplits","siteSpaceId":"sitesp_5K9bD","description":"How does VerneMQ deals with Network Partitions aka. Netsplits.","breadcrumbs":[{"label":"VerneMQ Clustering"}]},{"id":"-Lm8ih8RoX8K8C85ABW1","title":"Introduction","pathname":"/2.1.0/live-administration/introduction","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8SF08zVzR03SHj","title":"Inspecting and managing sessions","pathname":"/2.1.0/live-administration/managing-sessions","siteSpaceId":"sitesp_5K9bD","description":"Inspecting and managing MQTT sessions","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8T4D7Iq_MImeo2","title":"Retained messages","pathname":"/2.1.0/live-administration/retained-store","siteSpaceId":"sitesp_5K9bD","description":"Inspecting the retained message store","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8ULHHLBDC4KwUU","title":"Live reconfiguration","pathname":"/2.1.0/live-administration/config_values","siteSpaceId":"sitesp_5K9bD","description":"Managing VerneMQ live config values.","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8VkaHN_hKY1pdZ","title":"Managing Listeners","pathname":"/2.1.0/live-administration/listeners","siteSpaceId":"sitesp_5K9bD","description":"Managing VerneMQ tcp listeners","breadcrumbs":[{"label":"Live Administration"}]},{"id":"SQPFizd2SUGbfhzS2xcn","title":"Certificate Management","pathname":"/2.1.0/live-administration/certificates","siteSpaceId":"sitesp_5K9bD","description":"Certificate management","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8WTy7BBj_S_76c","title":"HTTP API","pathname":"/2.1.0/live-administration/http-administration","siteSpaceId":"sitesp_5K9bD","description":"Everything you need to know to work with the VerneMQ HTTP administration interface","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8XSASy1DxKUxW6","title":"Tracing","pathname":"/2.1.0/live-administration/tracing","siteSpaceId":"sitesp_5K9bD","description":"Real-time inspection","breadcrumbs":[{"label":"Live Administration"}]},{"id":"Jlx9VNi8c5Ryyoe57n5u","title":"Output Format","pathname":"/2.1.0/live-administration/output_format","siteSpaceId":"sitesp_5K9bD","description":"Changing the output format of CLI commands","breadcrumbs":[{"label":"Live Administration"}]},{"id":"-Lm8ih8_KrMM6Gz5aLoj","title":"Introduction","pathname":"/2.1.0/monitoring/introduction","siteSpaceId":"sitesp_5K9bD","description":"Description and Configuration of the built-in Monitoring mechanism","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8afZ_ekUz56Gi-","title":"$SYSTree","pathname":"/2.1.0/monitoring/systree","siteSpaceId":"sitesp_5K9bD","description":"Description and Configuration of the $SYSTree Monitoring Feature","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8bFS7n79D_p3Dq","title":"Graphite","pathname":"/2.1.0/monitoring/graphite","siteSpaceId":"sitesp_5K9bD","description":"Description and Configuration of the Graphite exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"vj9eitnmNgpIfg2X6PKc","title":"Netdata","pathname":"/2.1.0/monitoring/netdata","siteSpaceId":"sitesp_5K9bD","description":"Netdata Metrics","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8cVtStAqvV_iRK","title":"Prometheus","pathname":"/2.1.0/monitoring/prometheus","siteSpaceId":"sitesp_5K9bD","description":"Description and Configuration of the Prometheus exporter","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8dhNWePqooH1Ht","title":"Health Checker","pathname":"/2.1.0/monitoring/health-check","siteSpaceId":"sitesp_5K9bD","description":"The VerneMQ health checker","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8eNGt6udXxx7qB","title":"Status Page","pathname":"/2.1.0/monitoring/status","siteSpaceId":"sitesp_5K9bD","description":"The VerneMQ Status Page","breadcrumbs":[{"label":"Monitoring"}]},{"id":"-Lm8ih8h2QD3pwIdSoQr","title":"Introduction","pathname":"/2.1.0/plugin-development/introduction","siteSpaceId":"sitesp_5K9bD","description":"Learn how to implement VerneMQ Plugins for customizing many aspects of  how VerneMQ deals with client connections, subscriptions, and message flows.","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8iSunh-5kucavQ","title":"Session lifecycle","pathname":"/2.1.0/plugin-development/sessionlifecycle","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8jBn-GAHmWgpme","title":"Subscribe Flow","pathname":"/2.1.0/plugin-development/subscribeflow","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8kgf4zqo46bSbs","title":"Publish Flow","pathname":"/2.1.0/plugin-development/publishflow","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8lEpiA7wob_3fb","title":"Enhanced Auth Flow","pathname":"/2.1.0/plugin-development/enhancedauthflow","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8mPIAic2PRut78","title":"Erlang Boilerplate","pathname":"/2.1.0/plugin-development/boilerplate","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8nGGxAFFVdYn90","title":"Lua Scripting Support","pathname":"/2.1.0/plugin-development/luaplugins","siteSpaceId":"sitesp_5K9bD","description":"Learn how to implement VerneMQ plugins using the Lua Scripting Language.","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8o-6p10HuCQTGD","title":"Webhooks","pathname":"/2.1.0/plugin-development/webhookplugins","siteSpaceId":"sitesp_5K9bD","description":"How to implement VerneMQ plugins using a HTTP/HTTPS interface","breadcrumbs":[{"label":"Plugin Development"}]},{"id":"-Lm8ih8ry_5NDrULDKJM","title":"Loadtesting VerneMQ","pathname":"/2.1.0/misc/loadtesting","siteSpaceId":"sitesp_5K9bD","description":"Loadtesting VerneMQ with vmq_mzbench","breadcrumbs":[{"label":"Misc"}]},{"id":"-Lm8ih8sejoJMYAcURI4","title":"Not a tuning guide","pathname":"/2.1.0/misc/not-a-tuning-guide","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Misc"}]},{"id":"nZn9GJD0SXjxbpZ8oZpJ","title":"Change Open File Limits","pathname":"/2.1.0/misc/change-open-file-limits","siteSpaceId":"sitesp_5K9bD","description":"How to change the open file limits","breadcrumbs":[{"label":"Misc"}]},{"id":"zcLjK8JQUZjqfctubigG","title":"A typical VerneMQ deployment","pathname":"/2.1.0/guides/typical-vernemq-deployment","siteSpaceId":"sitesp_5K9bD","description":"In the following we describe how a typical VerneMQ deployment can look and some of the concerns one have to take into account when designing such a system.","breadcrumbs":[{"label":"Guides"}]},{"id":"RINsmi5j1Mi4Mdm9FoMW","title":"VerneMQ on Kubernetes","pathname":"/2.1.0/guides/vernemq-on-kubernetes","siteSpaceId":"sitesp_5K9bD","description":"This guide describes how to deploy a VerneMQ cluster on Kubernetes","breadcrumbs":[{"label":"Guides"}]},{"id":"Kmsp81Q2AxYJEjGVoDuZ","title":"Loadtesting VerneMQ","pathname":"/2.1.0/guides/loadtesting","siteSpaceId":"sitesp_5K9bD","description":"Loadtesting VerneMQ with vmq_mzbench","breadcrumbs":[{"label":"Guides"}]},{"id":"ZpIBTlMaJ3pwexNQ7EIN","title":"Clustering during development","pathname":"/2.1.0/guides/clustering-during-development","siteSpaceId":"sitesp_5K9bD","description":"This describes a quick way to create a VerneMQ cluster on developer's machines","breadcrumbs":[{"label":"Guides"}]},{"id":"sW0jxS6fZaCTN5TJx6wE","title":"Not a tuning guide","pathname":"/2.1.0/guides/not-a-tuning-guide","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Guides"}]},{"id":"-Lm8ih8t7LKNaOmSSTrD","title":"Change Open File Limits","pathname":"/2.1.0/guides/change-open-file-limits","siteSpaceId":"sitesp_5K9bD","description":"A guide that shows how to change the open file limtits","breadcrumbs":[{"label":"Guides"}]},{"id":"CokQwpZehy436gguTr4E","title":"Migrating to 2.0","pathname":"/2.1.0/guides/migration-to-2-0","siteSpaceId":"sitesp_5K9bD","description":"","breadcrumbs":[{"label":"Guides"}]}]}