Setting up the monitoring with Datadog
This section explains, in case of a Kubernetes deployment, how to set up the collection by Datadog of the metrics provided through the SonarQube Community Build’s Web API (Openmetrics format). In the following, we assume that you are installing both SonarQube Community Build and Datadog to a Kubernetes cluster via the corresponding Helm charts.
Introduction
To set up Datadog to monitor SonarQube Community Build, you have to specify an annotation in SonarQube Community Build’s Helm chart related to Datadog. Since Datadog doesn’t understand the native Prometheus’ Bearer authentication annotation, you cannot use it. Instead, you can specify an annotation that will manage a Datadog configuration file.
The illustration below shows the setup and monitoring process:
- When you install the SonarQube Community Build’s Helm chart in the Kubernetes cluster, the chart deploys the Datadog configuration file on the sonarqube-kubernetes-datadog_Q0019 Pod.
- The Datadog agent then:
- Reads the Datadog configuration file.
- Authenticates to the SonarQube Community Build’s Web API endpoint and pulls the Prometheus metrics from the endpoint.
- Pushes the metrics to the Datadog dashboard.
Setting up the Datadog authentication to the Web API endpoint
You need to create a secret containing the monitoring passcode and then mount that secret in the Datadog agent. To do so, add the code below to the values.yaml
file of the Datadog’s Helm chart. In this example, we mount the subkey passcode
from the datadog-api-secret
secret into /etc/secret-volume
.
Specifying the annotation for the Datadog agent
Add the code below to the values.yaml
file of the SonarQube Community Build’s Helm chart. Note that:
- This example corresponds to the example shown shown in Setting up the Datadog authentication to the Web API endpoint above: you must adapt the
reader
andwriter
sections to your values. - If a webcontext is used in the path at which to serve SonarQube Community Build then you must add it to the
openmetrics_endpoint
. For example, if the/sonarqube
web context were used here then we would have:
"openmetrics_endpoint": "http://%%host%%:9000/sonarqube/api/monitoring/metrics"
Was this page helpful?