Skip to main content
Version: 1.21

Kubernetes Fury Monitoring

Kubernetes Fury Monitoring provides a fully-fledged monitoring stack for the Kubernetes Fury Distribution (KFD). This module extends and improves upon the Kube-Prometheus project.

If you are new to KFD please refer to the official documentation on how to get started with KFD.

Overview

This module is designed to give you full control and visibility over your cluster operations. Metrics from the cluster and the applications are collected and clean analytics are offered via a visualization platform, Grafana.

The centerpiece of this module is the [prometheus-operator], which offers the easy deployment of the following as controllers:

  • Prometheus: An open-source monitoring and alerting toolkit for cloud-native applications
  • Alertmanager: Manages alerts sent by the Prometheus server and route them through receiver integrations such as email, Slack, or PagerDuty
  • ServiceMonitor: Declaratively specifies how groups of services should be monitored, by automatically generating Prometheus scrape configuration based on the definition

Since the export of certain metrics can be heavily cloud-provider specific, we provide a bunch of cloud-provider specific configuration. The setups we currently support include:

  • Google Kubernetes Engine (GKE)
  • Azure Kubernetes Service (AKS)
  • Elastic Kubernetes Service (EKS)
  • OVH Kubernetes Service
  • on-premises or self-managed cloud clusters

Most of the components in this module are deployed in namespace monitoring, unless the functionality requires a permission that forces it to be deployed in the namespace kube-system.

Packages

Kubernetes Fury Monitoring provides the following packages:

PackageVersionDescription
prometheus-operator0.53.1Operator to deploy and manage Prometheus and related resources
prometheus-operated2.32.1Prometheus instance deployed with Prometheus Operator's CRD
alertmanager-operated0.23.0Alertmanager instance deployed with Prometheus Operator's CRD
grafana8.3.3Grafana deployment to query and visualize metrics collected by Prometheus
goldpinger3.3.0Goldpinger makes calls between its instances for visibility and alerting
kube-proxy-metrics0.11.0RBAC Proxy to expose kube-proxy metrics for all cloud environments
kube-state-metrics2.3.0Service Monitor for Kubernetes objects such as Deployments, Nodes and Pods
node-exporter1.3.1Service Monitor for hardware and OS metrics exposed by *NIX kernels
metrics-server0.5.2Resource metrics collection from kubelet and exposition through [Metrics API][metric-api]
Thanos0.24.0Thanos is a high-availability Prometheus setup that provides long term storage via an external object store
x509-exporter2.12.1Provides monitoring for certificates

Integration with cloud providers

One of the following components can be used to enable service monitoring in each cloud environment:

ComponentDescription
aks-smService Monitor to collect Kubernetes components metrics from AKS
gke-smService Monitor to collect Kubernetes components metrics from GKE
eks-smService Monitor to collect Kubernetes components metrics from EKS
ovh-smService Monitor to collect Kubernetes components metrics from OVH Kubernetes Service
kubeadm-smService Monitors, Prometheus rules and alerts for Kubernetes components of self-managed or on-premises clusters

Please refer the individual package documentation for further details.

Compatibility

Kubernetes VersionCompatibilityNotes
1.20.xNo known issues
1.21.xNo known issues
1.22.xNo known issues
1.23.x⚠️Conformance tests passed. Not officially supported.

Check the compatibility matrix for additional information about previous releases of the modules.

Usage

Prerequisites

ToolVersionDescription
furyctl>=0.6.0The recommended tool to download and manage KFD modules and their packages. To learn more about furyctl read the official documentation.
kustomize>=3.5.0Packages are customized using kustomize. To learn how to create your customization layer with kustomize, please refer to the repository.

Deployment

  1. List the packages you want to deploy and their version in a Furyfile.yml
bases:
- name: monitoring/prometheus-operator
version: v1.14.2
- name: monitoring/prometheus-operated
version: v1.14.2
- name: monitoring/alertmanager-operated
version: v1.14.2
- name: monitoring/node-exporter
version: v1.14.2
- name: monitoring/kube-state-metrics
version: v1.14.2
- name: monitoring/grafana
version: v1.14.2
- name: monitoring/goldpinger
version: v1.14.2

Along with the primary components, include one of the following components, based on the cloud provider for service monitoring:

  • ServiceMonitor for AWS EKS cluster
  ...
- name: monitoring/eks-sm
version: v1.14.2
  • ServiceMonitor for Azure AKS cluster
  ...
- name: monitoring/aks-sm
version: v1.14.2
  • ServiceMonitor for GCP GKE cluster
  ...
- name: monitoring/gke-sm
version: v1.14.2
  • ServiceMonitor for OVH cluster
  ...
- name: monitoring/ovh-sm
version: v1.14.2
  • ServiceMonitor for on-premises and for self-managed cluster
  ...
- name: monitoring/kubeadm-sm
version: v1.14.2

See furyctl documentation for additional details about Furyfile.yml format.

  1. Execute furyctl vendor -H to download the packages

  2. Inspect the download packages under ./vendor/katalog/monitoring.

  3. Define a kustomization.yaml that includes the ./vendor/katalog/monitoring directory as resource.

To deploy the packages to your cluster, define a kustomization.yaml with the following content:

bases:
- ./vendor/katalog/monitoring/prometheus-operator
- ./vendor/katalog/monitoring/prometheus-operated
- ./vendor/katalog/monitoring/alertmanager-operated
- ./vendor/katalog/monitoring/node-exporter
- ./vendor/katalog/monitoring/kube-state-metrics
- ./vendor/katalog/monitoring/grafana
- ./vendor/katalog/monitoring/goldpinger

Include in the kustomization also the servicemonitor package specific to each service provider as follows:

  • For AWS EKS
  ...
- ./vendor/katalog/monitoring/eks-sm

  • For GCP GKE
  ...
- ./vendor/katalog/monitoring/gke-sm

  • For Azure AKS
  ...
- ./vendor/katalog/monitoring/aks-sm

  • For On-premises and for self-managed
  ...
- ./vendor/katalog/monitoring/kubeadm-sm

  1. To deploy the packages to your cluster, execute:
kustomize build . | kubectl apply -f -

Examples

To see examples on how to customize Fury Kubernetes Monitoring packages, please go to examples directory.