Skip to main content
Version: 1.22.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)
  • 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.57.0Operator to deploy and manage Prometheus and related resources
prometheus-operated2.36.1Prometheus instance deployed with Prometheus Operator's CRD
alertmanager-operated0.24.0Alertmanager instance deployed with Prometheus Operator's CRD
blackbox-exporter0.24.0Prometheus exporter that allows blackbox probing of endpoints over HTTP, HTTPS, DNS, TCP, ICMP and gRPC.
grafana8.5.5Grafana deployment to query and visualize metrics collected by Prometheus
kube-proxy-metrics0.12.0RBAC proxy to securely expose kube-proxy metrics
kube-state-metrics2.5.0Service that generates metrics from Kubernetes API objects
node-exporter1.3.1Prometheus exporter for hardware and OS metrics exposed by *NIX kernels
prometheus-adapter0.9.1Kubernetes resource metrics, custom metrics, and external metrics APIs implementation.
thanos0.24.0Thanos is a high-availability Prometheus setup that provides long term storage via an external object store
x509-exporter3.2.0Provides 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-smServiceMonitor to collect Kubernetes components metrics from AKS
gke-smServiceMonitor to collect Kubernetes components metrics from GKE
eks-smServiceMonitor to collect Kubernetes components metrics from EKS
kubeadm-smServiceMonitors, 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.21.x✅No known issues
1.22.x✅No known issues
1.24.x✅No known issues
1.24.x✅No known issues

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
versions:
monitoring: v2.0.1

bases:
- name: monitoring/prometheus-operator
- name: monitoring/prometheus-operated
- name: monitoring/alertmanager-operated
- name: monitoring/blackbox-exporter
- name: monitoring/kube-proxy-metrics
- name: monitoring/kube-state-metrics
- name: monitoring/grafana
- name: monitoring/node-exporter
- name: monitoring/prometheus-adapter
- name: monitoring/x509-exporter

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
  • ServiceMonitor for Azure AKS cluster
...
- name: monitoring/aks-sm
  • ServiceMonitor for GCP GKE cluster
...
- name: monitoring/gke-sm
  • ServiceMonitor for on-premises and self-managed cluster
...
- name: monitoring/kubeadm-sm

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. 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/blackbox-exporter
- ./vendor/katalog/monitoring/kube-proxy-metrics
- ./vendor/katalog/monitoring/kube-state-metrics
- ./vendor/katalog/monitoring/grafana
- ./vendor/katalog/monitoring/node-exporter
- ./vendor/katalog/monitoring/prometheus-adapter
- ./vendor/katalog/monitoring/x509-exporter

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 self-managed
...
- ./vendor/katalog/monitoring/kubeadm-sm

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

Examples​

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