Varnish

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

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

Petunjuk ini hanya berlaku jika Anda menggunakan koleksi terkelola dengan Managed Service for Prometheus. Jika Anda menggunakan pengumpulan yang di-deploy sendiri, lihat repositori sumber untuk pengekspor Varnish guna 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 keamanan atau organisasi yang ketat, sebaiknya lihat dokumentasi open source untuk mendapatkan dukungan.

Untuk mengetahui informasi tentang Varnish, lihat Varnish.

Prasyarat

Untuk mengumpulkan metrik dari Varnish dengan menggunakan Managed Service for Prometheus dan pengumpulan 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 koleksi terkelola yang diaktifkan. Untuk mengetahui informasi selengkapnya, lihat Mulai menggunakan koleksi terkelola.

  • Untuk menggunakan dasbor yang tersedia di Cloud Monitoring untuk integrasi Varnish, Anda harus menggunakan prometheus_varnish_exporter versi "1.6.1" atau yang lebih baru.

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

Exporter Varnish meng-scrape output perintah varnishstat. Fitur ini memerlukan berbagi namespace proses dan akses ke direktori /var/lib/varnish container Varnish.

Exporter Varnish tidak dipublikasikan sebagai image container; Anda harus membangunnya sendiri. Contoh berikut menunjukkan cara membuat image container eksportir yang berisi eksportir dan perintah varnishstat.

# Copyright 2024 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
#
#     http://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.

FROM debian:stable-slim AS stage
WORKDIR /exporter
ADD https://github.com/jonnenauha/prometheus_varnish_exporter/releases/download/1.6.1/prometheus_varnish_exporter-1.6.1.linux-amd64.tar.gz /exporter/exporter.tar.gz
RUN tar -xvf exporter.tar.gz
RUN chmod +x /exporter/prometheus_varnish_exporter-1.6.1.linux-amd64/prometheus_varnish_exporter
FROM varnish:7.2.0
COPY --from=stage /exporter/prometheus_varnish_exporter-1.6.1.linux-amd64/prometheus_varnish_exporter /prometheus_varnish_exporter
ENTRYPOINT [ "/prometheus_varnish_exporter" ]

Instal eksportir Varnish

Sebaiknya instal eksportir Varnish, prometheus_varnish_exporter, sebagai sidecar untuk workload Varnish Anda. Untuk mengetahui informasi tentang cara menggunakan file bantuan, lihat Aplikasi yang diperluas di Kubernetes dengan pod multi-container.

Untuk menginstal prometheus_varnish_exporter sebagai sidecar ke Varnish, ubah konfigurasi Varnish Anda seperti yang ditunjukkan dalam contoh berikut:

# Copyright 2023 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: Deployment
metadata:
  name: varnish
spec:
  selector:
    matchLabels:
+     app.kubernetes.io/name: varnish
  template:
    metadata:
      name: varnish
      labels:
+       app.kubernetes.io/name: varnish
    spec:
      containers:
      - name: varnish
        image: varnish:7.2.0
+       volumeMounts:
+         - name: shared-data
+           mountPath: /var/lib/varnish
+       env:
+       - name: VARNISH_HTTP_PORT
+         value: "8080"
+     - name: exporter
+       image: <custom-docker-image>
+       volumeMounts:
+         - name: shared-data
+           mountPath: /var/lib/varnish
+           readOnly: true
+       ports:
+       - containerPort: 9131
+         name: prometheus
+     volumes:
+       - name: shared-data
+         emptyDir: {}
+     shareProcessNamespace: true

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

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.

Tentukan resource PodMonitoring

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

Anda dapat menggunakan konfigurasi PodMonitoring berikut:

# Copyright 2023 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: varnish
  labels:
    app.kubernetes.io/name: varnish
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  endpoints:
  - port: prometheus
    scheme: http
    interval: 30s
    path: /metrics
  selector:
    matchLabels:
      app.kubernetes.io/name: varnish

Pastikan pemilih label dan port cocok dengan pemilih dan port yang digunakan di Instal eksportir Varnish.

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 Varnish:

# Copyright 2023 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: varnish-rules
  labels:
    app.kubernetes.io/component: rules
    app.kubernetes.io/name: varnish-rules
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  groups:
  - name: varnish
    interval: 30s
    rules:
    - alert: VarnishBackendConnectionFailure
      annotations:
        description: |-
          Varnish backend connection failure
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Varnish backend connection failure (instance {{ $labels.instance }})
      expr: varnish_backend_fail > 0
      for: 5m
      labels:
        severity: critical
    - alert: VarnishHighCacheEvictions
      annotations:
        description: |-
          Varnish high cache evictions
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Varnish high cache evictions (instance {{ $labels.instance }})
      expr: rate(varnish_main_n_obj_purged[5m]) >= 10
      for: 5m
      labels:
        severity: warning
    - alert: VarnishHighServerLimit
      annotations:
        description: |-
          Varnish high server limit
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Varnish high server limit (instance {{ $labels.instance }})
      expr: varnish_main_threads_failed > 0
      for: 5m
      labels:
        severity: critical
    - alert: VarnishSessionsDropped
      annotations:
        description: |-
          Varnish sessions dropped
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: Varnish sessions dropped (instance {{ $labels.instance }})
      expr: varnish_main_sessions{type="dropped"} > 0
      for: 5m
      labels:
        severity: critical

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 mengetahui informasi selengkapnya tentang penerapan aturan ke cluster Anda, lihat Evaluasi dan pemberitahuan aturan terkelola.

Anda dapat menyesuaikan batas pemberitahuan agar sesuai dengan aplikasi Anda.

Memverifikasi konfigurasi

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

Untuk memverifikasi bahwa metrik telah di-ingest, lakukan hal 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  MQL atau  PromQL.
  3. Pastikan PromQL dipilih di tombol Language. Tombol bahasa ada di toolbar yang sama yang memungkinkan Anda memformat kueri.
  4. Masukkan dan jalankan kueri berikut:
    up{job="varnish", cluster="CLUSTER_NAME", namespace="NAMESPACE_NAME"}

Melihat dasbor

Integrasi Cloud Monitoring mencakup dasbor Varnish Prometheus Overview. 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, Varnish 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 Varnish, lalu klik Lihat Detail.
  4. Pilih tab Dasbor.

Pemecahan masalah

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