Redis

Dokumen ini menjelaskan cara mengonfigurasi deployment Google Kubernetes Engine agar Anda dapat menggunakan Google Cloud Managed Service for Prometheus untuk mengumpulkan metrik dari Redis. Dokumen ini menunjukkan cara melakukan hal berikut:

  • Siapkan pengekspor untuk Redis guna melaporkan metrik.
  • Konfigurasikan resource PodMonitoring untuk Managed Service for Prometheus guna mengumpulkan metrik yang diekspor.
  • Akses dasbor di Cloud Monitoring untuk melihat metrik.
  • Konfigurasikan aturan pemberitahuan untuk memantau metrik.

Petunjuk ini hanya berlaku jika Anda menggunakan koleksi terkelola dengan Managed Service for Prometheus. Jika Anda menggunakan koleksi yang di-deploy sendiri, lihat repositori sumber untuk eksportir Redis untuk mengetahui informasi penginstalan.

Petunjuk ini diberikan sebagai contoh dan diharapkan berfungsi di sebagian besar lingkungan Kubernetes. Jika Anda mengalami masalah saat menginstal aplikasi atau eksportir karena kebijakan organisasi atau keamanan yang membatasi, sebaiknya konsultasikan dokumentasi open source untuk mendapatkan dukungan.

Untuk informasi tentang Redis, lihat Redis.

Prasyarat

Untuk mengumpulkan metrik dari Redis menggunakan Managed Service for Prometheus dan koleksi terkelola, deployment Anda harus memenuhi persyaratan berikut:

  • Cluster Anda harus menjalankan Google Kubernetes Engine versi 1.21.4-gke.300 atau yang lebih baru.
  • Anda harus menjalankan Managed Service for Prometheus dengan pengumpulan terkelola diaktifkan. Untuk informasi selengkapnya, lihat Mulai menggunakan koleksi terkelola.

  • Untuk menggunakan dasbor yang tersedia di Cloud Monitoring untuk integrasi Redis, Anda harus menggunakan redis_exporter versi v1.43.1 atau yang lebih baru.

    Untuk mengetahui informasi selengkapnya tentang dasbor yang tersedia, lihat Melihat dasbor.

Menginstal eksportir Redis

Sebaiknya instal eksportir Redis, redis_exporter, sebagai sidecar untuk workload Redis Anda. Untuk informasi tentang cara menggunakan sidecar, lihat Aplikasi yang diperluas di Kubernetes dengan pod multi-container.

Untuk menginstal redis_exporter sebagai sidecar ke Redis,ubah konfigurasi Redis seperti yang ditunjukkan dalam contoh berikut:

# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https:#www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis
  labels:
    app.kubernetes.io/name: redis
spec:
  selector:
    matchLabels:
+     app.kubernetes.io/name: redis
  template:
    metadata:
      labels:
+       app.kubernetes.io/name: redis
    spec:
      containers:
      - name: redis
        image: "redis:6.2"
        ... 
+     - name: redis-exporter
+       image: oliver006/redis_exporter:v1.43.1
+       args: [--include-system-metrics]
+       resources:
+         requests:
+           cpu: 100m
+           memory: 100Mi
+       ports:
+       - containerPort: 9121
    ...

Anda harus menambahkan baris yang diawali dengan simbol + ke konfigurasi Anda.

Petunjuk ini mengasumsikan bahwa Anda sudah memiliki penginstalan Redis yang berfungsi dan ingin mengubahnya untuk menyertakan eksportir. Jika Anda juga perlu menyiapkan Redis, Anda dapat mengonfigurasi dan menerapkan chart Helm Bitnami. Teruskan nilai konfigurasi berikut:
  • metrics.enabled = true
  • metrics.podLabels = {app.kubernetes.io/name: redis}

Untuk menerapkan perubahan konfigurasi dari file lokal, jalankan perintah berikut:

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Anda juga dapat menggunakan Terraform untuk mengelola konfigurasi.

Menentukan resource PodMonitoring

Untuk penemuan target, Managed Service for Prometheus Operator memerlukan resource PodMonitoring yang sesuai dengan eksportir Redis di namespace yang sama.

Anda dapat menggunakan konfigurasi PodMonitoring berikut:

# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: redis
  labels:
    app.kubernetes.io/name: redis
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: redis
  endpoints:
  - port: 9121
    interval: 30s

Pastikan pemilih label dan port cocok dengan pemilih dan port yang digunakan dalam Menginstal eksportir Redis.

Untuk menerapkan perubahan konfigurasi dari file lokal, jalankan perintah berikut:

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Anda juga dapat menggunakan Terraform untuk mengelola konfigurasi.

Menentukan aturan dan pemberitahuan

Anda dapat menggunakan konfigurasi Rules berikut untuk menentukan pemberitahuan pada metrik Redis:

# Copyright 2022 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: monitoring.googleapis.com/v1
kind: Rules
metadata:
  name: redis-rules
  labels:
    app.kubernetes.io/component: rules
    app.kubernetes.io/name: redis-rules
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  groups:
  - name: redis
    interval: 30s
    rules:
    - alert: RedisDown
      annotations:
        description: |-
          Redis instance is down 
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Redis down (instance {{ $labels.instance }})
      expr: redis_up{job="redis"} == 0
      for: 5m
      labels:
        severity: critical
    - alert: RedisOutOfMemory
      annotations:
        description: |-
          Redis is running out of memory (> 90%)
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Redis out of memory (instance {{ $labels.instance }})
      expr: redis_memory_used_bytes{job="redis"} / redis_total_system_memory_bytes{job="redis"}
        * 100 > 90
      for: 5m
      labels:
        severity: warning
    - alert: RedisTooManyConnections
      annotations:
        description: |-
          Redis instance has too many connections
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Redis too many connections (instance {{ $labels.instance }})
      expr: redis_connected_clients{job="redis"} > 100
      for: 5m
      labels:
        severity: warning
    - alert: RedisClusterSlotFail
      annotations:
        description: |-
          Redis cluster has slots fail
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Number of hash slots mapping to a node in FAIL state (instance {{ $labels.instance }})
      expr: redis_cluster_slots_fail{job="redis"} > 0
      for: 5m
      labels:
        severity: warning
    - alert: RedisClusterSlotPfail
      annotations:
        description: |-
          Redis cluster has slots pfail
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Number of hash slots mapping to a node in PFAIL state (instance {{ $labels.instance }})
      expr: redis_cluster_slots_pfail{job="redis"} > 0
      for: 5m
      labels:
        severity: warning
    - alert: RedisClusterStateNotOk
      annotations:
        description: |-
          Redis cluster is not ok 
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Redis cluster state is not ok (instance {{ $labels.instance }})
      expr: redis_cluster_state{job="redis"} == 0
      for: 5m
      labels:
        severity: critical
    - expr: redis_memory_used_rss_bytes{job="redis"} / redis_memory_used_bytes{job="redis"}
      record: redis_memory_fragmentation_ratio

Untuk menerapkan perubahan konfigurasi dari file lokal, jalankan perintah berikut:

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

Anda juga dapat menggunakan Terraform untuk mengelola konfigurasi.

Untuk informasi selengkapnya tentang cara menerapkan aturan ke cluster, lihat Evaluasi dan pemberitahuan aturan terkelola.

Konfigurasi Rules ini diadaptasi dari aturan dan pemberitahuan yang dikontribusikan ke repositori redis_exporter.

Memverifikasi konfigurasi

Anda dapat menggunakan Metrics Explorer untuk memverifikasi bahwa Anda telah mengonfigurasi eksportir Redis dengan benar. Mungkin perlu waktu satu atau dua menit agar Cloud Monitoring menyerap metrik Anda.

Untuk memverifikasi bahwa metrik telah diserap, lakukan tindakan berikut:

  1. Di konsol Google Cloud, buka halaman  Metrics explorer:

    Buka Metrics explorer

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

  2. Di toolbar panel pembuat kueri, pilih tombol yang namanya adalah  MQL atau  PromQL.
  3. Pastikan PromQL dipilih di tombol Language. Tombol bahasa berada di toolbar yang sama yang memungkinkan Anda memformat kueri.
  4. Masukkan dan jalankan kueri berikut:
    up{job="redis", cluster="CLUSTER_NAME", namespace="NAMESPACE_NAME"}
    

Melihat dasbor

Integrasi Cloud Monitoring mencakup dasbor Ringkasan Prometheus Redis. Dasbor akan otomatis diinstal saat Anda mengonfigurasi integrasi. Anda juga dapat melihat pratinjau statis dasbor tanpa menginstal integrasi.

Untuk melihat dasbor yang terinstal, lakukan tindakan berikut:

  1. Di konsol Google Cloud, buka halaman  Dasbor:

    Buka Dasbor

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

  2. Pilih tab Daftar Dasbor.
  3. Pilih kategori Integrasi.
  4. Klik nama dasbor, misalnya, Redis Prometheus Overview.

Untuk melihat pratinjau statis dasbor, lakukan tindakan berikut:

  1. Di konsol Google Cloud, buka halaman Integrations :

    Buka Integrations

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

  2. Klik filter platform deployment Kubernetes Engine.
  3. Temukan integrasi Redis, lalu klik Lihat Detail.
  4. Pilih tab Dasbor.

Pemecahan masalah

Untuk informasi tentang cara memecahkan masalah penyerapan metrik, lihat Masalah terkait pengumpulan dari eksportir di Memecahkan masalah sisi penyerapan.