일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- RETROPIE
- Cloud Computing
- centos
- 라스조이박스
- 인바운드관광
- 알리페이
- 라즈베리파이
- 클라우드 컴퓨팅
- 방한일본및중국관광객특징
- MOLpay
- 바나나파이 #banana-pi #android #netflix #iot
- 로컬에이전시
- 알리페이사용방법
- 투디엠
- Cloud
- EmulationStation
- mame
- koreatour
- 클라우드
- 한국방문객
- GlobalPG
- 바나나파이 #banana-pi #eMMC #sdcard없이부팅 #삽질
- 핀테크
- KEB하나은행독점
- bananapi
- 결제정산
- YandexPay
- paas
- 랜딩사
- 정산프로세스
- Today
- Total
API World for Mobile Developers
(가이드) Access Log 의 UV / PV 분석 - Shell Script 본문
Apache log 분석을 쉘스크립트로 PV/UV를 산출하기
awk 명령어로 URL부분 전체를 발췌하고 cut 명령어로 ? 앞쪽만 자르면 URL(?이후의 파라미터를 제외한)만 가공할 수 있으며,
sort 명령어로 중복된 라인을 제거하면 고유한 URL로 가공이 됨.
조금 응용해서 접근한 IP 주소만으로 사용자(?)를 식별하였으나 스마트폰의 접근 IP는 중복되어 나타나므로
쇼닥 API의 세션키를 활용하여 실제 UV값을 산출함
준비작업
## 테스트에 사용한 access log file 은 2017. 2. 16 자의 API Front Apache Server 6대임 ## 일단 6개 파일을 1개 파일로 뭉치고 $ ls w14.log w15.log w16.log w17.log w20.log w21.log $ cp w14.log total.log $ cat w15.log >> total.log $ cat w16.log >> total.log $ cat w17.log >> total.log $ cat w20.log >> total.log $ cat w21.log >> total.log
API 별 구분 방법 - (동작이 느리면) total.log 대신 w14.log 사용가능
## 사용된 API 종류 (전체) $ awk '{print $7}' total.log | cut -d"?" -f1 | sort -u /v2/category/getCategoryProdList.json /v2/category/getMainCategoryList.json /v2/category/getProdCategoryList.json /v2/category/martCategoryList.json ## 사용된 인증 API 종류 $ awk '{print $7}' total.log | cut -d"?" -f1 | sort -u | grep auth ## 사용된 인증 API 수량 $ awk '{print $7}' total.log | cut -d"?" -f1 | wc -l
사용자수 구분 방법 - (동작이 느리면) total.log 대신 w14.log 사용가능
## 총 사용자 수 (IP 기준) $ awk '{print $1}' total.log | sort -u | wc -l 78259
## 총 사용자 수 (sessionKey 파라미터가 2번째에 위치함) $ awk -F\" '{print $2}' total.log | awk '{print $2}' | awk -F\& '{print $2}' | grep session | sort -u | wc -l 7309 $ ## 정확한 개수는 아래처럼 구하면 되나 수량 차이는 미비함 (1명 더 챙겼음) $ cat checkSessionKey.sh #!/bin/sh awk -F\" '{print $2}' $1 | awk '{print $2}' | awk -F\& '{print $2}' | grep session > $1.sessionKey awk -F\" '{print $2}' $1 | awk '{print $2}' | awk -F\& '{print $3}' | grep session >> $1.sessionKey awk -F\" '{print $2}' $1 | awk '{print $2}' | awk -F\& '{print $4}' | grep session >> $1.sessionKey awk -F\" '{print $2}' $1 | awk '{print $2}' | awk -F\& '{print $5}' | grep session >> $1.sessionKey awk -F\" '{print $2}' $1 | awk '{print $2}' | awk -F\& '{print $6}' | grep session >> $1.sessionKey awk -F\" '{print $2}' $1 | awk '{print $2}' | awk -F\& '{print $7}' | grep session >> $1.sessionKey awk -F\" '{print $2}' $1 | awk '{print $2}' | awk -F\& '{print $8}' | grep session >> $1.sessionKey awk -F\" '{print $2}' $1 | awk '{print $2}' | awk -F\& '{print $9}' | grep session >> $1.sessionKey sort -u $1.sessionKey | wc -l $ . ./checkSessionKey.sh total (시간 겁나걸림 : 약 2분 - MacBook 에서... ) 7310 $
API 별 UV / PV 분석
## 총 사용자 수 (IP 기준) ## API 목록으로 PV는 $ cat total.log | grep /v2/category/getCategoryProdList.json | wc -l 2874 $ ## API 목록으로 UV는 $ cat total.log | grep /v2/category/getCategoryProdList.json | awk '{print $7}' | cut -d"&" -f2 | grep sessionKey | sort -u | wc -l 1013 $ ## 모든 API의 PV, UV는... $ cat checkPVperAPI.sh #!/bin/sh FILE_NAME=$1 FILE_TMP=$1.tmp echo "Preparing API lists ....." API_LIST=`awk -F\" '{print $2}' $FILE_NAME | awk '{print $2}' | cut -d"?" -f1 | sort -u` echo echo "PV UV API_NAME" for url_info in $API_LIST do if [ -z $url_info ] then continue fi if [ $url_info = "/" ] then continue fi # make temp flie with sepecified URL `cat $FILE_NAME | grep $url_info | awk '{print $7}' > $FILE_TMP` UV_COUNT=0 PV_COUNT=`cat $FILE_TMP | wc -l` set f1 f2 f3 f4 f5 f6 f7 f8 f9 for option in $@ do temp=`cat $FILE_TMP | cut -d'&' -$option | grep session | sort -u | wc -l` UV_COUNT=`expr $UV_COUNT + $temp` done echo $PV_COUNT $UV_COUNT $url_info done $ $ . ./checkPVperAPI.sh w14.log Preparing API lists ..... PV UV API_NAME 38 37 /auth/callAppId 1 0 /auth/getDeviceClauseAgreeInfo 9 9 /auth/getVersion 11 0 /auth/insertDeviceClauseAgreeInfo $
'잡동사니' 카테고리의 다른 글
Wordcloud 만들기 - 문대통령 취임사 (1) | 2017.05.22 |
---|---|
VR/AR 산업, 7가지 비즈니스 기회 (0) | 2017.05.19 |
한국이 4차 산업혁명 시대에서 살아남으려면 (0) | 2017.05.11 |
고창 효도여행 1박 2일 (4월 중하순 출발) (0) | 2017.04.13 |
액션 기반 서비스 모니터링 ( Action Based Service Monitoring ) (0) | 2017.03.15 |