Exporting Metrics
Internally, Linkerd stores its metrics in a Prometheus instance that runs as part of the control plane. There are several basic approaches to exporting metrics data from Linkerd:
If you are using Prometheus as your own metrics store, we recommend taking advantage of Prometheus’s federation API, which is designed exactly for the use case of copying data from one Prometheus to another.
Simply add the following item to your in your Prometheus config file (replace {{.Namespace}}
with the namespace where Linkerd is running):
Alternatively, if you prefer to use Prometheus’ ServiceMonitors to configure your Prometheus, you can use this ServiceMonitor YAML (replace {{.Namespace}}
with the namespace where Linkerd is running):
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: linkerd-prometheus
name: linkerd-federate
namespace: {{.Namespace}}
spec:
endpoints:
- interval: 30s
params:
match[]:
- '{job="linkerd-proxy"}'
- '{job="linkerd-controller"}'
path: /federate
port: admin-http
honorLabels: true
- action: keep
regex: '^prometheus$'
sourceLabels:
- '__meta_kubernetes_pod_container_name'
jobLabel: app
matchNames:
- {{.Namespace}}
selector:
matchLabels:
linkerd.io/control-plane-component: prometheus
Once the metrics are in your Prometheus, Linkerd’s proxy metrics will have the label job="linkerd-proxy"
and Linkerd’s control plane metrics will have the label job="linkerd-controller"
. For more information on specific metric and label definitions, have a look at Proxy Metrics.
For more information on Prometheus’ /federate
endpoint, have a look at the .
If you are not using Prometheus as your own long-term data store, you may be able to leverage one of Prometheus’s many integrations to automatically extract data from Linkerd’s Prometheus instance into the data store of your choice. Please refer to the Prometheus documentation for details.
If neither Prometheus federation nor Prometheus integrations are options for you, it is possible to call Prometheus’s APIs to extract data from Linkerd.
Note
If your data store is outside the Kubernetes cluster, it is likely that you’ll want to set up at a domain name of your choice with authentication.
Similar to the /federate
API, Prometheus provides a JSON query API to retrieve all metrics:
curl http://linkerd-prometheus.linkerd.svc.cluster.local:9090/api/v1/query?query=request_total
Finally, if you want to avoid Linkerd’s Prometheus entirely, you can query the Linkerd proxies directly on their /metrics
endpoint.
and then: