본문 바로가기
개발 공부 기록하기/- Linux

[Linux] 로그에 찍힌 API 콜 횟수 구하기

by soulduse 2020. 1. 11.

서비스를 운영하다 어떠한 API가 많이 사용될까 궁금한적이 있었다. 

 

리눅스 명령어를 잘 몰라서 grep으로 대충 로그파일 뒤져서 눈으로 대충 아 몇개구나 파악하곤했었는데

 

조금더 확실한 방법을 알게되었다.

 

nginx 로그를 보면 대충 이런식의 API 콜 기록이 남아있는걸 확인할 수 있다.

 

cat {파일명}을 입력한 경우

개인적으로 운영하는 서비스라서 로그가 듬성듬성 있지만, 회사에서 운영하는 서비스의 경우에는 초단위로 엄청난 로그가 수집된다.

 

이를 통계 내려면 어떻게 해야될까?

 

cat access.log(로그파일 PATH) | cut -d " " -f 7 | sort | uniq -c | sort

 

이렇게 명령어를 날려보면?

 

호출된 수가 많은 순서대로 정렬되어서 해당 내용이 출력된다.

 

따라서 어떤 API가 가장 많이 호출되고 있는지 알 수 있다.

 

위에 명령을 하나씩 뜯어보자.

 

cat access.log(로그파일 PATH)

- cat 파일명을 입력하면 날 것의 파일 내용을 그대로를 출력 해준다. 게시글의 맨 상단 사진에 모습처럼 결과물이 나온다.

- 이 외에에도 유사하거나 관련 있는 명령어는 아래와 같다.

- zcat (압축파일 .gz .tgz을 출력해주는 명령어)

- xzcat (.xz)

- unzip (zip)

 

cut -d " " -f 7

cut은 말그대로 특정 범위에 내용을 잘라서 보여줄때 사용한다.

-d 옵션 : cut으로 넘어온 각각의 줄을 -d 옵션으로 지정한 구분자로 분할한다. " " 빈 공백을 넣게되면 각 줄마다 공백으로 구분하여 분할하게 된다.

-f 옵션 지정한 위치의 부분들을 모아서 출력한다 -f 7을 하게되면 아래 그림에서 봤을때 7번째 열만 출력 해주게 된다.



이러한 결과물이 나오게 된다.

 

sort

- 말 그대로 내용을 정렬 해준다. 기본 정렬 방식은 작은것 부터 큰순으로(오름차순) 정렬된다.

-r 또는 --reserse옵션 : 내림차순 정렬

 

uniq -c

- uniq는 중복을 제거해주는 옵션이다. 

-c 또는 --count 옵션 : 중복을 제거하면서 각 내용이 몇 번 등장했는지 카운팅을 해준다.

 

 

 

반응형