• EnglishEspañol日本語한국어Português
  • Log inStart now

Tutorial: Monitor Redis running on Kubernetes


This tutorial applies to the Kubernetes integration v3 installed using Helm. For instructions on how to do this on v2 using helm please check this section. To check how to configure services on top of plain manifest, check out this other page.

If you have a service running on Kubernetes, and it's a service we support, you can enable monitoring of that service by adding a configuration section for that integration to the Kubernetes integration's config.

This tutorial shows how to enable monitoring for a Redis service running on the Kubernetes PHP Guestbook. For the general procedure, see Monitor a Kubernetes-running service.

What you need

Step 1: Set up an example Redis application

This tutorial builds on the Kubernetes tutorial Deploying a PHP Guestbook application with Redis. Skip the Kubernetes tutorial and run the following command to set up the application needed for our tutorial:

kubectl create -f https://raw.githubusercontent.com/kubernetes/examples/master/guestbook/all-in-one/guestbook-all-in-one.yaml

If you'd like to first complete the Kubernetes tutorial, follow their tutorial instructions but do not follow the instructions in the Cleaning up section.

Step 2: Enable monitoring of Redis instances

The PHP Guestbook application has three Redis instances: one master and two replica instances. Each instance is tagged with a label where app=redis. For this example, we're using our Redis monitoring integration. It can monitor both master and replica instances of Redis, so we don’t have to distinguish between them.

  1. In the values-newrelic.yaml YAML file for our helm chart you need to update the newrelic-infrastructure.integrations section. From the list of integration configs, get the Redis integration YAML and add it to the Kubernetes config. The Redis-specific configuration is contained under the redis-config.yml: key:

    # Run auto discovery to find pods with label "app=redis"
    # https://docs.newrelic.com/docs/integrations/host-integrations/installation/container-auto-discovery
    # Run discovery for Kubernetes. Use the following optional arguments:
    # --namespaces: Comma separated list of namespaces to discover pods on
    # --tls: Use secure (TLS) connection
    # --port: Port used to connect to the kubelet. Default is 10255
    exec: /var/db/newrelic-infra/nri-discovery-kubernetes --tls --port 10250
    label.app: redis
    - name: nri-redis
    # using the discovered IP as the hostname address
    HOSTNAME: ${discovery.ip}
    PORT: 6379
    KEYS: '{"0":["<KEY_1>"],"1":["<KEY_2>"]}'
    env: production
  2. Deploy the updated service:

    helm upgrade --install newrelic newrelic/nri-bundle \
    --namespace newrelic --create-namespace \
    -f values-newrelic.yaml \

    You should be able to see the following in the logs for the nrk8s-kubelet pod that is scheduled in the same node as the service you want to monitor:

    kubectl logs -n newrelic newrelic-nrk8s-kubelet-xxxxx agent
    time="2019-12-23T17:37:07Z" level=info msg="Integration health check starting" instance=redis-metrics integration=com.newrelic.redis prefix=integration/com.newrelic.redis working-dir=/var/db/newrelic-infra/newrelic-integrations
    time="2019-12-23T17:37:07Z" level=info msg="Integration health check finished with success" instance=redis-metrics integration=com.newrelic.redis prefix=integration/com.newrelic.redis working-dir=/var/db/newrelic-infra/newrelic-integrations

If there are no errors, you should see Redis data in the infrastructure UI. To find the Redis dashboards, go to one.newrelic.com > All capabilities > Infrastructure > Third party services, and select the Redis dashboard.

For the general procedure of how to monitor services running on Kubernetes, including more detail about how configuration works, see Monitor a Kubernetes-running service.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.