איסוף מדדים של AWS CloudWatch באמצעות Prometheus CloudWatch exporter

איסוף מדדי AWS CloudWatch באמצעות כלי הייצוא של Prometheus CloudWatch ו-Ops Agent מאפשר לכם לעקוב אחרי משאבי AWS ו- Google Cloud ביחד, במרכזי הבקרה ובמדיניות ההתראות של Cloud Monitoring. לדוגמה, אתם יכולים להציג בתרשים את ניצול המעבד (CPU) גם במכונות של Amazon EC2 וגם במכונות הווירטואליות של Compute Engine.

המסמך הזה מיועד למפתחים ולאדמינים של מערכות שרוצים להגדיר את Prometheus CloudWatch exporter, לצפות במדדי AWS ב-Cloud Monitoring ולקבל התראות על התנהגות המדדים.

לפני שמתחילים

כדי לאסוף מדדי AWS CloudWatch באמצעות Prometheus CloudWatch exporter, צריך:

  • פרויקט ב- Google Cloud עם ההרשאות הבאות:
    • יצירת VM
    • כתיבת יומנים ב-Cloud Logging
    • כתיבת מדדים ב-Cloud Monitoring
  • חשבון AWS עם פרטי כניסה ל-AWS, שבהם אפשר להשתמש ב-Prometheus exporter כדי לאחזר מדדים. למידע נוסף, קראו את המאמר הפעלת הייצוא של Prometheus.

יצירת מכונה וירטואלית ב-Compute Engine

מומלץ ליצור מכונה וירטואלית של Linux ב-Compute Engine, שתשמש במיוחד להפעלת סוכן תפעול והכלי לייצוא נתונים של Prometheus CloudWatch. המכונה הווירטואלית הזו משמשת לאיסוף כל המדדים של AWS.

  1. כדי ליצור מכונה וירטואלית של Debian Linux בשם aws-exporter-test באזור שציינתם, מריצים את הפקודה הבאה:

    gcloud compute instances create \
      --image-project debian-cloud \
      --image-family debian-11 \
      --zone ZONE \
      aws-exporter-test
    

    מגדירים את הפקודה באופן הבא:

    • מחליפים את ZONE באזור של המכונה הווירטואלית החדשה.
    • אופציונלי: מחליפים את aws-exporter-test בשם אחר למכונה הווירטואלית.

    למידע נוסף על הפקודה הזו, ראו חומרי העזר של gcloud compute instances create.

  2. כדי לגשת ל-VM כדי שתוכלו להתקין את Prometheus CloudWatch exporter ואת סוכן תפעול, אתם יכולים להשתמש בפקודה הבאה:

    gcloud compute ssh --zone ZONE  --project PROJECT_ID  aws-exporter-test
    

    מגדירים את הפקודה באופן הבא:

    • מחליפים את ZONE באזור שבו יצרתם את המכונה הווירטואלית.
    • מחליפים את PROJECT_ID במזהה הפרויקט ב- Google Cloud .
    • אם יצרתם את המכונה הווירטואלית עם שם אחר, החליפו את aws-exporter-test.

    למידע נוסף על הפקודה הזו, ראו חומרי העזר של gcloud compute ssh.

הגדרת כלי הייצוא של Prometheus CloudWatch

בקטעים הבאים מוסבר איך להוריד, להתקין ולהגדיר את Prometheus CloudWatch exporter במכונה הווירטואלית של Compute Engine.

הורדת כלי הייצוא של Prometheus ו-JRE

כדי להריץ את Prometheus CloudWatch exporter, צריך להוריד את ה-exporter ואת סביבת זמן הריצה של Java‏ (JRE), גרסה 11 ואילך.

  1. כדי להוריד את קובץ ה-JAR שמכיל את Prometheus CloudWatch exporter, מריצים את הפקודה הבאה במכונת Compute Engine:

    curl -sSO https://github.com/prometheus/cloudwatch_exporter/releases/download/v0.15.1/cloudwatch_exporter-0.15.1-jar-with-dependencies.jar
    
  2. כדי להתקין את ה-JRE, אפשר להשתמש בפקודה כמו זו:

    sudo apt install default-jre
    

הגדרת כלי לייצוא נתונים של Prometheus

כדי להגדיר את כלי הייצוא של Prometheus CloudWatch, יוצרים קובץ תצורה לשירות או לשירותים של AWS שמהם רוצים לאסוף מדדים. למידע כללי, קראו את מסמכי התיעוד בנושא הגדרות של כלי הייצוא של Prometheus CloudWatch.

  • משתמשים שעוברים מ-AWS: אם אתם מעבירים את המדדים הקיימים של AWS CloudWatch למייצא Prometheus CloudWatch, אתם יכולים להשתמש בקובצי התצורה שבקטע הגדרות של מייצא Prometheus CloudWatch להעברה. קובצי התצורה האלה נועדו לשכפל את המדדים הקיימים בצורה הכי מדויקת שאפשר, אבל הם לא אוספים את כל המדדים שזמינים באמצעות Prometheus CloudWatch exporter לשירותי AWS.

  • משתמשים חדשים: אם אתם לא מעבירים מדדים קיימים, מומלץ לא להשתמש בהגדרות ההעברה. במסמכי התיעוד של שירות AWS CloudWatch מוסבר איך מגדירים את הייצוא לשירותים אחרים. דוגמאות נוספות זמינות במאגר GitHub של Prometheus CloudWatch exporter.

אפשר לשלב הגדרות של כמה שירותי AWS בקובץ תצורה אחד. הדוגמאות במסמך הזה מבוססות על ההנחה ששם קובץ התצורה הוא config.yml.

הפעלת כלי הייצוא של Prometheus

כדי להריץ את Prometheus CloudWatch exporter, צריך לספק לו פרטי כניסה והרשאה. הכלי Prometheus CloudWatch exporter משתמש ב-AWS Java SDK, שמאפשר לספק פרטי כניסה באמצעות משתני הסביבה הבאים:

למידע נוסף על מתן פרטי כניסה ל-SDK, קראו את המאמר AWS SDK for Java 2.x.

בנוסף, צריכה להיות לכם הרשאה להשתמש ב-CloudWatch API כדי לאחזר מדדים. צריך את הרשאות CloudWatch הבאות ב-AWS IAM:

  • cloudwatch:ListMetrics
  • cloudwatch:GetMetricStatistics
  • cloudwatch:GetMetricData

כדי להשתמש בתכונה aws_tag_select, צריך גם את ההרשאה tag:GetResources ב-AWS IAM.

למידע נוסף על הרשאת גישה לשירותי AWS, קראו את המאמר ניהול זהויות והרשאות גישה ב-AWS.

כדי להריץ את Prometheus CloudWatch exporter:

  1. כדי לספק פרטי כניסה למייצא, מגדירים את משתני הסביבה של מפתח הגישה:

    export AWS_ACCESS_KEY=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
    export AWS_SESSION_TOKEN=YOUR_SESSION_TOKEN
    

    מחליפים את המשתנים YOUR_KEY במפתחות הגישה. צריך להגדיר את משתנה הסביבה AWS_SESSION_TOKEN רק אם משתמשים בפרטי כניסה זמניים.

  2. כדי לבדוק את ההגדרות, מפעילים את הייצוא וטוענים את קובץ התצורה באמצעות הפקודה הבאה:

    java -jar cloudwatch_exporter-0.15.1-jar-with-dependencies.jar 9106 config.yml
    

    אם צריך, משנים את הערכים של היציאה (9106) ושל קובץ התצורה (config.yml).

    אם משנים את הקובץ config.yml בזמן שהמייצא פועל, אפשר לטעון מחדש את המייצא באמצעות הפקודה הבאה:

    curl -X POST localhost:9106/-/reload
    

    כדי להשתמש בסביבת ייצור, אפשר להגדיר את המייצא כך שיופעל מחדש אם המכונה הווירטואלית מופעלת מחדש. לדוגמה, במערכות Debian אפשר להשתמש במנהל המערכת והשירות systemd.

הגדרת סוכן התפעול

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

התקנת סוכן התפעול

כדי להתקין את סוכן תפעול, משתמשים בפקודות הבאות כדי להוריד ולהריץ את סקריפט ההתקנה של הסוכן:

curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install

הגדרת סוכן התפעול

כדי להגדיר את סוכן תפעול, מוסיפים רכיבי תצורה לקובץ התצורה של המשתמש של הסוכן. ב-Linux, קובץ תצורה של המשתמש הוא /etc/google-cloud-ops-agent/config.yaml.

כשמגדירים את סוכן התפעול לאסוף מדדי AWS מהכלי לייצוא נתונים של Prometheus CloudWatch, משתמשים במקלט Prometheus של הסוכן. במסמך הזה מתוארות שתי הגדרות בסיסיות של סוכן תפעול. בוחרים אחת מההגדרות ומוסיפים אותה לקובץ ההגדרות האישיות של המשתמש:

sudo vim /etc/google-cloud-ops-agent/config.yaml

הגדרה בסיסית של Ops Agent

ההגדרות הבאות הן הגדרות מינימליות לסוכן תפעול. ההגדרות האישיות מבצעות את הפעולות הבאות:

  • יוצרת מקלט בשם aws מסוג prometheus. המקלט מוגדר לאסוף מדדים מהמשימה aws_exporter. היציאה שצוינה צריכה להתאים ליציאה שבה הכלי לייצוא נתונים של Prometheus CloudWatch מייצא מדדים. ראו הפעלת הכלי לייצוא נתונים של Prometheus.

  • יוצרת צינור עיבוד נתונים בשם aws_pipeline שמשתמש במקלט המדדים aws.

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

הגדרה שמשמיטה מדדי JVM

ההגדרה הבאה מבצעת את כל מה שההגדרה הבסיסית מבצעת, אבל היא גם מוסיפה הגדרת תיוג מחדש שמסירה את מדדי ה-JVM שנוצרו על ידי המייצא. השמטת המדדים האלה מפחיתה את נתוני המדדים שנקלטים, אבל היא יכולה להקשות על ניפוי הבאגים של בעיות ב-exporter, כי אתם לא מקבלים את המדדים של ה-exporter עצמו:

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
            # Drop the exporter's own JVM metrics to reduce noise.
            metric_relabel_configs:
              - source_labels: [ __name__ ]
                regex: 'jvm_.*'
                action: drop
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

אפשר ליצור הגדרות אישיות מורכבות הרבה יותר ל-Ops Agent.

הפעלה מחדש של סוכן התפעול

כדי להחיל שינויים בהגדרות של סוכן תפעול, צריך להפעיל מחדש את הסוכן.

  1. כדי להפעיל מחדש את הסוכן, מריצים את הפקודה הבאה במכונה:
    sudo service google-cloud-ops-agent restart
    
  2. כדי לוודא שהסוכן הופעל מחדש, מריצים את הפקודה הבאה ובודקים שהרכיבים Metrics Agent ו-סוכן Logging הופעלו:
    sudo systemctl status google-cloud-ops-agent"*"
    

הצגת מדדים ב-Cloud Monitoring

ב-Cloud Monitoring, אתם יכולים לשלוח שאילתות לגבי המדדים של AWS CloudWatch וליצור תרשימים כמו בכל מדד אחר. בממשק של Metrics Explorer, אתם יכולים להשתמש ב-PromQL או בממשק של הכלי ליצירת שאילתות. מידע נוסף זמין במאמר יצירת תרשימים באמצעות Metrics Explorer.

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

בתרשים הבא מוצגת שאילתת PromQL למדד aws_ec2_cpuutilization_sum של מכונות וירטואליות ב-AWS:

בתרשים מוצגת התוצאה של אחזור הנתון הסטטיסטי aws_ec2_cpuutilization_sum למכונות וירטואליות של AWS באמצעות PromQL.

מידע נוסף על השימוש ב-PromQL ב-Cloud Monitoring זמין במאמר PromQL ל-Cloud Monitoring.

התראה על התנהגות של מדד

ב-Cloud Monitoring, אתם יכולים ליצור כללי מדיניות התראה כדי לעקוב אחרי המדדים של AWS CloudWatch ולקבל התראות על עליות, ירידות או מגמות בערכי המדדים.

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

ההגדרה של כלי הייצוא של Prometheus CloudWatch תומכת בשימוש באזור אחד בלבד לכל קובץ תצורה. אם אתם צריכים לעקוב אחרי כמה אזורים, מומלץ להריץ כמה מכונות של Prometheus exporter, ולהגדיר כל אחת מהן לאזור שאתם רוצים לעקוב אחריו. אפשר להריץ כמה מייצאים במכונה וירטואלית אחת, או לפזר אותם בין מכונות וירטואליות. במצב כזה, יכול להיות שיהיה שימושי להשתמש בקובצי אימג' של Docker לייצוא של Prometheus.

אתם יכולים להגדיר את Ops Agent שפועל במכונה הווירטואלית של Compute Engine כדי לאסוף נתונים מכמה נקודות קצה של Prometheus. כשמגדירים כמה מופעים של Prometheus exporter, מומלץ להשתמש בשם job שונה בהגדרת ה-scrape של כל אחד מהם, כדי שתוכלו להבחין בין המופעים של ה-exporter אם תצטרכו לפתור בהם בעיות.

מידע נוסף על הגדרת סוכן תפעול ומקלט Prometheus זמין במאמר הגדרת סוכן תפעול.

עלות

אמזון גובה תשלום על כל בקשת API של CloudWatch או על כל מדד CloudWatch שאתם מבקשים. בתמחור של Amazon CloudWatch תוכלו לראות את המחירים העדכניים. ל-Prometheus CloudWatch exporter יש את מאפייני השאילתה הבאים, שיכולים להשפיע על העלויות שלכם ב-Amazon:

  • כשמשתמשים ב-method ‏GetMetricStatistics (ברירת המחדל), כל מדד דורש בקשת API אחת. כל בקשה יכולה לכלול כמה נתונים סטטיסטיים.
  • כשמשתמשים ב-aws_dimensions, המייצא צריך לבצע בקשות API כדי לקבוע אילו מדדים לבקש. בדרך כלל, מספר הבקשות למאפיינים הוא זניח בהשוואה למספר הבקשות למדדים.

החיוב ב-Cloud Monitoring על מדדי AWS CloudWatch מהכלי לייצוא נתונים של Prometheus הוא לפי מספר הדגימות שנקלטו. כדי לראות את המחירים העדכניים, עיינו בקטעים של Cloud Monitoring בדף התמחור של Google Cloud Observability.

הגדרות של כלי הייצוא של Prometheus CloudWatch להעברה

בקטע הזה מפורטות הגדרות שמשכפלות, באופן הכי קרוב שאפשר, את מדדי השירות של AWS שמתועדים ברשימת המדדים של AWS. קובצי התצורה האלה מיועדים ללקוחות שעוברים ל-Prometheus CloudWatch exporter מהפתרון הקודם. אם אתם מגדירים את כלי הייצוא של Prometheus CloudWatch כמשתמשים חדשים ולא כמשתמשים שעוברים מ-AWS, ואתם משתמשים בהגדרות האלה, אתם לא אוספים את כל המדדים של AWS שכלי הייצוא של Prometheus CloudWatch מאפשר לאסוף.

כדי לראות קובץ תצורה לדוגמה של מדדי AWS CloudWatch, הרחיבו את אחד מהקטעים הבאים.