Skip to main content
Version: 1.21.X

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.x✅No known issues
1.21.x✅No known issues
1.22.x✅No 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.