베하~
안녕하세요 3대 5000의 man, xoxo 입니다.
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/035.gif)
지난주 로그에 대한 중요성과 ALB 로그를 S3로 저장하는 방법에 대해 알아보았는데요
이번시간에는 해당 S3에 저장되어 있는 로그를 Lambda를 통해
cloudwatch로 전송하는 방법에 대해 알아보도록 하겠습니다
1. <람다 function 생성>
2.<람다 function 설정>
아래와 같이 코드와 AWS role을 설정할 수 있습니다.
3.<람다 function 코드 작성>
저희는 파이썬 코드를 이용하여 람다코드를 구현해보겠습니다.
아래의 내용을 참조하여 각자에 맞는 코드를 작성하면 됩니다!
import os
import boto3
import gzip
import io
import json
import datetime
s3 = boto3.client('s3')
logs = boto3.client('logs')
# Lambda 핸들러 함수
def lambda_handler(event, context):
# S3에서 이벤트 정보 가져오기
s3_event = event['Records'][0]['s3']
bucket_name = s3_event['bucket']['name']
key_name = s3_event['object']['key']
# 로그 그룹과 로그 스트림 설정
log_group_name = '로그를 저장할 로그그룹이름'
log_stream_name = datetime.datetime.now().strftime('%Y/%m/%d') + '/' + key_name
# S3에서 압축된 로그 파일 가져오기
obj = s3.get_object(Bucket=bucket_name, Key=key_name)
gzipfile = io.BytesIO(obj['Body'].read())
with gzip.GzipFile(fileobj=gzipfile, mode='r') as f:
data = f.read().decode('utf-8')
lines = data.split('\n')
# CloudWatch Logs에 로그 이벤트 게시
log_events = []
for line in lines:
if line:
event = {'timestamp': int(datetime.datetime.now().timestamp()*1000), 'message': line}
log_events.append(event)
response = logs.create_log_stream(logGroupName=log_group_name, logStreamName=log_stream_name)
response = logs.put_log_events(logGroupName=log_group_name, logStreamName=log_stream_name, logEvents=log_events)
4.<람다 트리거 설정>
위와 같이 트리거가 생성되면 s3에 로그가 저장될 때 마다 람다함수를 호출하여 해당 로그를 cloudwatch 로그그룹으로 전송합니다.
5.<cloudwatch에 저장된 로그 확인>
위의 결과는 cloudwatch log group에 버킷의 로그들이 저장되는 것을 확인할 수 있습니다.
추가로 log insight를 통해 해당 로그들에 대한 query를 작성하여 로그를 분석하고 특정 로그를 검색할 수 있습니다.
이상 저장된 s3에 저장된 ALB 로그를 cloudwatch로 전송하는 방법에 대해 알아보았습니다.
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/001.gif)
다음시간에는 반대로 cloudwatch log group에 저장되는 로그를 s3에 저장하는 방법에 대해 알아보겠습니다.
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] EKS Service Type 4가지 (0) | 2023.05.21 |
---|---|
[AWS] KMS의 활용 (2) | 2023.05.20 |
[AWS] System Manager Patch Manager을 통한 인스턴스 자동업데이트 구성 (1) | 2023.05.19 |
[AWS] DataSync (0) | 2023.05.19 |
CloudWatch 모니터링 및 알람 (0) | 2023.05.19 |
댓글