Skip to content

Memcached Exporter

Memcached Exporter is used to expose metrics from a running Memcached deployment. The memcached exporter is an integrated part of the memcached deployment in Genestack but will need to be enabled.

Note

To deploy metric exporters you will first need to deploy the Prometheus Operator, see: (Deploy Prometheus).

Deploy the Memcached Cluster With Monitoring Enabled

Edit the Helm overrides file for memcached at /etc/genestack/helm-configs/memcached/memcached-helm-overrides.yaml and add the following values to enable the memcached exporter:

metrics:
  enabled: true
  serviceMonitor:
    enabled: true

Once the changes have been made, apply the changes to the memcached deployment with the /opt/genestack/bin/install-memcached.sh script:

/opt/genestack/bin/install-memcached.sh

#!/bin/bash
# shellcheck disable=SC2124,SC2145,SC2294
GLOBAL_OVERRIDES_DIR="/etc/genestack/helm-configs/global_overrides"
SERVICE_CONFIG_DIR="/etc/genestack/helm-configs/memcached"
BASE_OVERRIDES="/opt/genestack/base-helm-configs/memcached/memcached-helm-overrides.yaml"

# Read memcached version from helm-chart-versions.yaml
VERSION_FILE="/etc/genestack/helm-chart-versions.yaml"
if [ ! -f "$VERSION_FILE" ]; then
    echo "Error: helm-chart-versions.yaml not found at $VERSION_FILE"
    exit 1
fi

# Extract memcached version using grep and sed
MEMCACHED_VERSION=$(grep 'memcached:' "$VERSION_FILE" | sed 's/.*memcached: *//')

if [ -z "$MEMCACHED_VERSION" ]; then
    echo "Error: Could not extract memcached version from $VERSION_FILE"
    exit 1
fi

HELM_CMD="helm upgrade --install memcached oci://registry-1.docker.io/bitnamicharts/memcached \
    --version ${MEMCACHED_VERSION} \
    --namespace=openstack \
    --timeout 120m \
    --post-renderer /etc/genestack/kustomize/kustomize.sh \
    --post-renderer-args memcached/overlay"

HELM_CMD+=" -f ${BASE_OVERRIDES}"

for dir in "$GLOBAL_OVERRIDES_DIR" "$SERVICE_CONFIG_DIR"; do
    if compgen -G "${dir}/*.yaml" > /dev/null; then
        for yaml_file in "${dir}"/*.yaml; do
            # Avoid re-adding the base override file if present in the service directory
            if [ "${yaml_file}" != "${BASE_OVERRIDES}" ]; then
                HELM_CMD+=" -f ${yaml_file}"
            fi
        done
    fi
done

HELM_CMD+=" $@"

echo "Executing Helm command:"
echo "${HELM_CMD}"
eval "${HELM_CMD}"