Geneos ["Geneos"]
["Geneos > Netprobe"]["User Guide"] "1"

Kubernetes Monitoring


The end of life (EOL) date for this integration is 30 September 2020. This documentation is now archived and is no longer updated. The Collection Agent plugin for Kubernetes now replaces this integration, see Kubernetes.

Overview

Kubernetes is an extensible open-source platform for managing containerized workloads and services. It provides a container-centric management environment.

This integration provides a Gateway configuration file that enables monitoring of Kubernetes environment through a set of pre-configured Toolkit samplers.

You can query the services of your Kubernetes running environment, see the number of pods, you have the ability to describe builds and tail logs from a pod or from a container.

This guide walks you through the integration process.

Intended audience

This user guide is intended for experienced Geneos users who want to set up and configure an integration between Geneos and Kubernetes. This is also intended for users who are monitoring data from the Kubernetes environment.

As a user, you should be familiar with Python and with general administration of the Kubernetes services.

Prerequisites

The following requirements must be met on the machine where the Netprobe is installed:

  • Geneos version 4.11.x or higher.
  • Python 3.4 or higher.
  • The kubectl client binary, version 1.1 or higher. It can be downloaded from the Kubernetes website.
    • When you set it up, you will have a configuration files that you can use to access the Kubernetes environment.
  • Access to the Kubernetes environment version 1.1 or higher.

Note: The support and compatibility that ITRS provides are only limited to the currently supported versions of Kubernetes. In addition, not all resources covered in our samplers might be available in your Kubernetes environment.

Setup and configuration

The Kubernetes monitoring integration is largely pre-configured and involves these primary steps:

  1. Download the integration files from the resources site.
  2. Load the integration file in the Gateway Setup Editor.
  3. Associate the samplers with a managed entity.
  4. Configure the dataviews.

Note: The include files are intended to be read-only and should not be edited (unless the integration specifically requires for them to be modified). This is because include files can be shared between a few instances of a Gateway and best practice is to share them in their default state. It is also to make the upgrades and maintenance process of the integration files easier. All configuration should be carried out in your local Gateway files instead.

Download the integration files

  1. Download the integration package geneos-integration-kubernetes-<version>.zip from the ITRS Downloads site.
  2. As a best practice, save the files on the same machine where your Gateway is running.

The integration package includes the include/kubernetesMonitoring.xmlfile. This is a Gateway configuration file (also called an include file) containing Toolkit samplers configured for Kubernetes monitoring integration.

Load the integration files

To load the integration files into the Gateway Setup Editor, follow these steps:

  1. Open Gateway Setup Editor.
  2. In the Navigation panel, click Includes to create a new file.
  3. Enter the location of the file to include in the Location field. In this example, it is the include/kubernetesMonitoring.xml.
  4. Update the Priority field. This can be any value except 1. If you input a priority of 1, the Gateway Setup Editor will return an error.
  5. Expand the file location in the Include section.
  6. Select Click to load.
  7. Click Yes to load the new include file.

Success: Gateway configuration now appears in the Includes section.

Associate the samplers with a managed entity

After you have loaded the configuration file, the Kubernetes samplers become available for use. These samplers are associated with a pre-defined Type. To associate the samplers with a managed entity, follow these steps:

  1. In the Gateway Setup Editor, create a new managed entity by right-clicking the Managed entities folder.
  2. Under the Basic tab for the new managed entity, add a pre-configured Kubernetes type.
  3. Specify the environment associated with the samplers. By default, this is Kubernetes.
  4. Apply the managed entity to the running Netprobe.
  5. Click Validate current document to check your configuration.
  6. Click Save current document to apply the changes.

Success: After you save your changes to the managed entity, the Kubernetes dataviews appear under the managed entity on the state tree.

For more information about include files, see the 'Include' files in Gateway Setup Editor.

Configure the samplers

This integration provides a number samplers, each with a default dataview. You can customize some of them to show details of specific pods, nodes or containers. Samplers that can be customized are:

  • PodHealth
  • PodContainers
  • NodeHealth

To configure a sampler with a particular pod, node or container, use the environment variables. The value of the variable is a name or uid of what you want to see the details of.

Below you can see an example configuration of a specific PodHealth sampler.

Commands

When viewing the metrics you can also communicate with the Kubernetes environment by streaming the logs out of that environment. This is achieved by using the preconfigured commands.

The following commands are available:

  • For pods:
    • Describe pod — displays metadata and build information for this pod.
    • Get pods log — used if there is only one container. If there are more, an error is displayed.
    • Get pods containers log — used if there is more than one container. You must specify a container name to get the logs for that container.
  • For nodes:
    • Describe node — displays metadata of the selected event.
  • For events:
    • Describe event — displays metadata of the selected event.

For more information about using and configuring commands, see Gateway Commands.

Environment configuration

The default environment configuration is created by the kubernetesMonitoring.xml script. You can create a new environment based on the default and modify the environment variables according to your system.

Note: Standard variable scoping rules apply when variable reference is used in include files. Please take note of that when creating your own variables. For more information, see Variable Scoping and Resolution in User Variables and Environments.

Environment variables

The kubernetesMonitoring.xml script provides the variables that are set in the Environments section. They need to be configured to ensure that the integration monitors your target Kubernetes environment.

Variable Type Description
PYTHON_PATH String Path of the Python library located on the machine where the Netprobeis running.
KUBECTL_PATH String

Path of the kubectl client used to connect to a cluster,

KUBE_MANUAL_SAMPLE Integer Frequency of sampling. If checks are executed manually, the value is 0.
KUBE_LABEL String Used to assign a name to a group of samplers.

You can also use environment variables when configuring the samplers. The available environment variables are:

Variable Type Description
KUBECTL_GET_ALL_SPACES String Get a list of all name spaces. This is used by administrators to get access to everything in the Kubernetes environment.
KUBECTL_GET_AUTH String Get a list of authorize tokens and their expiration.
KUBECTL_GET_ROUTE String

Get a list of routes and their target ports.

KUBECTL_GET_PROJECTS String Get a list of associated projects.
KUBECTL_GET_QUOTAS String Get a list of quotas and limits.
KUBECTL_GET_PODS_METADATA String Get a list of pods and their metadata.
KUBECTL_GET_PODS_SPECDATA String Get a list of pods and their specdata.
KUBECTL_GET_PODS_HEALTH String Get a list of pod's health conditions. You must provide pod's name or uid.
KUBECTL_GET_POD_CONTAINERS String Get a list of a pod's containers and their statuses. You must provide pod's name or uid.
KUBECTL_GET_SERVICES String Get a list of services and their port info.
KUBECTL_GET_EVENTS String Get a list of recent events and their descriptions.
KUBECTL_GET_NODES_METADATA String Get a list of nodes and their associated metadata.
KUBECTL_GET_NODES_STATUS String Get a list of nodes and their hardware status.
KUBECTL_GET_NODES_INFO String Get a list of nodes and their hardware info (for example, OS, Arch, etc).
KUBECTL_GET_NODE_HEALTH String Get a list of node's health conditions. You must provide node's name or uid.
     

Metrics and dataviews

The Kubernetes monitoring integration provides a number of samplers each with a default dataview. The sections below show example dataviews.

Note: Your access to the dataviews in Geneos depends on your permission levels in Kubernetes. If you do not have permission to view a certain pod, you cannot see applicable dataviews in Geneos.

Kube-Events

This dataview displays a list of events and the number of times the events occurred along with their details.

Kube-NodeHealth

This dataview retrieves data about the condition and state of your Kubernetes node.

Kube-Nodes-Info

This dataview lists cluster and machines that host the compartmentalized environment.

Kube-Nodes-MetaData

This dataview displays a list of connected cluster nodes and their metadata.

Kube-Nodes-Status

This dataview displays a high level overview of all nodes, capacity, and where they are located.

Kube-OAuthTokens

This dataview displays a list of access tokens to accounts that logged into your Kubernetes project. You can check if users logged through the client or the web console, how many successful logins there were, and how much time the person has in their session.

Kube-PodContainers

This dataview displays a list of containers in a specific pod, it also shows the state of the containers.

Kube-PodHealth

This dataview displays condition and state of a specific pod.

Kube-Pods-MetaData

This dataview displays an overview of all pods running in your environment. Kubernetes uses the labelling system as a way to identify and add properties to these pods. This information is stored in the labels.

Kube-Pods-SpecData

This dataview displays specification of the pods and how many containers there are. For example, if you forget which node your pod is running on, you can check it here. You can also check how long it takes for the pod to terminate.

Kube-Projects

This dataview displays a list of projects, their details and current running state.

Kube-Quotas

This dataview displays a list of quota limits and current consumption on pods, secrets and other resources.

Kube-Routes

This dataview displays a list of services showing their route and port information (for example, available ports).

Kube-Services

This dataview displays a list of services available in your Kubernetes environment and their current status.