전체 글 218

[Datadog] Recovery 알람 제거 방법

Datadog monitor 로 알람을 추가할 때 "경고"나 "위험" 알람은 받지만 복구 알림은 받고싶지 않은 경우 알람 메세지를 조건별로 분리하면 복구 알림은 제외하고 온다. 위험 알람 예시:{{#is_alert}}[ALERT] 문제 발생@slack-channel{{/is_alert}} 경고 알람 예시:{{#is_warning}}[WARN] 경고 상태@slack-channel{{/is_warning}} 만약 복구 알림을 받아도 상관이 없다면 알람받을 채널을 분리하지 않으면 된다. {{#is_alert}}[ALERT] 문제 발생{{/is_alert}}{{#is_warning}}[WARN] 경고 상태{{/is_warning}}@slack-channel

[Prometheus] GPU 서버에 HPA 설정 방법

1. 목적GPU 사용률 기반 Pod AutoScaling을 구현하기 위해 메트릭 수집 및 모니터링 도구로 Prometheus와 Grafana를 선택했다.단, 특정 GPU 서비스만 사용하기 위해서 namespace와 nodepool 설정이 추가적으로 들어간다. 2. 구성GPU 메트릭을 수집하기 위한 Prometheus를 Kubernetes 환경에 구성하는 방식은 크게 2가지가 있다.kube-prometheus-stackStandalone Prometheus (Operator 미사용, 직접 prometheus.yml 관리)수동 설정이 필요한 Standalone과 달리, kube-prometheus-stack은 지표 수집을 자동화할 수 있어서 kube-prometheus-stack 방식을 선택했다. # kub..

Locust와 gRPC 연동 문제 해결(DEADLINE_EXCEEDED)

1. 개요목표Locust를 사용하여 gRPC 서비스에 대한 부하테스트 실행 Pod 구성Locust Podlocustfile.py 를 통해 gRPC 호출하는 클라이언트my-service pod와 동일한 namespace와 image 사용사용된 yaml: locust-deployment.yaml, locust-configmap.yamlgRPC 서버요청을 받는 대상 (my-service pod) 문제 상황현상: Locust Pod에서 locustfile.py로 직접 gRPC 호출 시 DEADLINE_EXCEEDED 에러 발생(클라이언트 측 타임아웃).특이점: Locust pod 내에서 my-service.py 스크립트는 정상 동작하나, locustfile.py는 서버 측에 로그조차 남기지 못함.gRPC Rec..

Linux/기타 2026.02.01

AWS Domain과 EKS Service DNS 간의 요청 응답 속도 비교

EKS 내부 서비스 간 통신 방식을 비교하기 위해 AWS Domain(ALB 경유) 방식과 EKS Service DNS(ClusterIP) 방식을 대상으로 성능 테스트를 진행했다. 일반적으로 클러스터 외부(ALB)로 나가는 것보다 내부 DNS(Service) 경로가 더 빠를 것이라고 예상할 수 있지만, 실제 결과는 반대였다. 구분테스트 유저 수테스트 시간총 요청 수요청률 (req/s) ALB20120초2281.90ALB20120초2291.92DNS20120초2181.84DNS20120초2191.83 1) 평균 응답 시간EKS Service DNS는 ALB 대비 약 380~500ms 느림 2) 최대 응답 시간(Max)EKS DNS 경로는 ALB 대비 최대 3,000ms 이상 지연 발생 3) 요청 처..

MSA/쿠버네티스 2025.12.11

[Kubernetes] RBAC 설정

개념K8s(Kubernetes)는 RBAC(Role-Based Access Control)을 통해 사용자(User) 또는 서비스 계정(ServiceAccount)에 리소스 접근 권한을 부여한다. 권한 구성K8s 권한은 아래 3가지 원칙으로 구성한다.최소 권한 원칙(Principle of Least Privilege) 적용필요 최소한의 권한만 부여모든 권한을 admin으로 주지 않도록 주의네임스페이스별 격리프로젝트나 서비스별로 네임스페이스를 분리하고 Role/RoleBinding으로 관리서비스 계정 사용 권장사람 계정(User) 보다는 서비스 계정(ServiceAccount)으로 권한 부여Pod가 권한을 사용해야 하는 경우 서비스 계정 연동 구성 원칙에 따라 네임스페이스 또는 클러스터 단위로 설정이 가능하..

MSA/쿠버네티스 2025.12.05

[Signoz] Signoz 란?

개요Signoz는 하나의 플랫폼에서 애플리케이션의 성능 모니터링(APM)과 로그, 트레이스를 통합하여 관찰 가능성을 제공하는 도구다. 복잡한 MSA(MicroService Architecture) 환경에서1. 분리된 모니터링 툴로 인해 근본 원인 분석 지연.2. 높은 상용 SaaS 비용과 벤더 종속성 문제 발생.에 대한 해결책으로, 이러한 파편화된 관측 환경을 통합하고 성능 및 비용 효율성을 높이기 위해 만들어졌다. SigNoz는 OpenTelemetry 네이티브 설계, ClickHouse 기반 단일 저장소를 기존 도구들의 차별점으로 삼는다.특징SigNoz기존 도구 (Prometheus/Jaeger/Loki 조합)OTel 네이티브처음부터 내장 (벤더 종속성 제로)OTel 통합 모델을 중심으로 구축되지..

MSA/APM 2025.11.17

[Docker] Java 프로젝트를 Docker 이미지로 빌드하기

AWS EC2로 운영중이던 java 서비스를 EKS 로 전환해야하는 일이 있었다. Maven 등의 빌드 도구가 필요한 java 서비스는 도커 이미지로 빌드하고 실행 환경을 만들면 빌드 환경과 서비스 실행 환경을 분리할 수가 있어서, Maven, JDK, 빌드 캐시 등의 불필요한 산출물들이 남지 않는다. # 1단계: 빌드 환경 (Maven)FROM maven:3.8.6-amazoncorretto-8 AS builderWORKDIR /buildCOPY service /buildRUN mvn clean package# 2단계: 실행 환경 (Amazon Linux)FROM amazonlinux:2 AS baseRUN yum update -y && \ yum install -y java-1.8.0-op..

MSA/도커 2025.10.13

[Kubernetes] Fluentbit 로그 수집 방법(Sidecar vs DaemonSet)

EKS에서 fluentbit를 sidecar로 띄울때와 daemonset으로 띄울때의 설정을 다르게 줘야한다. sidecar는 pod name을 바로 가져올 수 있지만, daemonset 은 기본적으로 노드 이름을 가져와서 설정을 따로 더 해줘야한다. [sidecar] fluentbit-configmap.yamlapiVersion: v1kind: ConfigMapmetadata: name: fluentbit-config namespace: ns-appdata: fluent-bit.conf: | [SERVICE] Flush 1 Grace 30 Log_Level ..

MSA/쿠버네티스 2025.09.16

[Kubernetes] HPA 설정 커스터마이징(hpa behavior)

HPA(Horizontal Pod Autoscale)CPU나 메모리 사용률을 기준으로 자동으로 파드 수를 조절할 수 있게 해주는 기능. autoscaling/v1 과 autoscaling/v2 가 있는데, autoscaling/v1 는 기본적인 CPU와 메모리 사용률 기준으로만 세팅이 가능하고 별다른 커스텀이 불가능하다. 다양한 메트릭 종류 및 스케일 인/아웃의 속도, 빈도, 조건에 대한 세밀한 조정이 필요하다면 v2를 사용해야한다. 항목 autoscaling/v1 autoscaling/v2지원 메트릭 종류리소스 (CPU, 메모리)리소스 (CPU, 메모리) external 메트릭 (ALB 요청 수 등 클러스터 외부 메트릭)object 메트릭 (클러스터 내부 메트릭)여러 메트릭 동시 지원XO v..

MSA/쿠버네티스 2025.08.07