1.개요지금까지 내가 운영했던 대부분의 웹 서버는 nginx였다. 그리고 이번에 정기점검 페이지 전환 작업을 위한 proxy 서버 또한 nginx로 구성하게 되었는데 이렇게 nginx를 많이 사용하면서 제대로 공부한 적은 없던 것 같아 이번 기회에 한번 정리를 해보려 한다. 2. nginx의 기본 원리Nginx는 하나의 master process와 하나 이상의 worker process로 구성되어 있다.master process : configuration file을 읽고 실행하며 worker process들을 관리worker process : 유저가 요청한 request에 대한 실제 작업을 수행 즉, Nginx는 멀티 프로세스 싱글 스레드 방식으로 동작한다.* 비동기 이벤트 방식으로 동작하여 메모리 사..
👍🏼 요약HTTP POST 요청 혹은 프로세스 시그널(kill) 명령으로 재시작 없이 reload가 가능하다.HTTP POST 방식curl -X POST http://localhost:9090/-/reload프로메테우스 설정에서 Lifecycle 옵션이 활성화 되어있어야 한다.프로세스 시그널kill -SIGHUP [PID] kill -1 [PID](두 명령 동일함)ps -ef | grep [process 이름] 해당 명령으로 PID 확인 가능 🔃 프로메테우스 config reload💡프로메테우스 구성/운영 중 감시 대상을 변경하거나 알람 role를 추가하는 등 프로메테우스 설정을 변경해야 하는 경우가 존재한다. 본인의 경우 현재 컨테이너로 동작중에 있어 config 파일을 수정하고 재시작을..
💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 5주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. Module테라폼으로 인프라와 서비스를 관리하면 시간이 지날수록 구성이 복잡해지고 관리하는 리소스가 늘어나게 된다. 테라폼의 구성 파일과 디렉터리 구성에는 제약이 없기 때문에 단일 파일 구조상에서 지속적으로 업데이트 할 수 있지만 다음과 같은 문제가 발생한다.테라폼 구성에서 원하는 항목을 찾는 것이 점점 어려워짐리소스들 간의 연관 관계가 복잡해질수록 변경 작업의 영향도를 분석하기 위한 노력이 늘어남개발/스테이징/프로덕션 환경으로 구분된 경우 비슷한 형태의 구성이 반복되어 업무 효율이 줄어듬새로운 프로젝트를 구성하는 경우 기존 구성에서..
요약일반적으로 사용하는 프로메테우스와 프로메테우스 Docker Image 의 메트릭이 저장되는 기본 경로가 다르다.프로메테우스의 기본 메트릭 저장 경로는 /prometheus/data 이다.docker image에는 --storage.tsdb.path 옵션이 붙어 /prometheu 로 경로가 변경된다.prometheus documenter에 나온 정보대로 기본 경로 /prometheus 로 지정하고 싶다면, 따로 --storage.tsdb.path=/prometheus 옵션을 부여해야 하니, 구성에 주의해야 한다. 현재 docker compose를 구성하여 프로메테우스를 구성 중 docker compose up -d 명령으로 컨테이너 실행을 진행하면 계속해서 컨테이너 마운트 포인트 관련한 에러가 ..
1. 기존 프로메테우스 데이터 마이그레이션현재 테스트로 프로메테우스를 구성하여 node exporter를 통해 몇몇 리눅스 서버를 모니터링하고 있다.별 다른 설정 없이, 단순 프로메테우스 이미지를 컨테이너 실행 시킨 것 뿐이라, 데이터 등도 컨테이너 내부에서 쌓이고 있다. 대강 이런 형식인데, 문제는 모니터링 대상이 추가되거나, 구성에 변경이 있을 시 컨테이너를 재시작하면 쌓여있던 데이터가 전부 날아가는 것이다..(당연히,, 컨테이너를 새로 빌드하면 그렇지..) 그래서 지금 동작중인 해당 프로메테우스의 저장된 3개월치의 데이터를 가지고신규 구성한 컨테이너로 마이그레이션하는 작업을 진행해보겠다. 신규 구성 프로메테우스 구성은 기존 글을 참고하시라https://cwpack0730.tistory.com/10..
💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 4주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. 1. 프로바이더테라폼은 terraform 바이너리 파일을 시작으로 로컬 환경이나 배포 서버와 같은 원격 환경에서 원하는 대상을 호출하는 방식으로 실행된다. 이때 ‘원하는 대상’은 호출하는 방식이 서로 다르지만 대상의 공급자 즉, 프로바이더가 제공하는 API를 호출해 상호작용 한다. 여기서 테라폼이 대상과의 상호작용을 할 수 있도록 하는 것이 프로바이더이다.각 프로바이더의 API 구현은 서로 다르지만 이전 포스팅에서 살펴본 테라폼의 고유 문법으로 동일한 동작을 수행하도록 구현되어 있다. 프로바이더는 플러그인 형태로 테라폼에 결합되어 대..
💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 3주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. 1. 프로비저너프로비저너는 프로바이더와 비슷하게 ‘제공자’로 해석되나, 프로바이더로 실행되지 않는 커맨드와 파일 복사 같은 역할을 수행한다. 예를 들어 클라우드에 리눅스 VM을 생성하는 것에 더해 특정 패키지를 설치해야 하거나 파일을 생성해야 하는 경우, 이것들은 테라폼의 구성과 별개로 동작해야 한다. 프로비저너로 실행된 결과는 테라폼의 상태 파일과 동기화도지 않으므로 프로비저닝에 대한 결과가 항상 같다고 보장할 수 없다.따라서 프로비저너 사용을 최소화 하는 것이 좋다. 프로비저너 종류에는 파일 복사와 명령어 실행을 위한 file, ..
💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 3주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. 1. 반복문1.1 for_each 반복문for_each는 반복(for)을 할 때 타임 값에 대해 하나하나 each object로 접근한다는 의미이다.즉, 리소스 또는 모듈에서 for_each에 입력된 데이터 형태가 map 또는 set이면, 선언된 key 값 개수만큼 리소스를 생성하게 된다.for_each : 반복문으로, 선언된 key 값 개수만큼 리소스를 생성함 다음과 같이 tf파일을 생성하여 apply를 실핼해보겠다.# main.tfresource "local_file" "abc" { **for_each** = { **a =..
💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 2주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. cloudnet 스터디 악분님이 count를 실습해볼 수 있는 좋은 시나리오를 공유해주셨습니다. (감사합니다)한번 따라서 정리해보도록 하겠습니다. 1. count 실습 (스터디 악분님 제공)다음과 같이 실습환경을 구성한다. 총 10개의 시나리오를 통해 학습한 내용을 확인해 보겠다. 시나리오 1. aws_subnet- AWS VPC Subnet 테라폼 코드 작성- 요구사항 : subnet cidr를 변수로 입력 다음과 같이 main.tf, variables.tf, terraform.tfvars 총 3개의 파일을 작성한다.# main.t..
💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 2주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. 1. local (지역값)코드 내에서 사용자가 지정한 값 또는 속성 값을 가공해 참조 가능한 local (지역 값) 은 외부에서 입력되지 않고, 코드 내에서만 가공되어 동작하는 값을 선언한다.‘local’은 입력 변수와 달리 선언된 모듈 내에서만 접근 가능하고, 변수처럼 실행 시에 입력받을 수 없다. 로컬은 사용자가 테라폼 코드를 구현할 때 값이나 표현식을 반복적으로 사용할 수 있는 편의를 제공한다. 하지만 여러 곳에서 자주 사용되는 경우 실제 값에 대한 추적이 어려워지므로 유지 관리 측면에서 부담이 발생할 수 있다. 주의할 것!! ..
💡cloudNet@ 팀의 가시다 님이 진행하는 Terraform 101 Study 4기 2주차 내용으로,[테라폼으로 시작하는 IaC] 도서를 참조하였습니다. 감사합니다.. 1. 데이터 소스데이터 소스는 테라폼으로 정의되지 않은 외부 리소스 또는 저장된 정보를 테라폼 내에서 참조할 때 사용한다. (예를 들면 aws image 등) 1.1 데이터 소스 구성데이터 소스 블록은 data로 시작된다. 이후 데이터 소스 유형을 정의한다.(resource 블록과 유사함) 데이터 소스 정의 예시data "local_file" "cwtest" { filename = "${path.module}/cwtest.txt"}# ex, aws image의 경우data "aws_iam_user" "cwdev" { user_..