5.3 VPC Flow 기반 모니터링1
Update: 2020-03-06
Last updated
Update: 2020-03-06
Last updated
[CloudWatch] - [Logs] - [ Log Groups] - [ Actions ] - [ Create Log Group]
[CloudWatch] - [Logs] - [ Log Groups]
[VPC] - [VPC 선택] - [Flow Logs] - [Creat Flow log]
A. Filter의 옵션을 선택합니다. - Accept, Reject 또는 전체 Flow를 확인하는 All을 선택합니다.
B. Log 수집 간격을 선택합니다. - 10분 또는 1분이며, 최근 1분 간격을 지원하기 시작했습니다.
C. 목적지를 선택합니다. - CloudWatch 또는 S3로 보낼 수 있습니다. S3로 보낼 경우, 3rd Party 제품들과 연동할 수 있습니다.
D. log 목적지를 선택합니다. - CloudWatch에서 생성한 LogGroup또는 S3의 버킷이름을 선택합니다.
E. IAM Role을 선택합니다. - VPC Flow Log 데몬이 Role을 가지고 동작하게 되므로, IAM Role이 필요합니다. 메뉴에서 생성하거나 , IAM Role에서 신규 생성할 수 있습니다.
[VPC] - [VPC 선택] - [Flow Logs] - [Creat Flow log]
아래 그림은 IAM Role을 신규 생성하는 과정입니다.
IAM Role이 정상적으로 구성되었으면, Role을 선택합니다.
[VPC] - [VPC 선택] - [Flow Logs]
[CloudWatch] - [ Logs ] - [ 생성한 Log Group]
Log Stream 목록 중에 하나를 선택하여, 정상적으로 VPC Log Flow가 보여지는 지 확인합니다.
이 랩에서는 ElasticSearch에 대한 상세내용을 담지 않으며, 완전관리형 AWS ElasticSearch 생성과정에 대한 소개만 언급합니다.
[ElasticSearch] - [ Create new domain ]
새로운 도메인 이름을 정의하고 나머지는 기본 값을 두도록 합니다.
[ElasticSearch] - [ Create new domain ]
9.ElastciSearch 접근과 보안 관련 설정을 합니다.
권장하는 값은 VPC Access 가 권장 접근 방법입니다. 이렇게 구성할 경우 외부에서 ElasticSearch와 DashBoard인 Kibana 접근이 불가능합니다. 외부에서 접근 방법은 아래에서 상세소개합니다.
VPC 접근방법을 선택하게 되면, 어떤 VPC가 ES에 접근 할 것인지, 어떤 Subnet의 자원이 접속하게 될 것인지, Security Group은 어떤 것을 사용할 것인지를 선택해야합니다.
[ElasticSearch] - [ Create new domain ]
Access Policy를 선택합니다.
생성을 위해 15분 정도의 시간이 필요하며, 이 단계가 완료되어야 CloudWatch Log Group에서 ElasticSearch로 Streaming 구성을 진행할 수 있습니다.
[그림 5.3.14]에서는 설치 진행 과정으로 "Domain Status"는 "Loading"단계로 보여지고 있습니다.
[CloudWatch] -[ Logs ] -[Log Groups] - [ Log Group 선택] -[Action] - [ Stream to Amazon ElasticSearch Service]
CloudWatch에서 ES로 Stream을 전송할 경우 Lambda를 통해서 VPC Flow Log 수신을 받고, ES로 전송하기 위한 IAM Role이 필요합니다. 아래에서와 같이 구성합니다.
ElastciSearch의 접근이 VPC를 통한 접근으로 제한을 했기 때문에 [그림 5.3.18]에서 처럼 추가적인 IAM Role이 필요합니다. 이 단계에서 Role을 생성하고, IAM으로 접속하여 추가적으로 LambdaVPCAccessExecutionRole을 추가해 줍니다.
이 과정이 함께 진행되지 않으면, Stream 전송을 할 수 없습니다.
[CloudWatch] -[ Logs ] -[Log Groups] - [ Log Group 선택] -[Action] - [ Stream to Amazon ElasticSearch Service]
[CloudWatch] -[ Logs ] -[Log Groups] - [ Log Group 선택] -[Action] - [ Stream to Amazon ElasticSearch Service]
[CloudWatch] -[ Logs ] -[Log Groups] - [ Log Group 선택] -[Action] - [ Stream to Amazon ElasticSearch Service]
[Lambda] - [ Functions ] - [생성된 Lambda Function]
이제 VPC Flow 구성을 위한 모든 단계를 완성했습니다. 실제 VPC Flow가 CloudWatch, Lambda를 통해서 ES로 정상적인 전송이 되고 있는지를 확인해야 합니다.
하지만 ES로 접근하기 위해서는 외부에서 접속이 불가능합니다. 따라서 Bastion 서버를 통하거나, SSH를 통해서 Portforwarding으로 접근해야합니다.
[그림 5.3.15]에서 처럼 ES에 접속하여 ES URL, Kibana URL을 확인합니다.
Mac OS 기준으로 SSH Portforwarding 설정을 합니다.
SSH Portforwarding 합니다.
PC에서 Kibana에 접속합니다.
kibana 접속이 되지 않을 경우에는 , Security Group과 local ssh config를 다시 확인해 봅니다.
기본 하루에 한개씩 인덱스 패턴이 생성되며, 한꺼번에 가져와서 만들 수 있습니다. Filter를 cwl로 수행합니다.
[Kibana] - [management] - [Create index pattern]
[Kibana] - [management]
[Kibana] - [Discover]
[Kibana] -[Visualize]-[Create Visualization]
Kibana Visualize 에서는 다양한 그래프와 데이터 표기 등을 지원합니다. 이중에서 예로 Pie를 구성해 봅니다.
[Kibana] -[Visualize] - [Pie Graph]
Pie에서 사용될 Index Pattern을 선택합니다.
VCP Flow log를 원본으로 Cloud Watch에서 생성된 로그 스트림은 일정한 Key값을 가지고 ElatsticSearch로 보내지게 됩니다. Kibana는 이러한 key값을 가지고 효과적인 그래프를 표기합니다. 그래프로 표현하기 위해서는 이러한 key들의 값을 적절하게 선택해야합니다. 아래 예제는 Action (Security Group : Accept, Reject)를 가지고 그래프로 표현합니다.
구성 완료 이후 아래와 같이 Action 을 실행하면 Pie 그래프를 실행합니다.
하나의 Pie 그래프에서 추가적으로 여러개의 값을 표현 할 수도 있습니다. Sub Bucket을 추가하면 Pie그래프 안에 Pie 그래프가 추가적으로 표현됩니다.
아래 그래프는 2개의 Pie를 표현한 것입니다. 앞서 2개의 Bucket을 만든 내용입니다. Accept/Reject 되는 분포와 목적지의 서비스 포트 분포를 표기한 것입니다.
다양한 그래프 옵션들을 선택하여 [그림 5.3.33]과 같은 구성을 할 수 있습니다. 아래 그래프는 분단위로 수신되는 Accept,Reject Data를 선형 그래프로 표기한 것입니다.
생성된 그래프는 Save 메뉴를 선택하여 저장이 가능합니다.
이렇게 저장된 다양한 그래프들을 Dashboard에 배치가 가능하며, 이러한 Dashboard기능을 통해 VPC Flow에 대한 다양한 지표로 활용할 수 있습니다.