שרת אינטרנט של Apache ‏ (httpd)

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

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

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

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

מידע על שרת האינטרנט של Apache‏ (httpd) זמין במאמר Apache HTTP.

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

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

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

  • כדי להשתמש בלוחות הבקרה שזמינים ב-Cloud Monitoring לשילוב של Apache Web Server, צריך להשתמש בגרסה httpd_exporterv1.0.0 ואילך.

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

התקנה של כלי לייצוא נתונים משרת האינטרנט Apache

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

כדי להתקין את httpd_exporter כ-sidecar לשרת האינטרנט של Apache, צריך לשנות את ההגדרה של שרת האינטרנט של Apache כמו בדוגמה הבאה:

# 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: v1
kind: ConfigMap
metadata:
  name: httpd
data:
  httpd.conf: |
    ...
+   <Location "/server-status">
+       SetHandler server-status
+   </Location>
+   LoadModule status_module modules/mod_status.so
    ...
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: httpd
spec:
  replicas: 1
  selector:
    matchLabels:
+     app.kubernetes.io/name: httpd
  template:
    metadata:
      labels:
+       app.kubernetes.io/name: httpd
    spec:
      containers:
      - name: httpd
        image: httpd:2.4
        ports:
        - containerPort: 80
          name: httpd
+       volumeMounts:
+       - mountPath: /usr/local/apache2/conf/httpd.conf
+         subPath: httpd.conf
+         name: httpd
+     - name: httpd-exporter
+       image: lusotycoon/apache-exporter:v1.0.0
+       ports:
+       - containerPort: 9117
+         name: prometheus
+       command: ["/bin/apache_exporter"]
+       args: ["--scrape_uri=http://localhost/server-status?auto", "--web.listen-address=:9117", "--telemetry.endpoint=/metrics"]
+     volumes:
+     - name: httpd
+       configMap:
+         name: httpd
+         items:
+         - key: httpd.conf
+           path: httpd.conf

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

ההוראות האלה מיועדות למשתמשים שכבר התקינו שרת אינטרנט של Apache ורוצים לשנות אותו כדי לכלול בו כלי לייצוא. אפשר להגדיר את Apache HTTP server כך שיציג מדדים ב-/server-status על ידי שינוי ההגדרה באמצעות הנחיה חדשה של Location וטעינה של status_module.

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

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

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

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

כדי לגלות יעדים, ל-Managed Service for Prometheus Operator נדרש משאב PodMonitoring שתואם ל-Apache HTTP exporter באותו מרחב שמות.

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

# 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: httpd
  labels:
    app.kubernetes.io/name: httpd
    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: httpd

מוודאים שהסלקטורים של התוויות והיציאה תואמים לסלקטורים וליציאה שבהם השתמשתם במאמר בנושא התקנת כלי לייצוא של שרת האינטרנט Apache.

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

kubectl apply -n NAMESPACE_NAME -f FILE_NAME

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

אימות ההגדרה

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

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

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

    כניסה אל Metrics Explorer

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

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

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

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

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

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

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

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

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

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

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

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

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

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

פתרון בעיות

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