전체 글 135

[모니터링의 새로운 미래 관측가능성 #5] 6장. 관측가능성의 표준, 오픈텔레메트리

📌 이 내용은 책 내용 메모입니다. 개인적인 생각과 경험 그리고 여러 잡담이 있으니, 책을 읽으며 의견을 나누고싶은분이 봐주시면 좋겠습니다. 6.1 오픈텔레메트리 소개 OpenTelemetry는 한마디로 정리하자면 로그, 메트릭, 추적을 한번에 수집하는 에이전트 역할을 한다고 말할 수 있다. 역사 OpenTelemetry는 Cloud Native Computing Foundation (CNCF) 프로젝트로, 이전의 두 프로젝트인 OpenTracing과 OpenCensus가 합병하여 만들어졌다. OpenTracing, OpenCensus는 코드를 계측하고 관측성 백엔드로 텔레메트리 데이터를 보내는 표준이 없었기 때문에 두 프로젝트의 핵심 기능을 통합하고 텔레메트리 데이터의 생성,수집,전송 방식을 표준화하는..

[모니터링의 새로운 미래 관측가능성 #4] 4장. 오픈소스 관측가능성, 그라파나

📌 이 내용은 책 내용 메모입니다. 개인적인 생각과 경험 그리고 여러 잡담이 있으니, 책을 읽으며 의견을 나누고싶은분이 봐주시면 좋겠습니다. 이번 4장에서는 그라파나 LGTM스택을 설치하고, 기반기술을 이해할 수 있도록 설명한다. 4.1 그라파나 관측가능성 4.1.1 목적과 범위 이 책에서 말하는 관측가능성은 LGTM Stack(Loki, Grafanam Tempo, Mimir)이다. 그 많은 툴 중에 LGTM Stack을 선정한 이유는 아래와 같다고 한다. 대중적이고 라이선스에 자유로운 오픈소스 지속적이고 장기적인 로드맵과 많은 커뮤니티 기술적으로 우수하고 클러스터 구상이 가능하며 많은 API 제공 생각해보면 ElastiSearch는 이제 더이상 오픈소스가 아니라 OpenSearch로 갈라선 반면에 L..

[모니터링의 새로운 미래 관측가능성 #3] 3장.관측가능성의 시작 프로메테우스

📌 이 내용은 책 내용 메모입니다. 개인적인 생각과 경험 그리고 여러 잡담이 있으니, 책을 읽으며 의견을 나누고싶은분이 봐주시면 좋겠습니다. 이번 3장에서는 프로메테우스에 대해 이야기 하고있다. 프로메테우스는 프로메테우스 자체를 잘 사용하기 위한 말 그대로의 생태계를 구축하고있다. 프로메테우스 생태계와 내부 원리를 이해하고있다면 문제가 발생했을 때 근본적인 해결책을 제시할 수 있기때문에 이해하는것이 매우 중요하다. 3.1 프로메테우스 바이너리 구성 프로메테우스는 2012년 시작되었고, 독립적으로 개발되고있는 오픈소스이다. 2016년에 Kubernetes에 이어 두 번째로 Cloud Native Computing Foundation에 가입했다. Prometheus는 클라우드 네이티브 환경에서 정말 중요한 ..

[모니터링의 새로운 미래 관측가능성 #2] 2장.관측가능성 기반 기술

📌 이 내용은 책 내용 메모입니다. 개인적인 생각과 경험 그리고 여러 잡담이 있으니, 책을 읽으며 의견을 나누고싶은분이 봐주시면 좋겠습니다. 2.1 트래픽 관리 2.1.1 SPOF (single point of failure) 클라우드는 멀티테넌트 환경이기때문에 우리가 알지 못하는 사이에 장애가 발생하고, 원인분석도 쉽지 않다. (저번에 겪은 cloudfront장애처럼..) 특히 네트워크는 SPOF 특징을 가지고 있고 그 영향도가 매우 크리티컬하다. 그렇기 때문에 관측가능성 뿐만 아니라 네트워크 트래픽을 수집하고 관리하여 사전에 탐지하고 예측하는것이 중요하다. 2.1.2 로드벨런서 클라우드 + 쿠버네티스의 조합으로 네트워크의 복잡도가 매우 크게 증가했다.😭😭😭😭 많이 사용되는 3가지 로드벨런서 유형을 소..

[Lambda] RDS 중지/ASG min값 0으로 수정

특정 기간동안 사용하지 않을 RDS/ASG/EC2를 중지 시켜주는 스크립트 stop-ec2-rds-during-vacation import boto3 region = 'ap-northeast-2' rds = boto3.client('rds') asg = boto3.client('autoscaling') ec2_r = boto3.resource('ec2') ec2 = boto3.client('ec2', region_name=region) instances = [] def lambda_handler(event, context): # RDS 인스턴스 중지 dbs = rds.describe_db_instances() for db in dbs['DBInstances']: if (db['StorageType'] =..

[ECS exec log ec2] 스크립트

ECS exec도 불편하고, 로그를 보는것도 불편하고 ec2 매번 찾아들어가는것도 귀찮고 힘들어서 스크립트를 만들었다.. 모두에게 도움이 되기를... 🥲 Step 1 ) ECS 서비스 설정 가장 먼저, enableExecuteCommand 가 활성화 되어있어야 한다. aws ecs update-service --cluster ${클러스터이름} --services ${서비스이름} --enable-execute-command true enableExecuteCommand 활성화 후에도 뭔가 오류가 발생한다면 이것을 실행해보자 (amazon-ecs-exec-checker) Step2) 로컬 PC에 awscli, Session Manager 설치 스크립트를 실행하기위해서는 awscli, session Manag..

ECS를 쓰면서 불편한점 (후기)

ECS를 사용하기로 결정했고, 구성한지 1달이 거의 다 되어간다. 그런데...... 생각지도 못하게 너무 불편한점이 많다. ㅠㅠ 직접 겪은 ECS의 불편한 점들을 나열해보려고 한다. 1. 관리툴 부족 ..... 오류 발생했을때, 얼른 들어가서 로그를 봐야하는데, 로그보기가 너무 어렵다.... 실시간으로 로그를 보려면 얼른 ec2 접속해서 봐야한다. 별도의 로그 솔루션을 사용하지 않기 때문에, 나는 그냥 cloudwatch logs에서 로그를 확인하거나 (불편), ec2에 직접 들어가서 docker logs로 로그를 확인하고 있다.(이것도 불편) k8s는 k9s로 엄청 간단하게 로그를 다 볼 수 있는데 말이다.. 이런 시대에 살고있는 우리에게 ecs는 너무나도 불편하다. 이름 깃헙레포 단점 copliot ..

AWS Codepipeline lambda 실행하기

Codepipeline에서 lambda를 실행하려면, Codepipelin에게 완료되었는지 여부를 알려줘야 한다. 아래 코드는 단독실행 task를 위한 샘플 코드이다. import urllib3 import json import boto3 import json import botocore.exceptions def lambda_handler(event, context): client = boto3.client("ecs", region_name="ap-northeast-2") waiter = client.get_waiter('tasks_stopped') code_pipeline = boto3.client('codepipeline') job_id = event['CodePipeline.job']['id'] ..

CodePipeline ECR Rolling Update를 위한 TaskDefinition Update Lambda 코드

CodePipelin 구성 시, 빌드과정 없이 ECR -> ECS 에 바로 배포한다면 TaskDefinition 파일을 업데이트 해줘야 한다. 그러자고 Codebuild를 쓰자니, 파일 만드는데 몇초면 끝나는데, 비용도 비용이고 codebuild는 무겁다 ㅠ (이거 돌리는데 4분걸린다..) lambda로 하면 30초면 끝나니 이렇게 해보는것을 추천한다. =========================================== Source ------> Def-Step ------> ECS (rolling update) [ECR] [Lambda] =========================================== import json import boto3 import zipfile imp..

728x90