This artical explains how to expose HiveMQ JMX metrics in DataDog using Kubernetes
\uD83D\uDCD8 Pre-requisites
Helm version v3+
Running Kubernetes cluster version 1.18.0 or higher
kubectl lastest version
\uD83D\uDCD8 Instructions
Configure DataDog agent using the Helm chart
Add Datadog helm repository
helm repo add datadog https://helm.datadoghq.com helm repo update
Create
datadog-values.yaml
. For full values check here
Please refer to following the example ofdatadog-values.yaml
logLevel: DEBUG targetSystem: "linux" datadog: apiKey: <your api key from your account> #Logs configurations logs: enabled: true containerCollectAll: true containerCollectUsingFiles: true #Plesse configure this setting based on your region site: datadoghq.eu tags: [] # datadog.kubelet.tlsVerify should be `false` on kind and minikube # to establish communication with the kubelet kubelet: tlsVerify: false #Following settings are required to collect the Kubernetes events with the Cluster Agent collectEvents: true clusterAgent: rbac: create: true # setting to read JMX metrics from HiveMQ agents: image: tagSuffix: "jmx"
install Datadog agent using Helm
kubectl create ns <namespace> helm install -f datadog-values.yaml <release name> datadog/datadog
Verify installation and check the agent pod’s status
kubectl get pods
Also, check the agent’s log’s to confirm.
Install HiveMQ using Operator
Configure
hivemq-values.yaml
based on your requirement and then add podAnnotations for Datadog to auto-discover HiveMQ metrics and logs. Check here for details.
Please find below a minimalist config example ofhivemq-values.yaml
hivemq: image: hivemq/hivemq4:k8s-4.7.5 imagePullPolicy: Always cpu: 8 memory: 8Gi nodeCount: "3" podAnnotations: ad.datadoghq.com/hivemq.check_names: '[\"hivemq\"]' ad.datadoghq.com/hivemq.init_configs: '[{\"is_jmx\": true, \"collect_default_metrics\": true}]' ad.datadoghq.com/hivemq.instances: '[{\"host\": \"%%host%%\",\"port\":\"9010\"}]' ad.datadoghq.com/hivemq.logs: '[{\"source\":\"hivemq\",\"service\":\"hivemq-hivemq-1778-mqtt\"}]' ports: - name: "mqtt" port: 1883 expose: true patch: - '[{"op":"add","path":"/spec/type","value":"LoadBalancer"}]' - name: "cc" port: 8080 expose: true patch: - '[{"op":"add","path":"/spec/sessionAffinity","value":"ClientIP"}]' operator: admissionWebhooks: # Enable the admission hook enabled: false monitoring: enabled: false dedicated: false
Install hivemq using the following command
helm upgrade --install -f hivemq-values.yaml <release name> hivemq/hivemq-operator
verify installation
kubectl get pods
Login to your Datadog account and click “Metrics” =>” Explorer” from the left navigation links. You will be redirected to the “Graph your data” page. By default, you will see “system.cpu.user“ metrics and its data.
Type hivemq in the search box and you should be able to see the list of available metrics.Check HiveMQ dashboard
Uninstall DataDog and HiveMQ
helm list helm uninstall <datadog release name> helm uninstall <hivemq release name> kubectl delete ns <namespce>