Azure Kubernetes Metrics

Collect and ship Azure Kubernetes container service metrics to Logstash and Elasticsearch

Metricbeat is a lightweight shipper that helps you monitor Azure Kubernetes Service by collecting metrics from the containers running on the host system. Configure Metricbeat using the pre-defined examples below to collect and ship Azure Kubernetes service metrics and statistics to Logstash or Elasticsearch.

Install Integration

Please click on the Install Integration button to configure your stack for this source.

Install Kube-State-Metrics

You are going to need an instance of Kube State Metrics running in your cluster so that we can access different metrics that aren't accessible using just Metricbeat. Kube-state-metrics is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects.

In the Azure cloud shell run the following command to download the kube-state-metrics.

go get k8s.io/kube-state-metrics

Now change into the newly downloaded directory:

cd go/src/k8s.io/kube-state-metrics/

Then to deploy this project to your cluster you simply run:

kubectl apply -f examples/standard

Read more about what configuration and options are available for Kube State Metrics (opens in a new tab) There are different settings and configurations you can use specifically for your cluster but for this example the default settings are being used.

Download Manifest File

Download the metricbeat kubernetes deployment manifest using the link below:

Click to download metricbeatbeat-kubernetes-7.10.0.yaml (opens in a new tab)

Insert stack details

Now you have the manifest you're going to want to add your Stack details. Open the file in a text editor.

Locate the environment variables controlling the logging destination and enter your Stacks Logstash input information.

You need to change the environment variables around lines 54.

⚠️

No input available! Your stack is missing the required input for this data source.

Talk to support to add the input

This is because Kubernetes runs a Metricbeat instance on each node in the cluster and also an additional single instance of Metricbeat to retrieve metrics for the cluster itself.

Deploy pod

Now your Metricbeat deployment manifest is updated with your Stack details, you can deploy it using the following command in Azure Cloud Shell:

kubectl apply -f metricbeat-kubernetes-7.10.0.yaml

Confirm deployment succesful

Confirm that your pod has successfully been deployed using one or all of the following commands in Azure Cloud Shell:

kubectl get po -A
 
kubectl --namespace=kube-system get ds/metricbeat
 
kubectl --namespace=kube-system get pods

You should see a pod for each Kubernetes node with a name similar to metricbeat-abcde listed.

Check Logit.io for your logs

Data should now have been sent to your Stack.

View My Data

If you don't see take a look at How to diagnose no data in Stack below for how to diagnose common issues.

Example Log

You should now start to see logs arriving in Kibana from your Kubernetes cluster, similar to the example below.

Logs arriving in Kibana