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 מציג קבוצה של ממשקי API מסוג @hide לתיעוד אירועים מהמערכת. בקוד Java, רוב ממשקי ה-API של @hide עוברים עיבוד מחדש כדי שיבנו על קבוצה קטנה יותר של שיטות מתויגות של @SystemApi, עם קצת קוד דבק שנוצר מראש. בקוד מקומי, פונקציות מקומיות קיימות עוברות עיבוד מחדש כדי להפוך לממשקי API רשמיים של VNDK C, עם קוד מקשר שנוצר.

התאמה אישית

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

בדיקה

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