티스토리 뷰

개발관련/뻘팁-작업노트

accesslog awk

xephysis 2021. 4. 4. 21:51

accesslog 포맷

x.x.x.x - - [04/Apr/2021:00:00:00 +0900] "POST /x/x HTTP/1.1" 200 84 "-" "-" "x.x.x.x" "elapsed=0.532"s "request_length=1031879"

원하는 동작

request length 가 특정 값 이상 요청 추출

추출

cat http-access.log.XXXXXXX | awk '{
    split($0,a,"request_length="); 
    b = substr(a[2], 1, length(a[2])-1)

    if(b+0 > 1000000)
    {
        print b;
        print $0
    }
}'

기타

useragent 는 따로 빼는게 맞는것 같다.

지정된 포맷이니 레이블은 필요하지 않다.

그냥 promethues 에서 긁어가게 하거나 filebeat, fluentd 를 쓰거나 여튼 다른 수집 방법이 필요하다.

 

그외

다음날 파이썬으로 다시 짜서 원하는 결과를 얻음

단순 분석이면 잘 모르는 awk 찾아가면서 쓰는 것보다 파이썬으로 스크립트 짜서 돌리는게 관리, 응용, 공유하기 좋다.

 

import re

with open('http-access.log-XXXXXXXX', 'r') as reader:
    for line in reader:
        p = re.compile(r'.*request_length=(?P<length>\d+).*')
        m = p.match(line)

        if m and int(m.group('length')) > 5242880:
            print(line)
        if not m:
            print("invalid format; " + line)
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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 31
글 보관함