Home

Awesome

<!-- markdownlint-disable MD033 --> <h1> <img src="https://github.com/sighupio/fury-distribution/blob/main/docs/assets/fury-epta-white.png?raw=true" align="left" width="90" style="margin-right: 15px"/> Kubernetes Fury Monitoring </h1> <!-- markdownlint-enable MD033 -->

Release License Slack

<!-- <KFD-DOCS> -->

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:

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

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

Packages

Kubernetes Fury Monitoring provides the following packages:

PackageVersionDescription
prometheus-operator0.76.2Operator to deploy and manage Prometheus and related resources
prometheus-operated2.54.1Prometheus instance deployed with Prometheus Operator's CRD
alertmanager-operated0.26.0Alertmanager instance deployed with Prometheus Operator's CRD
blackbox-exporter0.25.0Prometheus exporter that allows blackbox probing of endpoints over HTTP, HTTPS, DNS, TCP, ICMP and gRPC.
grafana11.3.0Grafana deployment to query and visualize metrics collected by Prometheus
karma0.113Karma deployment to visualize alerts sent by AlertManager
kube-proxy-metrics0.18.0RBAC proxy to securely expose kube-proxy metrics
kube-state-metrics2.13.0Service that generates metrics from Kubernetes API objects
node-exporter1.8.2Prometheus exporter for hardware and OS metrics exposed by *NIX kernels
prometheus-adapter0.12.0Kubernetes resource metrics, custom metrics, and external metrics APIs implementation.
thanos (DEPRECATED)0.34.0Thanos is a high-availability Prometheus setup that provides long term storage via an external object store
x509-exporter3.17.0Provides monitoring for certificates
mimir2.14.0Mimir is an open source, horizontally scalable, highly available, multi-tenant TSDB for long-term storage for Prometheus.
haproxyN.A.Grafana dashboards and prometheus rules (alerts) for HAproxy.

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 to the individual package documentation for further details.

Compatibility

Kubernetes VersionCompatibilityNotes
1.28.x:white_check_mark:No known issues
1.29.x:white_check_mark:No known issues
1.30.x:white_check_mark:No known issues
1.31.x:white_check_mark:No known issues

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

Usage

Prerequisites

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

Deployment with furyctl legacy

  1. List the packages you want to deploy and their version in a Furyfile.yml
versions:
  monitoring: v3.3.0

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 your cloud provider for service monitoring:

  ...
  - name: monitoring/eks-sm
  ...
  - name: monitoring/aks-sm
  ...
  - name: monitoring/gke-sm
  ...
  - name: monitoring/kubeadm-sm

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

  1. Execute furyctl legacy 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:

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

Examples

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

<!-- Links --> <!-- </KFD-DOCS> --> <!-- <FOOTER> -->

Contributing

Before contributing, please read first the Contributing Guidelines.

Reporting Issues

In case you experience any problems with the module, please open a new issue.

License

This module is open-source and it's released under the following LICENSE

<!-- </FOOTER> -->