Statsd

מודול Statsd כולל את statsd, שירות מקורי שפועל ברקע ומאסף מדדים, ואת שירות Java‏ StatsCompanionService, שפועל בתהליך המערכת ומגשר בין statsd ל-Java. המודול הזה ניתן לעדכון, כלומר הוא יכול לקבל עדכונים לפונקציונליות (כמו עדכונים למדדים שמשמשים לאיסוף נתונים) מחוץ למחזור הרגיל של הפצת Android.

גבול המודול

‫Statsd הוא נקודת המגע העיקרית בין הפלטפורמה לבין איסוף נתוני בטיחות ההשקה. מודול statsd כולל את הקוד הבא.

  • statsd, שנמצא ב-frameworks/base/cmds/statsd

  • StatsCompanionService, שנמצא ב frameworks/base/services/core/java/com/android/server/stats/StatsCompanionService.java

  • קבוצת משנה של מבני ה-protobuf של הפלטפורמה, שנמצאים בעיקר ב-frameworks/base/core/proto

בתור שירות מקורי, statsd יכול להתקיים מעבר למסגרת ולזהות קריסות ב-system_server עצמו.

ב-Android 12, קוד המודול Statsd מועבר מ-frameworks/base/cmds/StatsD,‏ frameworks/base/apex/StatsD ו-system/core/libstats.

מבנה פרויקט חדש

  • system/core/libstatspackages/modules/StatsD/lib/libstats
    • system/core/libstats/socket‏ ← packages/modules/StatsD/lib/libstatssocket
    • system/core/libstats/pull‏ ← packages/modules/StatsD/lib/libstatspull
  • frameworks/base/cmds/StatsD‏ ← packages/modules/StatsD/bin
  • frameworks/base/apex/StatsD
    • העתקה של הרמה העליונה כמו שהיא
    • העברה של jni אל framework/jni
    • העברת קבצים ברמה העליונה אל הספרייה /apex
      • frameworks/base/apex/StatsD/\*‏ ← packages/modules/StatsD/apex/\*
      • frameworks/base/apex/StatsD/jni‏ ← packages/modules/StatsD/apex/framework/jni
  • cts/hostsidetests/StatsD‏ ← packages/modules/StatsD/tests

פקודות לדוגמה להעברת תיקון

החלת השינויים על ההסתעפויות הבאות:

  • goog/mainline-prod
  • goog/main
  • goog/\*-plus-aosp
  • aosp/main

צריך לשמור את ההיסטוריה של הקבצים ב-Statsd.

פורמט המודול

מודול statsd ‏ (com.android.os.statsd) הוא בפורמט APEX והוא זמין למכשירים עם Android מגרסה 11 ואילך.

יחסי תלות בין מודולים

מודול Statsd מציג קבוצה של @hide ממשקי API לרישום אירועים מהמערכת. במקרה של קוד Java, רוב ממשקי ה-API של @hide עוברים רפקטורינג כדי שייבנו על קבוצה קטנה יותר של שיטות שתויגו ב-@SystemApi, עם קוד דבק קטן שנוצר מראש. במקרה של קוד מקורי, פונקציות מקוריות קיימות עוברות רפקטורינג כדי להפוך לממשקי API רשמיים של VNDK C, עם דבק שנוצר.

התאמה אישית

מודול Statsd לא תומך בהתאמה אישית.

בדיקה

חבילת הבדיקות לתאימות (CTS) של Android מאמתת את הפונקציונליות של statsd ואת האטומים שעליהם מסתמך ניהול הגרסאות.