Statsd

Statsd 모듈에는 백그라운드에서 측정항목을 수집하는 기본 서비스인 statsd와 시스템 프로세스에서 실행되고 statsd 및 Java를 연결하는 Java 서비스인 StatsCompanionService가 포함됩니다. 이 모듈은 업데이트할 수 있습니다. 즉, 정상적인 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/socketpackages/modules/StatsD/lib/libstatssocket
    • system/core/libstats/pullpackages/modules/StatsD/lib/libstatspull
  • frameworks/base/cmds/StatsDpackages/modules/StatsD/bin
  • frameworks/base/apex/StatsD
    • 현재 최상위 수준 복사
    • jniframework/jni로 이동
    • 최상위 파일을 /apex 디렉터리로 이동
      • frameworks/base/apex/StatsD/\*packages/modules/StatsD/apex/\*
      • frameworks/base/apex/StatsD/jnipackages/modules/StatsD/apex/framework/jni
  • cts/hostsidetests/StatsDpackages/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 집합을 제공합니다. 자바 코드의 경우, 소규모로 생성된 내장 글루 코드를 사용하여 대부분의 @hide API가 @SystemApi 태그가 지정된 소규모 메서드 집합에 빌드되도록 리팩터링합니다. 네이티브 코드의 경우, 생성된 글루 코드를 사용하여 기존 네이티브 함수가 공식 VNDK C API가 되도록 리팩터링합니다.

맞춤설정

Statsd 모듈은 맞춤설정을 지원하지 않습니다.

테스트

Android 호환성 테스트 모음(CTS)은 statsd의 기능과 출시 관리를 좌우하는 Atom을 확인합니다.