פלאגין StatsD

StatsD הוא פרוטוקול לשליחת מדדים ודמון לצבירה של נתוני מדדים. הגדרת התוסף StatsD של סוכן Monitoring מאפשרת לסוכן לפעול כ-StatsD daemon שכותב מדדים ל-Monitoring.

הדרך הכי קלה להעביר את המדדים שהוגדרו על ידי המשתמש אל Monitoring היא באמצעות הפלאגין StatsD עם הגדרת ברירת המחדל שלו. הפלאגין StatsD זמין רק בסוכן Stackdriver Monitoring ל-Linux.

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

הפונקציונליות הזו זמינה רק לסוכנים שפועלים ב-Linux. האפשרות הזו לא זמינה ב-Windows.

גילוי

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

הגדרת הפלאגין StatsD

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

התוסף StatsD דורש גרסה 5.5.2-356 ואילך של סוכן המעקב. הוראות לעדכון הסוכן מופיעות במאמר בנושא עדכון הסוכן.

הפעלת הפלאגין

במכונה וירטואלית נתמכת שמופעלת בה מערכת Linux, מבצעים את הפעולות הבאות:

  1. מורידים את statsd.conf וממקמים אותו ב-/etc/stackdriver/collectd.d/ באמצעות הפקודה הבאה:

    (cd /etc/stackdriver/collectd.d/ && sudo curl -O https://raw.githubusercontent.com/Stackdriver/stackdriver-agent-service-configs/master/etc/collectd.d/statsd.conf)
    
  2. קובץ התצורה שמוגדר כברירת מחדל מורה ל-Agent לקבל מדדים של StatsD ביציאת ברירת המחדל של StatsD, ‏ 8125.

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

  3. מפעילים מחדש את סוכן Monitoring כדי לאסוף את הגדרות StatsD על ידי הרצת הפקודה הבאה:

    sudo service stackdriver-agent restart
    

מידע נוסף על הפלאגין collectd statsd זמין במאמר Plugin:StatsD.

מיפוי ברירת מחדל למדדים מותאמים אישית

כדי לעזור לכם להתחיל במהירות, התוסף StatsD של הסוכן מגיע עם הגדרת collectd שמוגדרת כברירת מחדל וממפה ממדדי StatsD למדדים מוגדרים על ידי המשתמש ב-Stackdriver:

  • כל המדדים מתוסף StatsD כוללים את statsd ברכיב collectd plugin.

  • לכל סוג מדד של StatsD – שמוחזק ברכיב type של collectd – יש שם תואם של סוג מדד שהוגדר על ידי המשתמש.

  • שם המדד של StatsD – שנשמר ברכיב type_instance של collectd – מאוחסן כערך של תווית בשם metric.

    הערך של התווית metric שונה עבור סוג המדד Timer: הוא כולל גם את שם המדד וגם את שם המונה: average,‏ upper,‏ lower,‏ sum,‏ percentile-50 ו-percentile-95.

לדוגמה, בטבלה הבאה מוצג מיפוי של סוגי המדדים הנתמכים ב-StatsD ושם המדד למדדים מוגדרים על ידי המשתמש ב-Monitoring:

סוג StatsD שם StatsD סוג המדד של Stackdriver סוג המדד סוג הערך תוויות מדדים
הצעה נגדית my.counter custom.googleapis.com/statsd/derive מצטבר Int64 מדד:my.counter
מד my.gauge custom.googleapis.com/statsd/gauge מד כפול metric:my.gauge
הגדרה my.set custom.googleapis.com/statsd/objects מד כפול מדד:my.set
טיימר1 my.timer custom.googleapis.com/statsd/latency מד כפול מדד:my.timer-average
(זהה) (זהה) (זהה) מדד:my.timer-upper
(זהה) (זהה) (זהה) מדד:my.timer-lower
(זהה) (זהה) (זהה) ‫metric:my.timer-sum
(זהה) (זהה) (זהה) metric:my.timer-percentile-50
(זהה) (זהה) (זהה) metric:my.timer-percentile-95
custom.googleapis.com/statsd/gauge מד (זהה) מדד:my.timer-count

הערות:
‫1 יש רצף נכנס של מדדי טיימר של statsd עם אותו שם. הסוכן צובר מדדי טיימר של StatsD ומייצא נתוני סיכום ל-7 סדרות זמן שונות.

מידע נוסף על סוגי StatsD מופיע במפרט של StatsD.

התאמה אישית של מדדים מיוצאים

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

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

אפשר להתאים אישית את הדברים הבאים:

  • אפשר לשנות את הערכים שמוקצים לתווית metric שמוגדרת כברירת מחדל. שימוש ביותר ערכי תווית מוביל ליצירה של יותר סדרות זמן במדד שהוגדר על ידי המשתמש. שימוש בפחות ערכי תוויות מוביל לפחות סדרות זמן.

  • אפשר לשנות את סוגי המדדים שהוגדרו על ידי המשתמש. לא חייבים להשתמש בסוגים המוגדרים מראש שמופיעים בהגדרת ברירת המחדל. לדוגמה, אפשר לזהות מדדים עם שם מסוים ולהשתמש עבורם בסוג אחר של מדד מוגדר על ידי המשתמש.

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

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

דוגמה

נניח שאתם משתמשים ב-StatsD כדי לעקוב אחרי אפליקציה שמורכבת משני שירותים, my_service_a ו-my_service_b. לכל שירות, אתם רוצים לייצא ל-Monitoring מדד של מונה שמייצג את מספר הבקשות שנכשלו. לא רוצים להשתמש בסוגי המדדים של StatsD שמוגדרים כברירת מחדל.

מדדים נכנסים של collectd

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

מדדים של Collectd, כולל מדדים של StatsD, כוללים את הרכיבים הבאים:

    Host, Plugin, Plugin-instance, Type, Type-instance

בדוגמה הזו, למדדים של StatsD שרוצים לייצא יש את המזהים הבאים ב-collectd:

רכיב ערכים צפויים
מארח כל
פלאגין statsd
מופע של פלאגין unset1
סוג derive2
מופע של סוג [SERVICE_NAME].GET.[CODE]3
[VALUE] כל ערך4

הערות:
‫1 הפלאגין StatsD משאיר כרגע את הרכיב הזה ריק.‫
2 מדד StatsD Counter ממופה לסוג derive של collectd. ‫3 לדוגמה, מופע של סוג יכול להיות my_service_a.GET.500. ‫4 [VALUE] הוא בדרך כלל חותמת זמן ומספר עם דיוק כפול.

בטבלה הבאה מפורט המיפוי של המדד הזה כברירת מחדל:

סוג StatsD שם StatsD סוג המדד של Stackdriver סוג המדד סוג הערך תוויות מדדים
הצעה נגדית my_service_a.GET.500 custom.googleapis.com/statsd/derive מצטבר Int64 metric:my_servce_a.GET.500
הצעה נגדית my_service_b.GET.403 custom.googleapis.com/statsd/derive מצטבר Int64 metric:my_servce_b.GET.403

מיפוי ברירת המחדל עלול להציג כמה קשיים:

  • מדד הדלפק הספציפי הזה ([SERVICE_NAME].GET.[CODE]) הוא מאותו סוג של מדד מוגדר על ידי המשתמש כמו כל מדדי הדלפק האחרים. אי אפשר לקבל בקלות רק את הנתונים של המדד הזה, כי Stackdriver לא תומך כרגע בחיפושי ביטויים רגולריים בתוויות.

  • לא קל לקבל נתונים לגבי שירותים ספציפיים או קודי תגובה ספציפיים בנתונים. לדוגמה, אי אפשר לראות בקלות את המספר הכולל של השגיאות (מכל הסוגים) שהתרחשו ב-my_service_a.

  • בהגדרות שקובעים כברירת מחדל, כל המדדים של StatsD מיוצאים ל-Stackdriver, מה שיכול להיות יקר אם אתם מתעניינים רק במדדים מסוימים.

תכנון של סוג מדד

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

סוג המדד הבא שהוגדר על ידי המשתמש הוא בחירה סבירה לנתונים בדוגמה הזו, כי הוא מכיל רק את מדד StatsD שמעניין אתכם, ובחירת התוויות שלו עוזרת לארגן את הנתונים בצורה טובה יותר:

  • סוג: custom.googleapis.com/http/request_errors
  • תוויות:
    • service_name (STRING): שם השירות.
    • response_code (INT64): קוד תגובת ה-HTTP.
  • סוג: CUMULATIVE
  • סוג הערך: INT64

בטבלה הבאה מוצג המיפוי הרצוי מ-StatsD ל-Stackdriver:

סוג StatsD שם StatsD סוג המדד של Stackdriver סוג המדד סוג הערך תוויות מדדים
הצעה נגדית my_service_a.GET.500 custom.googleapis.com/http/request_errors מצטבר Int64 service_name:my_service_a, response_code:500
הצעה נגדית my_service_b.GET.403 custom.googleapis.com/http/request_errors מצטבר Int64 service_name:my_service_b, response_code:403

אחרי שתכננתם את סוג המדד, אתם יכולים ליצור אותו באמצעות metricDescriptors.create. מידע על יצירה אוטומטית של סוג המדד באמצעות Monitoring זמין במאמר בנושא יצירה אוטומטית של תיאורי מדדים.

הגדרת מיפוי

כדי לייצא את מדד StatsD לסוג החדש של מדד בהגדרת המשתמש, מחליפים את התוכן של הגדרת ברירת המחדל של פלאגין StatsD, /etc/stackdriver/collectd.d/statsd.conf, בקוד הבא:

<Plugin statsd>
  Host "127.0.0.1"
  Port "8125"
  DeleteSets true
  TimerPercentile 50.0
  TimerPercentile 95.0
  TimerLower true
  TimerUpper true
  TimerSum true
  TimerCount true
</Plugin>

LoadPlugin match_regex
LoadPlugin target_set
LoadPlugin target_replace

# Insert a new rule in the default "PreCache" chain, to divert your metrics.
PreCacheChain "PreCache"
<Chain "PreCache">
  # The following rule does all the work for your metric:
  <Rule "rewrite_request_errors">
    # Do a careful match for just your metrics; if it fails, drop down
    # to the next rule:
    <Match regex>
      Plugin "^statsd$"
      TypeInstance "^.*\\.GET\\..*$"    # Match on type instance.
    </Match>

    <Target "set">
      # Specify the metric descriptor type:
      MetaData "stackdriver_metric_type" "custom.googleapis.com/http/request_errors"
      # Initialize the labels from the "type_instance" label; clean the values up in the next Target below.
      MetaData "label:service_name" "%{type_instance}"
      MetaData "label:response_code" "%{type_instance}"
    </Target>

    <Target "replace">
      # Remove ".GET.[code]" to get the real service name.
      MetaData "label:service_name" "\\.GET\\.[0-9]*$" ""
      # Remove "[service].GET." to get the real response code.
      MetaData "label:response_code" "^[^\\.]*\\.GET\\." ""
    </Target>
  </Rule>
</Chain>

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

מפעילים מחדש את הסוכן כדי להחיל את ההגדרה החדשה על ידי הפעלת הפקודה הבאה במופע של מכונת ה-VM:

sudo service stackdriver-agent restart

המידע על המדד שהוגדר על ידי המשתמש מתחיל לזרום אל הכלי 'מעקב' באופן מיידי.

השלבים הבאים

התאמה אישית של התוסף StatsD זהה להתאמה אישית של מדדי collectd לניטור. מידע נוסף זמין בקטעים 'הפניה' ו'פתרון בעיות' במאמר בנושא מדדים מוגדרים על ידי המשתמש מהסוכן.