본문 바로가기

Mornitoring

(9)
Grafana Mornitoring - 4. ECS Cluster & Container Cluster의 지표는 EC2에서 NodeExporter를 통해 Metric을 수집하는 방법과 동일합니다. Container의 각 지표를 수집하는 방법은 생각 외로 매우 간단합니다. CAdvisor를 그냥 서비스로 하나 띄워주기만 하면 되기 때문입니다. 먼저 아래 명령어를 수행해서 직접 CAdvisor를 띄워서 테스트해보도록 하겠습니다. docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadv..
Grafana Mornitoring - 3. 윈도우 서버 WMI Exporter 세팅 리눅스 서버가 아닌 윈도우 서버에서는 WMI Exporter를 통해 Prometheus가 메트릭을 수집할 수 있습니다. 윈도우 서버에서 WMI Exporter를 설치하겠습니다. WMI Release 페이지를 참고해주세요. 현재 글 작성 기준으로 0.9 버전이 최신버전입니다. 해당 파일을 설치하면 아래와 같이 정상적으로 잘 작동하는 것을 확인할 수 있습니다. 이제 프로메테우스 yaml파일을 수정하고 잘 수집이 되는지 확인해보도록 하겠습니다. 아래와 같이 수정한 후 리로드 하면 Prometheus에서도 잘 수집되고 있는 것을 볼 수 있습니다. 그라파나 대시보드 2129번을 통해서 아래와 같이 모니터링을 할 수 있습니다.
Grafana Mornitoring - 2. Node Exporter, Prometheus, Grafana 세팅 Node Exporter의 최신 Release는 여기에서 확인하실 수 있습니다. 위의 링크를 참조하여 모든 서버에 아래 버전을 수정해서 설치해주시면 됩니다. #!/bin/bash wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz tar -xvf node_exporter-0.18.1.linux-amd64.tar.gz sudo mv node_exporter-0.18.1.linux-amd64/node_exporter /usr/local/bin/ sudo cat > node_exporter.service &1 & yaml을 따로 수정하지 않았다면 Localh..
Grafana Mornitoring - 1. Intro Grafana를 통해 모니터링 하기 위해 세가지 요소를 사용합니다. 1. Grafana (모니터링 시각화 오픈소스) 2. Prometheus (시계열 DB) 3. NodeExporter (메트릭 수집 Agent) Grafana, Prometheus, NodeExporter의 구성을 보면 다음과 같습니다. 기본적으로 NodeExporter는 각 인스턴스에 설치되어 9100 Port로 메트릭을 뿌리게 됩니다. 그리고 Prometheus는 자신의 yaml파일에 설정된 IP들의 NodeExporter에서 메트릭을 수집하게되고 그라파나는 9090포트로 열려있는 프로메테우스에 수집된 Metric들을 가져와서 대시보드를 구성하게 됩니다. 그러나 만약 서버에 컨테이너 기반으로 돌아가고, 컨테이너에 대한 Metric을 ..
ECS Cluster & Container - CloudWatch Metric 수집 ECS를 구축 시 아래 옵션을 체크해주면 됩니다. ECS 구축하기 참고 이후 서비스까지 모두 띄운 후에 아래와 같은 지표들을 확인할 수 있습니다. Task의 개수, Memory 사용률, 네트워크, 스토리지 등을 확인할 수 있으며, 기본 ECS 지표에서도 CPU 및 Memory 사용률을 보실 수 있습니다. Fargate의 경우 다른 설정없이 알아서 수집되기 때문에 따로 글을 작성하지는 않겠습니다. ECS에서 Cloudwatch를 통해 메트릭을 수집하는 방법을 알아봤습니다.
Cloudwatch 경보 설정 - 2. SNS, SNS SMS, SES 보내기 먼저 SNS가 발생하면 람다에 SNS가 발생한 내역을 전달하고, 이 내용에서 필요한 부분들만 수집하여서 메일을 보내도록 구성해보겠습니다. 람다 함수를 만들기전, ec2 describe와 ses 전송, sns publish에 관한 권한이 있어야 하기 때문에 Lambda Role을 하나 만들어주겠습니다. 이제 위의 롤과 아래 코드가 작성 된 람다 함수를 만들어주겠습니다. 메일은 SES를 통해 보내주고, 메세지는 SNS의 SMS를 통해 보내주겠습니다. (SES나 SMS는 기본적으로 보낼 수 있는 한도 제한이 작아 꼭 리밋을 체크하시기 바립니다.) 혹은 다른 주제를 만들어서, Email 전송이 있는 구독들을 만든 후 SNS Publish를 하셔도 됩니다. def send_email_sns(sub, content..
Cloudwatch 경보 설정 - 1. 기본 SNS를 통한 알림 Cloudwatch Alert은 Cloudwatch에서 수집 되고 있는 지표에 대해서만 설정이 가능합니다. 이를 SNS연동 혹은 Lambda와의 연동을 통해서 수집된 지표의 임계값이 설정된 값에 대한 조건을 만족하면, 알림을 받을 수 있도록 설정하는 부분입니다. 먼저 SNS부터 생성해보도록 하겠습니다. SNS는 주제, 구독의 개념으로 이루어져있습니다. 만들어진 주제에 대해서, 구독을 생성하고 이를 통해 구독되어있는 Email 주소들에 대해서 이메일을 전송하게끔 구성해보도록 하겠습니다. 기본값으로 주제를 만들겠습니다. 만들어진 주제에 대해서 구독을 생성해서 어떤 이벤트가 발생하면 구독되어있는 모두에게 SNS를 통해 알림을 보낼 수 있습니다. 메일 커스터마이징이나 SMS같은 경우는 람다에서 구성을 해야하기 ..
CWAgent - 2. EC2 Windows Memory / Disk 수집 리눅스와 동일하게 IAM Role을 설정해주시고, 폴더를 하나 만들어주세요 Command + R -> CMD로 들어가셔서 아래 명령어를 수행해서 CWAgent를 설치해주세요 curl -O https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/amazon-cloudwatch-agent.msi msiexec /i amazon-cloudwatch-agent.msi 이제 config 파일을 만들도록 하겠습니다. 꼭 저장 포맷을 ansi로 저장해주세요. 그리고 리눅스와 수집하는 매트릭 명칭이 조금 다르니 그 부분도 꼭 확인해주시기 바랍니다. { "metrics": { "append_dimensions": { "AutoScalingGroupNam..