פלאגין StatsD

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

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

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

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

Discovery

המעקב לא מזהה באופן אוטומטי את 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. קובץ ההגדרות שמוגדר כברירת מחדל מורה לסוכן לקבל מדדים של 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 – שמוחזק ברכיב collectd type – יש שם תואם של סוג מדד שהוגדר על ידי המשתמש.

  • שם המדד של 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 מד כפול מדד:my.gauge
הגדרה my.set custom.googleapis.com/statsd/objects מד כפול metric:my.set
טיימר1 my.timer custom.googleapis.com/statsd/latency מד כפול מדד:my.timer-average
(זהה) (זהה) (זהה) ‫metric:my.timer-upper
(זהה) (זהה) (זהה) ‫metric:my.timer-lower
(זהה) (זהה) (זהה) מדד: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:

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

הערות:
‫1 הפלאגין StatsD משאיר כרגע את הרכיב הזה ריק.
‫2 מדד StatsD Counter ממופה לסוג collectd derive. ‫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

המידע על המדד שהוגדר על ידי המשתמש מתחיל לזרום ל-Monitoring באופן מיידי.

השלבים הבאים

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