회사에서 개발을 하다가, 특정 서버가 유레카 서버에 잘못 등록된 걸 알게 되었다. 현재 유레카 서버에는 각 서비스들이 Docker Container IP로 등록되고 있어, 서비스 명과 Docker IP 정보로만 대상 서버를 찾아야 했다. 문제는 개발서버에 컨테이너가 40개 넘게 돌고 있었고, docker inspect로 서비스 명을 입력해서 일일이 찾기 너무 귀찮았다. 그래서 모든 구동 중인 컨테이너 서비스의 이름과 docker ip를 출력하는 간단한 스크립트를 짜 봤다. docker ps -q | xargs -n 1 docker inspect --format 'CONTAINER_NAME: {{ .Name }} ---> {{range .NetworkSettings.Networks}}{{.IPAddress..
AWS ECR에 도커 이미지를 등록하면 {ID}. dkr.ecr.us-east-2.amazonaws.com/{리파지토리명} 형태로 도커 이미지가 등록된다. {ID}. dkr.ecr.us-east-2.amazonaws.com/{리파지토리명}:{tag} 형태로 ECR에서는 도커 이미지를 관리하는데, EC2에서 이미지를 받아서 컨테이너를 돌렸을 때, 도커 컨테이너 리스트를 확인하면 다음 사진과 같이 뜨게 된다. docker ps 돌아가는 컨테이너가 한 두개면 몰라도 20~30개가 넘어가는 경우 어떤 컨테이너가 어떤 이미지의 어느 태그 기반으로 돌아가고 있는지 확인하기가 어렵다. 그래서 다음과 같이 간단하게 쉘 스크립트를 짰다. #!/bin/bash docker ps | awk '{split($2,image,"..
저번 포스트에서는 간략하게 Sentry에 대하여 설명을 했는데, 이번에는 직접 NodeJS 프로젝트와 Sentry를 직접 연동해보겠다! 먼저 간단한 Typescript기반의 Nest 프레임워크를 이용한 NodeJS 프로젝트를 만들어보자! # NestJS CLI 를 전역으로 설치 npm i -g @nestjs/cli # NestJS 기반 프로젝트 생성 nest new sentry_example 이후 Sentry와 연동을 도와주는 Raven 모듈을 설치해야 하는데, 요즘 NestJS 프레임워크를 썼기에 좀 더 편하게 적용하기 위해서 NestJS용 Raven 모듈을 다운로드했다. # Raven Library https://www.npmjs.com/package/raven raven A standalone (N..
대부분의 개발자들은 자기가 만든 프로그램을 잘 믿지 않는다. 서버 개발자인 나는 처음으로 외주 작업을 진행했을 때, 내 프로그램이 장애 없이 잘 돌아가는지 계속해서 확인해보기도 하고, 원격으로 서버에 접속하여 로그를 살펴보기도 하고, 서비스 페이지 또는 애플리케이션에 들어가 보면서 솟구치는 불안함과 의심을 확인해봤었다 ( 주로 쇼핑몰 또는 기업을 대상으로 외주를 해서, 내 잘못으로 장애가 일어나면 금전적으로 피해보상을 해줘야 하기 때문에 매우 불안했다...ㅜㅜ ). 이런 나의 불안함은 회사에 들어와서도 고쳐지지 않았다. 아침에 출근해서 컴퓨터를 켜고, 가장 먼저 하는 일은 운영 서버에 접속해서 서비스 프로그램들의 로그와 상태를 확인하는 것이었다. 이렇게 직접 확인하는 방법이 별로 효율적이지 않다고 생각을..