Using Datadog and Prometheus with Gluu Cloud Native edition#
Prerequisites#
- Datadog Agent 6.5.0+
 
Instructions#
- Install Gluu server using one of the following
 - Kustomize
 - 
Create a directory called monitoring for the manifests needed.
mkdir monitoring && cd monitoring - 
Get zip file of manifests and unzip
wget https://github.com/GluuFederation/cloud-native-edition/raw/4.1/monitoring.zip unzip monitoring.zip - 
Create a namespace for Datadog and Prometheus
kubectl create ns datadog kubectl create ns prometheus 
Using Kubectl commands#
- 
Configure RBAC permissions for the datadog agent in
datadognamespace.kubectl create -f "https://raw.githubusercontent.com/DataDog/datadog-agent/master/Dockerfiles/manifests/rbac/clusterrole.yaml" -ns datadog kubectl create -f "https://raw.githubusercontent.com/DataDog/datadog-agent/master/Dockerfiles/manifests/rbac/serviceaccount.yaml" -ns datadog kubectl create -f "https://raw.githubusercontent.com/DataDog/datadog-agent/master/Dockerfiles/manifests/rbac/serviceaccount.yaml" -ns datadog - 
Create a
Secretcontaining datadog API key. It will be used in datadog agent Daemonset.Warning
If the name of the secret below is to be changed , change it in the respective
DaemonSetas well.kubectl create secret generic datadog-secret --from-literal api-key="<API-KEY>" - 
Create a Datadog agent with custom metrics and APM logs collection enabled.
kubectl apply -f datadog/ - 
Install Prometheus
kubectl apply -f prometheus/Note
For datadog and prometheus integration, prometheus deployment has the annotations that allow datadog autodiscovery feature and gets all the metrics that prometheus collects from the cluster.
annotations: ad.datadoghq.com/prometheus.check_names: | ["openmetrics"] ad.datadoghq.com/prometheus.init_configs: | [{}] ad.datadoghq.com/prometheus.instances: | [ { "prometheus_url": "http://%%host%%:%%port%%/metrics", "namespace": "monitoring", "metrics": [ {"promhttp_metric_handler_requests_total": "prometheus.handler.requests.total"}] } ] - 
[Optional] Install kube state metrics which exposes all the metrics on /metrics URI. Prometheus can scrape all the metrics exposed by kube state metrics. This will be created in the
kube-systemnamespace.kubectl apply -f kube-state-metrics/- Add the following configuration as part of prometheus job configuration.
 
- job_name: 'kube-state-metrics' static_configs: - targets: ['kube-state-metrics.kube-system.svc.cluster.local:8080']Note
This part has been included in by default in proth-cm. If it is not being used, it should be removed. If not it will cause health check error in prometheus targets.
 
Using helm#
Prerequisites#
- Helm 2.10+
 - Tiller
 
Datadog#
- 
Install Datadog
helm install --name datadog-agent-v1 \ --set datadog.apiKey=<DataDog API Key> \ --set datadog.apmEnabled=true \ --set datadog.logsEnabled=true \ stable/datadog --namespace datadog - 
Install prometheus
Note
The custom
values.yamlfile above has the annotations needed to integrate datadog with prometheus.helm install --name prometheus --namespace prometheus -f helm/prometheus-values.yaml stable/prometheus- 
Access prometheus UI via port-forwarding or switch prometheus service upon installation to
LoadBalancerexport PROMETHEUS_POD_NAME=$(kubectl get pods --namespace prometheus -l "app=prometheus,component=server" -o jsonpath="{.items[0].metadata.name}") kubectl --namespace prometheus port-forward PROMETHEUS_POD_NAME 9090 
 - 
 - 
[Optional] Install kube state metrics which exposes all the metrics on /metrics URI. Prometheus can scrape all the metrics exposed by kube state metrics. This will be created in the
kube-systemnamespace.helm2 install --name kube-state stable/kube-state-metrics- Add the kube-state metrics job in prometheus serverFiles.
 
- job_name: 'kube-state-metrics' static_configs: - targets: ['kube-state-kube-state-metrics.default.svc.cluster.local:8080']Note
All the metrics will be exported to datadog
metrics->summary