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 the DataDog agent using the Helm chart
Add Datadog helm repository
Code Block 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
Code Block language 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
Code Block language bash kubectl create ns <namespace> helm install -f datadog-values.yaml <release name> datadog/datadog
Verify installation and check the agent pod’s status
Code Block language bash kubectl get pods
Also, check the agent’s
...
logs 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
Code Block language yaml hivemq: image: hivemq/hivemq4:k8s-4.7.5 imagePullPolicy: Always cpu: 8 memory: 8Gi nodeCount: "3" podAnnotations: ad.datadoghq.com/hivemq.
...
checks: '
...
{ \"hivemq\"
...
: {
...
\"init_
...
config\":
...
{ \"is_jmx\": true, \"collect_default_metrics\": true
...
, },
...
\"instances\":
...
[ { \"host\": \"%%host%%\", \"port\": \"9010\" }
...
] }
...
}' 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
If you would like to add more metrics to available HiveMQ metrics, please refer the following example.
Code Block hivemq: podAnnotations: ad.datadoghq.com/hivemq.checks: '{ \"hivemq\": { \"init_config\": { \"is_jmx\": true, \"collect_default_metrics\": true,
...
\"conf\": [ { \"include\": { \"bean\": \"metrics:name=com.hivemq.jvm.memory.heap.max\", \"attribute\": { \"Value\": { \"alias\": \"hivemq.jvm.memory.heap.max\", \"metric_type\": \"gauge\" } } } }, { \"include\": { \"bean\": \"metrics:name=com.hivemq.jvm.memory.heap.used\", \"attribute\": { \"Value\": { \"alias\": \"hivemq.jvm.memory.heap.used\", \"metric_type\": \"gauge\" } } } }, { \"include\": { \"bean\": \"metrics:name=com.hivemq.jvm.garbage-collector.G1-Young-Generation.time\", \"attribute\": { \"Value\": { \"alias\": \"hivemq.jvm.garbage.collector.G1.Young.Generation.time\", \"metric_type\": \"gauge\" } } } }, { \"include\": { \"bean\": \"metrics:name=com.hivemq.jvm.garbage-collector.G1-Old-Generation.time\", \"attribute\": { \"Value\": { \"alias\": \"hivemq.jvm.garbage.collector.G1.Old.Generation.time\", \"metric_type\": \"gauge\" } } } } ] }, \"instances\": [ { \"host\": \"%%host%%\", \"port\": \"9010\" } ] } }'
Install HiveMQ using the following command
Code Block language bash helm upgrade --install -f hivemq-values.yaml <release name> hivemq/hivemq-operator
verify installation
Code Block language bash 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
...
their data.
Type "hivemq
" in the search box and you should be able to see the list of available metrics.
...
Create HiveMQ dashboard:
Click the “New Dashboard” link from the left navigation links.
enter the name and select the “New Screenboard” button.
Click the “Gear” icon from the top right corner and click the “Import Dashboard JSON” link
Import the attached HiveMq dashboard JSON and done
Check the HiveMQ dashboard to view HiveMQ Metrics.
Uninstall DataDog and HiveMQ
Code Block language bash helm list helm uninstall <datadog release name> helm uninstall <hivemq release name> kubectl delete ns <namespce>