Apache CouchDB

במאמר הזה מוסבר איך להגדיר את הפריסה של Google Kubernetes Engine כדי שתוכלו להשתמש בשירות המנוהל של Google Cloud ל-Prometheus כדי לאסוף מדדים מ-Apache CouchDB. במאמר הזה מוסבר איך:

  • מגדירים את הכלי לייצוא של CouchDB כדי לדווח על מדדים.
  • אפשר לגשת למרכז בקרה מוגדר מראש ב-Cloud Monitoring כדי לראות את המדדים.
  • הגדרת כללי התראה למעקב אחר המדדים.

ההוראות האלה רלוונטיות רק אם אתם משתמשים ב אוסף מנוהל עם השירות המנוהל ל-Prometheus. אם אתם משתמשים בפריסה עצמית של איסוף, תוכלו למצוא מידע על התקנה במאגר המקור של הכלי לייצוא CouchDB.

ההוראות האלה הן דוגמה, והן אמורות לפעול ברוב סביבות Kubernetes. אם נתקלתם בבעיה בהתקנת אפליקציה או כלי לייצוא בגלל מדיניות אבטחה או מדיניות ארגונית מגבילה, מומלץ לעיין במסמכי קוד פתוח לקבלת תמיכה.

מידע על Apache CouchDB זמין במאמר CouchDB.

דרישות מוקדמות

כדי לאסוף מדדים מ-CouchDB באמצעות שירות מנוהל ל-Prometheus ואיסוף מנוהל, הפריסה צריכה לעמוד בדרישות הבאות:

  • האשכול צריך להריץ את Google Kubernetes Engine בגרסה ‎1.28.15-gke.2475000 ואילך.
  • צריך להפעיל את השירות המנוהל ל-Prometheus עם איסוף מנוהל. מידע נוסף זמין במאמר תחילת השימוש באוסף מנוהל.

  • כדי להשתמש בלוחות בקרה שזמינים ב-Cloud Monitoring לשילוב של CouchDB, צריך להשתמש בגרסה couchdb-prometheus-exporter v30.4.3 ואילך.

    מידע נוסף על לוחות הבקרה הזמינים מופיע במאמר הצגת לוחות בקרה.

התקנת הכלי לייצוא מ-CouchDB

מומלץ להתקין את הכלי לייצוא נתונים מ-CouchDB,‏ couchdb-prometheus-exporter, כ-sidecar לעומס העבודה של CouchDB. מידע על שימוש ב-sidecars זמין במאמר הרחבת אפליקציות ב-Kubernetes באמצעות pods מרובי-קונטיינרים.

כדי להתקין את couchdb-prometheus-exporter כ-sidecar ל-CouchDB, צריך לשנות את ההגדרה של CouchDB כמו בדוגמה הבאה:

# 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: couchdb
spec:
  serviceName: couchdb
  selector:
    matchLabels:
+     app.kubernetes.io/name: couchdb
  template:
    metadata:
      labels:
+       app.kubernetes.io/name: couchdb
    spec:
      containers:
      - name: couchdb
        image: couchdb:3.2.2
        env:
          - name: COUCHDB_USER
            value: "otelu"
          - name: COUCHDB_PASSWORD
            value: "otelp"
          - name: NODENAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          - name: ERL_FLAGS
            value: "-setcookie otel"
        ports:
        - containerPort: 5984
+     - name: couchdb-exporter
+       image: gesellix/couchdb-prometheus-exporter:v30.4.3
+       args:
+       - --couchdb.uri=http://localhost:5984
+       - --logtostderr
+       env:
+         - name: COUCHDB_USERNAME
+           value: "otelu"
+         - name: COUCHDB_PASSWORD
+           value: "otelp"
+       ports:
+       - containerPort: 9984
+         name: prometheus

צריך להוסיף להגדרה את כל השורות שמופיע לפניהן הסמל +.

מעדכנים את משתני הסביבה COUCHDB_USERNAME ו-COUCHDB_PASSWORD של הכלי לייצוא לערכים של משתמש המעקב.

כדי להחיל שינויים בתצורה מקובץ מקומי, מריצים את הפקודה הבאה:

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

אפשר גם להשתמש ב-Terraform כדי לנהל את ההגדרות.

הגדרה של משאב PodMonitoring

לצורך גילוי יעדים, ל-שירות מנוהל ל-Prometheus Operator נדרש משאב PodMonitoring שתואם ל-CouchDB exporter באותו מרחב שמות.

אפשר להשתמש בהגדרה הבאה של PodMonitoring:

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

מוודאים שבוררי התוויות והיציאה תואמים לבוררים וליציאה שבהם השתמשתם כשהתקנתם את הכלי לייצוא נתונים מ-CouchDB.

כדי להחיל שינויים בתצורה מקובץ מקומי, מריצים את הפקודה הבאה:

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

אפשר גם להשתמש ב-Terraform כדי לנהל את ההגדרות.

הגדרת כללים והתראות

אפשר להשתמש בהגדרה Rules הבאה כדי להגדיר התראות על מדדי CouchDB:

# 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: couchdb-rules
  labels:
    app.kubernetes.io/component: rules
    app.kubernetes.io/name: couchdb-rules
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  groups:
  - name: couchdb
    interval: 30s
    rules:
    - alert: CouchDBHighRequestRate
      annotations:
        description: |-
          CouchDB high request rate
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: CouchDB high request rate (instance {{ $labels.instance }})
      expr: rate(couchdb_httpd_requests[5m]) > 100
      for: 5m
      labels:
        severity: warning
    - alert: CouchDBHighServerErrorRate
      annotations:
        description: |-
          CouchDB high server error rate
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: CouchDB high server error rate (instance {{ $labels.instance }})
      expr: rate(couchdb_httpd_status_codes{code="500"}[5m]) > 0
      for: 5m
      labels:
        severity: warning
    - alert: CouchDBLowRequestRate
      annotations:
        description: |-
          CouchDB low request rate
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: CouchDB low request rate (instance {{ $labels.instance }})
      expr: rate(couchdb_httpd_requests[5m]) < 10
      for: 5m
      labels:
        severity: warning

כדי להחיל שינויים בתצורה מקובץ מקומי, מריצים את הפקודה הבאה:

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

אפשר גם להשתמש ב-Terraform כדי לנהל את ההגדרות.

מידע נוסף על החלת כללים על האשכול זמין במאמר הערכה והתראות של כללים מנוהלים.

אפשר לשנות את ערכי הסף של ההתראות בהתאם לאפליקציה.

אימות ההגדרה

אפשר להשתמש ב-Metrics Explorer כדי לוודא שהגדרתם נכון את הכלי לייצוא CouchDB. יכול להיות שיחלפו דקה או שתיים עד שמערכת Cloud Monitoring תעבד את המדדים.

כדי לוודא שהמדדים נאספים, מבצעים את הפעולות הבאות:

  1. במסוף Google Cloud , עוברים לדף  Metrics explorer:

    כניסה אל Metrics Explorer

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.

  2. בסרגל הכלים של חלונית הכלי ליצירת שאילתות, לוחצים על הלחצן ששמו הוא  MQL או  PromQL.
  3. מוודאים שהאפשרות PromQL נבחרה במתג שפה. המתג לשפה נמצא באותו סרגל כלים שבו אפשר לעצב את השאילתה.
  4. מזינים ומריצים את השאילתה הבאה:
    up{job="couchdb", cluster="CLUSTER_NAME", namespace="NAMESPACE_NAME"}

הצגת מרכזי בקרה

השילוב עם Cloud Monitoring כולל את לוח הבקרה CouchDB Prometheus Overview. לוחות הבקרה מותקנים באופן אוטומטי כשמגדירים את השילוב. אפשר גם לראות תצוגות מקדימות סטטיות של מרכזי בקרה בלי להתקין את האינטגרציה.

כדי לראות מרכז בקרה שהותקן:

  1. במסוף Google Cloud , עוברים לדף  Dashboards:

    מעבר אל מרכזי בקרה

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.

  2. לוחצים על הכרטיסייה רשימת מרכזי בקרה.
  3. בוחרים בקטגוריה שילובים.
  4. לוחצים על השם של מרכז הבקרה, לדוגמה, CouchDB Prometheus Overview.

כדי לראות תצוגה מקדימה סטטית של מרכז הבקרה:

  1. נכנסים לדף  Integrations במסוף Google Cloud :

    עוברים אל Integrations

    אם משתמשים בסרגל החיפוש כדי למצוא את הדף הזה, בוחרים בתוצאה שכותרת המשנה שלה היא Monitoring.

  2. לוחצים על המסנן Kubernetes Engine של פלטפורמת הפריסה.
  3. מחפשים את השילוב של Apache CouchDB ולוחצים על הצגת פרטים.
  4. לוחצים על הכרטיסייה מרכזי בקרה.

פתרון בעיות

מידע על פתרון בעיות בהוספת מדדים זמין במאמר פתרון בעיות שקשורות להוספה, בקטע בעיות באיסוף נתונים ממייצאים.