로그 필터링
사용방법
1. [AWS Console]-[CloudWatch]-[로그그룹]에 접속
2. 필터링할 로그그룹 선택
3. "Actions"-"지표 필터 생성" 선택
필터 패턴에 사용할 필터 패턴을 입력합니다. 아래 필터 패턴 작성 규칙 참조
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html
필터 및 패턴 구문 - Amazon CloudWatch Logs
패턴 일치를 사용하는 공백으로 구분된 지표 필터를 생성하는 경우, 용어 순서를 지정한 후 빈 표시기를 포함해야 합니다. 예를 들어, 첫 번째 단어가 ERROR인 로그 이벤트를 반환하는 지표 필터
docs.aws.amazon.com
필자는 다음과 같이 입력하였습니다.
[host, logName, user, timestamp, request, statusCode=404, size]
4. Select Log Data to Test에서 테스트할 데이터 선택 후 필터링한 결과치를 확인
5. 필터 이름을 입력하고 등록. 완료.
※ "필터"에서 "Create Alarm"을 클릭하면 해당 필터를 이용한 알람을 만들 수 있다.
Kinesis DataStream 사용량을 CloudWatch로 관리하기
1. [AWS Console]-[CloudWatch]-[Metrics]를 선택합니다.
2. CloudWatch Metrics by Category(범주별 CloudWatch 지표) 창에서 Kinesis Metrics(Kinesis 지표)를 선택합니다.
3. 관련 행을 클릭하여 지정된 MetricName 및 StreamName의 통계를 봅니다.
4. (선택 사항) 그래프 창에서 통계와 기간을 선택한 후 다음 설정을 사용하여 CloudWatch 경보를 생성합니다.
AWS 콘솔상에서 메뉴로 제공하는 구독필터는 몇가지 안되지만 다음과 같이 구독필터에 대한 다양한 Usecase를 도 있다.
구독필터 사용 가이드 관련 링크 : https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/logs/SubscriptionFilters.html
CloudWatch Logs 구독 필터 사용 - Amazon CloudWatch Logs
CloudWatch Logs 구독 필터 사용 Kinesis, Lambda 또는 Kinesis Data Firehose에서 구독 필터를 사용할 수 있습니다. 구독 필터를 통해 수신 서비스로 전송되는 로그는 base64로 인코딩되고 gzip 형식으로 압축됩니
docs.aws.amazon.com
CloudWatch Log를 Kinesis에 Streaming하기 (Kinesis DataStreaming 구독 필터 사용)
1. [AWS Console]-[Kinesis]에서 Kinesis DataStream 생성
2. Kinesis 스트림이 Active 상태에 있고 IAM 역할을 생성하고 나면 CloudWatch Logs 구독 필터를 생성할 수 있습니다. 그 즉시 구독 필터는 실시간으로 선택한 로그 그룹에서 Kinesis 스트림으로 로그 데이터를 이동시키기 시작합니다.
$ aws logs put-subscription-filter \
--log-group-name "CloudTrail/logs" \
--filter-name "RootAccess" \
--filter-pattern "{$.userIdentity.type = Root}" \
--destination-arn "arn:aws:kinesis:region:123456789012:stream/RootAccess" \
--role-arn "arn:aws:iam::123456789012:role/CWLtoKinesisRole"
AWS Lambda에 대한 구독 필터 사용
1. AWS Lambda 함수를 생성합니다
2. 텍스트 편집기를 열고 helloWorld.js라는 파일을 생성합니다.
var zlib = require('zlib');
exports.handler = function(input, context) {
var payload = Buffer.from(input.awslogs.data, 'base64');
zlib.gunzip(payload, function(e, result) {
if (e) {
context.fail(e);
} else {
result = JSON.parse(result.toString());
console.log("Event Data:", JSON.stringify(result, null, 2));
context.succeed();
}
});
};
3. helloWorld.js 파일을 압축하고 helloWorld.zip라는 이름으로 저장합니다.
4. CloudWatch Logs에 함수를 실행할 권한을 부여합니다. 다음 명령을 사용하여 자리 표시자 계정을 자체 계정으로, 자리 표시자 그룹을 처리할 로그 그룹으로 바꿉니다.
$ aws lambda add-permission \
--function-name "helloworld" \
--statement-id "helloworld" \
--principal "logs.region.amazonaws.com" \
--action "lambda:InvokeFunction" \
--source-arn "arn:aws:logs:region:123456789123:log-group:TestLambda:" \
--source-account "123456789012"
5. 다음 명령을 사용하여 구독 필터를 생성하여 자리 표시자 계정을 자체 계정으로, 자리 표시자 그룹을 처리할 로그 그룹으로 바꿉니다.
$ aws logs put-subscription-filter \
--log-group-name myLogGroup \
--filter-name demo \
--filter-pattern "" \
--destination-arn arn:aws:lambda:region:123456789123:function:helloworld
Kinesis Data Firehose에 대한 구독 필터 사용
1. [AWS Console]-[Amazon S3]에서 Amazon Simple Storage Service(Amazon S3) 버킷을 생성합니다. CloudWatch Logs를 위해 특별히 생성한 버킷을 사용하는 것이 좋습니다.
2. [AWS Console]-[Kinesis Data Firehose]에서 Kinesis Data Firehose전송 시스템을 생성. 이때 방금 생성한 S3 버킷을 선택합니다.
3. Amazon Kinesis Data Firehose 전송 스트림이 활성 상태가 되고 IAM 역할을 생성하고 나면 CloudWatch Logs 구독 필터를 생성할 수 있습니다. 그 즉시 구독 필터는 실시간으로 선택한 로그 그룹에서 Amazon Kinesis Data Firehose 전송 스트림으로 로그 데이터를 이동시키기 시작합니다.
$ aws logs put-subscription-filter \
--log-group-name "CloudTrail" \
--filter-name "Destination" \
--filter-pattern "{$.userIdentity.type = Root}" \
--destination-arn "arn:aws:firehose:region:123456789012:deliverystream/my-delivery-stream" \
--role-arn "arn:aws:iam::123456789012:role/CWLtoKinesisFirehoseRole"
'IaaS > 퍼블릭클라우드' 카테고리의 다른 글
(AWS) S3 버킷에 Event Trigger를 생성하기 (0) | 2022.03.16 |
---|---|
(AWS) Log의 종류에 대해 알아보자 (0) | 2022.03.15 |
(AWS) CloudWatch 에서 Apache 로그 수집을 위해 Agent 사용 (0) | 2022.03.14 |
(AWS) CloudWatch Alarm에 대해서 (0) | 2022.03.12 |
(AWS) CloudWatch Metric에 대해서 (0) | 2022.03.12 |