MATOMO 기본 작동원리
MATOMO?
- 오픈 소스 웹 분석 플랫폼(유료 cloud버전도 있기는 함)
- 웹 사이트를 방문하는 모든 사용자의 행위를 평가 및 분석
(로그 데이터를 저장하고, 이에대한 보고서 제공) - 즉 원하는 웹사이트에 matomo tracker script를 심어놓으면 그와 관련된 분석데이터(클릭 로그, 유저 행동데이터) 등에 대한 데이터를 수집, 저장하고, 이에 대한 보고서 또한 제공해준다.
Visitant - 웹 사이트 방문자 수, 페이지 뷰, 방문기간 등의 정보 기록 및 분석
Behavior - 웹 사이트 방문자의 행위 기록 및 분석
Acquisition - 웹 사이트 유입 경로 기록 및 분석 - Apache 웹 서버에서 구동되며 2018년 6월 기준 약 1,455,000개 이상의 Web Site에서 사용되고 있음
MATOMO 작동 원리
- website page에 javascript tracker를 포함시켜서 배포한다.
- tracker 는 tracker가 포함돼있는 페이지에서 데이터를 모아다가 http 추적 api를 호출해서 matomo에 보낸다.
- 데이터 archiving task가 돌아가고, preprocessing이 on the flow 로 혹은 cron task로 실행된다.
plug in architecture
- matomo codebase
- Matomo core - extention point통해서 application base제공
- Plugins - extention point를 사용자 행동이나 content를 application에 더하는데 사용
- 두 가지 종류의 plugin 존재
- 기본형 플러그인 : matomo 기본기능 (배포판에 있는 기능들
- 선택형 플러그인 : 사다 쓰는 것...(plugins 폴더에 복사해서 쓰거나, https://plugins.matomo.org/이런데서 받을 수 있음)
- 두 가지 종류의 plugin 존재
Interface
user interface
- 진입점은 index.php 이 파일이 모든걸 initialize 하고, FrontController class를 호출한다.
- matomo의 user interface는 html, javascript로 돼있음
- 몇몇 파트는 php controller에 의해 돌아가는 html document지만, 몇몇 파트는 anguler js로 짜여짐(vue js로 바꾸는 중)
controller
- front controller 는 들어오는 http request를 url parameter를 바탕으로 plugin controller로 rounting 한다.
- 만약 위와같은 http request 가 오면 front controller는 CoreHome plugin의 action index를 호출한다. plugins/CoreHome/Controller.php의 index() method 가 호출됨
- plugin controller는 http response에 보내질 string(보통은 html content)를 return 한다.
Widgets and reports
- request에 해당되는 controller action이 없으면, matomo는 매칭되는 widget 이나 report가 있는지 본다.
- 만약 있다면 widget이나 대체 report의 render method를 호출한다.(CoreHome.renderWidget, CoreHome.renderReportWidget)
Http Reporting API
- reporting 역할하는 api
- report 를 xml이나 json형식으로 serving 하는 역할(sites, user, goals,.. 같은 다양한 entity에 대한 정보를 제공함
- 이런게 오면 plugin 이름은 api, action name 은 주어지지 않았으니 index로 돌아가게 될 것.
- Piwik\Plugin\APi\Controller class 가 호출되고, target api 에게 전달 할 것
- 즉, 여기서는 Piwik\Plugin\SEO\API::getRank()가 호출될 것.
- api 는 token_auth url parameter를 통해서 인증될거고, force_api_session=1 parameter가 존재하지 않는 한 session 이 load 되지는 않을 것.
HTTP Tracking API
- JavaScript tracker가 Matomo(이전 Piwik)에 저장할 분석 데이터를 제출하게 해줌
- Matomo's web application 이나 HTTP reporting API 는 달리, entry point가 matomo.php파일이다.(오래된 버전은 piwik.php)
- tracking 되는 동안 모든 플러그인들이 load되지는 않고, 필요한것들만 loading된채로 진행된다.(속도 이슈)
- tracking된 데이터들은 log_* table에 저장된다. 모든 raw데이터를 저장하고나서, 나중에 report archive로 집계되는 형식이다.(log_visit도 tracking 요청중에 업데이트 된다.)
데이터 모델, 처리, 저장
log - raw data
- HTTP tracking API(Piwik\Tracker component)는 log data(raw data)를 수신함
- 로그 데이터는 PHP에서 Piwik\Tracker\Visit객체로 표시되며 아래 테이블에 저장된다.
- log_visit : 방문당 하나씩 찍힘(재방문자)
- log_action : 웹사이트에서 가능한 모든 유형의 action당 찍힘(예: 고유한 URL, 페이지 제목, 다운로드 URL 등).
- log_link_visit_action : 방문자의 하나의 액션당 하나씩 찍힘(페이지 보기, …)
- log_conversion : 방문 중에 발생한 전환당 찍힘(목표와 일치하는 액션)
- log_conversion_item : 전자상거래 전환당 찍힘
- 자세한 matomo schema 는 https://developer.matomo.org/guides/database-schema#log-data-persistence 여기서 확인 가능함
Archiving process
- log table 은 말 그대로 log table이기때문에 raw한 상태라 report를 위해서는 별도의 aggregation이 필요하다.
- Aggregation process는 날것의 log data를 읽어서 archived data(report 가능한 상태)로 바꿔준다.
- 이 과정은 특정한 날에 report를 위해서 돌아가게 된다(리포트 직전에만 돌아가는 배치잡형태)
- 기간을 너무 길게 설정하면 돌아갈때 시간이 너무 오래걸려서 모든 기간에 대해서 지원하지는 않음(unique visit, unique user등 몇가지 항목에 대해서만 제공)
- e.g. 아래 쿼리 같은게 돌아가는 것
select count(*) as nb_visits from log_visit where idsite = 1 and visit_last_action_time >= '2021-08-04 00:00:00' and visit_last_action_time < '2021-08-05 00:00:00'
- e.g. 아래같은 테이블이 생길 것
archive_blob_2021_10: 2021년 10월 보고서> archive_numeric_2021_10: 2021년 10월 측정항목
archive_numeric_2021_11: 2021년 11월 측정항목
archive_blob_2021_11: 2021년 11월 보고서
Auto archiving VS. browser archiving
- 기본적으로 Matomo는 브라우저 또는 API를 통해 요청될 때마다 이러한 보고서를 "요청 시" 생성한다.(browser archiving)
- 이렇게 요청시마다 하는건, Matomo의 속도를 늦출 수 있으므로 cron을 통해 백그라운드에서 주기적으로 이러한 보고서를 생성하도록 구성할 수 있다.(auto archiving)
- archiving process참고 : https://developer.matomo.org/guides/archiving
- archiving behavior 참고 : https://developer.matomo.org/guides/archiving-behavior-specification
From Archive data to reports
- 위와같이 테이블 형태로 데이터가 저장되고 나면, plugin 에서 정의된 api 클래스에 의해 제공된다. api 는 metric 혹은 record에 access하고 이걸 표시 가능한 report로 변환한다.
- report 작성 방법: https://developer.matomo.org/guides/reports
Author And Source
이 문제에 관하여(MATOMO 기본 작동원리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@stella_y/MATOMO저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)