RabbitMQ

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

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

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

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

מידע על RabbitMQ זמין במאמר RabbitMQ.

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

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

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

  • כדי להשתמש בלוחות הבקרה שזמינים ב-Cloud Monitoring לשילוב של RabbitMQ, צריך להשתמש בגרסה rabbitmqv3.8.0 ואילך.

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

מערכת RabbitMQ חושפת מדדים בפורמט Prometheus באופן אוטומטי, כך שלא צריך להתקין אותה בנפרד. כדי לוודא שהכלי לייצוא נתונים של RabbitMQ שולח מדדים לנקודות הקצה הצפויות:

  1. מגדירים העברה ליציאה אחרת באמצעות הפקודה הבאה:
    kubectl -n NAMESPACE_NAME port-forward POD_NAME 15692
    
  2. ניגשים לנקודת הקצה localhost:15692/metrics באמצעות הדפדפן או כלי השירות curl בסשן טרמינל אחר.

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

כדי לגלות יעדים, ל-Managed Service for Prometheus Operator נדרש משאב PodMonitoring שתואם ל-RabbitMQ 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: rabbitmq
  labels:
    app.kubernetes.io/name: rabbitmq
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  endpoints:
  - port: prometheus
    scheme: http
    interval: 30s
    path: /metrics
  selector:
    matchLabels:
      # If RabbitMQ is installed via the operator, use this label selector
      app.kubernetes.io/component: rabbitmq
      # If installing RabbitMQ via GCP click-to-deploy, use this instead
      # app.kubernetes.io/component: rabbitmq-server
מוודאים שהערכים בשדות port ו-matchLabels תואמים לערכים של ה-pods של RabbitMQ שרוצים לעקוב אחריהם. ‫RabbitMQ שנפרס על ידי האופרטור מכיל את התוויות app.kubernetes.io/component: rabbitmq ואת היציאה prometheus.

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

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

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

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

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

# 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: rabbitmq-rules
  labels:
    app.kubernetes.io/component: rules
    app.kubernetes.io/name: rabbitmq-rules
    app.kubernetes.io/part-of: google-cloud-managed-prometheus
spec:
  groups:
  - name: rabbitmq
    interval: 30s
    rules:
    - alert: RabbitMQHighUnacknowledgedMessages
      annotations:
        description: |-
          RabbitMQ high unacknowledged messages
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: RabbitMQ high unacknowledged messages (instance {{ $labels.instance }})
      expr: rabbitmq_channel_messages_unacked > 5
      for: 5m
      labels:
        severity: critical
    - alert: RabbitMQHighUnroutableMessages
      annotations:
        description: |-
          RabbitMQ high unroutable messages
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: RabbitMQ high unroutable messages (instance {{ $labels.instance }})
      expr: rate(rabbitmq_channel_messages_unroutable_dropped_total[5m]) > 0
      for: 5m
      labels:
        severity: warning
    - alert: RabbitMQLowDeliveredMessages
      annotations:
        description: |-
          RabbitMQ low delivered messages
            VALUE = {{ $value }}
            LABELS: {{ $labels }}
        summary: RabbitMQ low delivered messages (instance {{ $labels.instance }})
      expr: rate(rabbitmq_channel_messages_delivered_total[5m]) < 10
      for: 5m
      labels:
        severity: warning

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

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

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

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

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

אימות ההגדרה

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

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

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

    כניסה אל Metrics Explorer

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

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

צפייה במרכזי הבקרה

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

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

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

    עוברים אל מרכזי בקרה.

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

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

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

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

    עוברים אל שילובים

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

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

פתרון בעיות

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