brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Dec 04. 2020

520. Kinesis에이전트 설치로 웹서버 로그 분석

Kinesis 에이전트 설치해서  웹서버 로그 분석해보자 


<구성도>


EC2-------- Kinesis data firehose 스트리밍 ------ s3 버킷에 게시-------- glue가 크롤링, 로그에서 스키마 유추--- 스키마 이용해 아테나로 쿼리


사전 준비?

apache php 서버

Kinesis Data Firehose

s3 버킷  2개 만들기 , 데이터 수집용, 아테나 결과 저장용

Glue

아테나



<1>  Kinesis 에이전트 설치

<2>  S3 버킷에 로그 저장 확인

<3>   Glue로 S3 크롤링하고 스키마 정의 하자

<4>  Athena로 조회하기




<1>  Kinesis 에이전트 설치


1

EC2 로그인


2

sudo yum install https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm -y


2

설정 파일 수정

/etc/aws-kinesis/agent.json


{

  "cloudwatch.endpoint": "monitoring.<AWSRegion>.amazonaws.com",

  "cloudwatch.emitMetrics": true,

  "firehose.endpoint": "firehose.<AWSRegion>.amazonaws.com",

  "flows": [

    {

      "filePattern": "/var/log/httpd/access_log",

      "deliveryStream": "<DeliveryStream>"

    }

  ]

}



vi  /etc/aws-kinesis/agent.json


{

  "cloudwatch.endpoint": "monitoring.ap-northeast-1.amazonaws.com",

  "cloudwatch.emitMetrics": true,

  "firehose.endpoint": "firehose.ap-northeast-1.amazonaws.com",

  "flows": [

    {

      "filePattern": "/var/log/httpd/access_log",

      "deliveryStream": "qls-3720118-baxxxxx-deliveryStream-xxxxxx"

    }

  ]

}



3

에이전트 시작하기

sudo systemctl start aws-kinesis-agent.service


4

에이전트 상태 확인

systemctl status aws-kinesis-agent.service


Active: active (running) 상태인지 확인


5

웹서버 로그 확인

tail -f /var/log/httpd/access_log



6

웹사이트 접속





<2>  S3 버킷에 로그 저장 확인


20분 정도 후 로그가 쌓인다

다운로드해서 파일 확인

확인




<3>   Glue로 S3 크롤링하고 스키마 정의 하자


1

Glue > Crawlers >  크롤러 추가 >  logcrawler >  Crawlers  Source type  = Data store >

Repeat  = Crawl all folders    > S3 


2

내 계정의 지정된 경로 >   폴더 아이콘 클릭 > 해당 S3 선택 


3

IAM 역할 선택 > 기존 IAM 역할 선택 >   GlueServiceRole 선택

빈도 >  온디맨드 실행 

데이터 베이스 추가 >  logsdatabase

다음 > 마침


4

크롤로 실행


5

성공 후

logsdatabase 클릭

tables 클릭

logs클릭




<4>  Athena로 조회하기


1

Athena > 시작하기

데이터 베이스 >  logsdatabase 선택


2

테이블에 logs 선택


3

테이블 미리 보기 선택


4

첫 번째 쿼리를 실행하기 전에, Amazon S3에서 쿼리 결과 위치를 설정해야 합니다. 자세히 알아보기

5

sql

SELECT * FROM "logsdatabase"."logs" limit 10;



감사합니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari