본문 바로가기

반응형

분류 전체보기

(149)
[AWS] 폐쇄망 EKS 환경에서 Squid Proxy를 활용하여 HTTP 아웃바운드 통신하기 1. 개요 페쇄망 환경에서 Squid Proxy를 통해 HTTP, HTTPS Proxy를 설정하는 방법에 대해 설명한다. 폐쇄망에서는 NAT Gateway나 NAT Instance를 사용하지 않기 때문에 내부에서 외부 인터넷망으로 접근이 불가능하다. 예를 들어 PG사에 결제한다거나 외부 택배사 모듈과 연동한다거나 등이 불가능한데, 이를 가능하게 하기 위해서는 1. Public Subnet에 프록시 서버를 구성하고 2. EKS Container에서는 프록시 서버를 통해 외부망에 접근함을 명시해줘야 한다. 필자는 Squid Proxy를 통해 폐쇄망에서 외부 인터넷망에 접근하도록 설정하였다. 2. Squid Proxy 설정 설치하는 방법은 인터넷에 아주 많이 나와있고 간단하기 때문에 설치 방법 설명은 생략한다..
[CloudFront] CloudFront Functions를 통해 간단히 인증 처리하기 1. 아키텍쳐 CluodFront를 통해 S3 Image를 다운로드 받을 경우 별도 인증 로직이 없다면 누구나 Download 받을 수 있다. 인증을 구현하는 방법은 다양하지만 CloudFront에 Function을 두어 Header를 검사하여 인증을 처리하도록 해보자. CF에 Image를 다운로드 받을 때 Authorization 헤더를 추가한다. 헤더 통과하면 S3로부터 이미지를 받아오게 된다. → 물론 CDN에 캐싱된 이미지가 있으면 바로 반환한다. Cloudfront Functions은 JavaScript로만 구현이 가능하다. 단순 요청 헤더에 Authorization header 값을 받아오고 이를 원하는 값과 비교하면 끝이다. 헤더가 없을 경우
[EKS] Data Transfer 비용 절감 작업 (istio destination rule, topology aware hints) EKS 상에서 Data Transfer 비용을 줄이기 위해 했던 노력들과 그 후기를 정리해본다. 결론을 말하자면 서비스 안정성이 더 우선이기에 Data Transfer 줄이기 위한 작업은 포기했다. 1. Data Transfer 발생 원인Data Transfer 비용은 크게 2가지에서 발생되었다. 1. NAT Gateway 비용 2. AZ 간 통신 비용 여기서 이제 Bytes 단위로 과금이 되는데 AZ 간 통신할 때 Network Bytes가 많으면 그만큼 과금이 된다고 보면 된다. 본 글에서는 AZ 간 통신 Data Transfer 비용에 대해서 다룬다.2. EKS에서 Data Transfer 절감 방안요즘 인터넷에 EKS에서 Data Transfer를 절감할 수 있는 다양한 방안들에 대해서 많이 소개..
[Loki] Python으로 Loki에 로그 보내는 방법 일반적으로 Promtail, Logstash, fluentBit 등을 통해 로그를 전송하는 방법이 일반적이다. 하지만 경우에 따라서는 별도 개발언어를 사용하여 커스텀하게 Loki로 Log를 전송할 수 있다. 당연히 Loki도 HTTP API를 지원하기에 API Spec에 따라 POST로 로그를 전송하면 되기 때문이다. https://grafana.com/docs/loki/latest/api/#push-log-entries-to-loki Grafana Loki HTTP API | Grafana Loki documentation Open source Grafana Loki HTTP API Grafana Loki exposes an HTTP API for pushing, querying, and tailing..
[CloudFront] S3 Object 변경 시 Cloudfront Invalidation 자동으로 수행하기 1. 개요 보통 정적 컨텐츠를 처리하기 위해 CloudFront와 S3를 연동하는 경우가 많다. 이럴 때 Bucket object를 변경하면 CloudFront의 Edge Location은 이를 알아차리지 못하는데 이럴 때 자동으로 변경된 Object를 자동으로 Invalidation 해주는 방법에 대해서 알아보자. 2. 방법 소개 1. 서버 혹은 사용자가 Bucket의 Image를 변경한다. 2. S3 Bucket에 ObjectCreation 이벤트가 발생 시 Lambda 함수를 Trigger 할 수 있다. 3. Lambda 함수를 Event를 전달받아 어떤 Object가 생성/변경되었는지 확인할 수 있다. 4. Object가 새로 생성되는 이벤트는 무시하며, Object가 변경되는 이벤트일 경우에만 ..
Grafana Monitoring 스택 LGTM 구성기 (Loki, Mimir, Tempo) 아직 LGTM(Loki , Grafana , Tempo , Mimir)관련 한글 자료가 별로 없어서 간략하게 작성해본다. 회사에서 도입을 고민하고 있거나 PoC 중이라면 이 글이 조금의 도움은 될 수 있겠다고 본다. LGTM이란 무엇일까? Grafana에서 밀고 있는 LGTM(Loki , Grafana , Tempo , Mimir)이란 무엇일까? L : Loki (로그 수집 저장소) G : Grafana (시각화) T : Tempo (분산 추적 저장소 , APM) M : Mimr (시계열 메트릭 저장소) 그럼 왜 Grafana에서는 LGTM을 밀고 있는 것일까? 잘 생각해보면 답은 은근히 간단한데, 보통 시스템 모니터링 , 로깅 , 애플리케이션 성능 모니터링을 구성하기 위해 대부분의 회사에서 여러가지 오..
[Prometheus] AlertManager로 Slack 알람 전송하는 법 알아보자 1. 개요해외문서도 그렇고 국내문서도 그렇고 마땅히 잘 정리된 글을 찾기 힘들었다. 그나마 AliceK 님 글이 잘 정리되어 있어서 참고가 되었다. 그래서 전체적으로 이해하는데 약간 애를 먹었지만 삽질을 계속 하다보니 얼추 전체적인 흐름이 정리되어서 간략하게 정리해본다. 사실 Grafana Managed Alert를 사용하면 더욱 쉽고 간편하게 알람을 보낼 수 있지만 너무 많은 규칙들이 Grafana에서 처리될 경우 부하가 발생할 수 있기 때문에 이를 분산하기 위해 가급적이면 AlertManager로 알람을 보내려고 한다. 필자는 Grafana Mimir를 통해 시계열 메트릭을 저장하기에 Mimir Ruler를 통해 규칙을 평가하고, AlertManager에게 이를 전달하여 Slack으로 알람을 보내도록..
[AWS] 클라우드 와치 로그에서 특정 패턴일 경우 Slack 알람 보내는 방법 1. 구성 구성은 정말 간단하다. CloudWatch 로그 그룹에 애플리케이션 로그들이 쌓이고 있다. → 구독 필터로 특정 패턴을 감지하여 AWS Lambda로 보내준다. → AWS Lambda에서는 메시지를 전달받은 뒤 가공하여 Slack으로 메시지를 보내준다. serverless 프레임워크를 활용한다. serverless.yml service: SLACK-NOTIFICATION frameworkVersion: "3" plugins: - serverless-dotenv-plugin provider: name: aws profile: XXXXXXX timeout: 30 memorySize: 256 runtime: nodejs18.x stage: prod region: ap-northeast-2 iam: ..

반응형