본문 바로가기

Infrastructure

(9)
Nginx - forward proxy 로 활용하기 업무간 대부분의 프로젝트에서 nginx 를 reverse proxy 로 사용하고 있는데, forward proxy 서버를 구축해야 할 일이 생겨 nginx 를 사용했던 부분은 짧게 남겨보려 합니다. - forward proxy ? 일반적으로 프록시란 두 호스트가 서로 통신을 할 때 직접 하지 않고 중간에 위치해 통신을 도와주는 역할을 하는 것을 지칭합니다. 보통 forward proxy, reverse proxy 이렇게 두 종류로 나뉘는데, 프록시 서버라고 부르는 경우는 대게 forward proxy 를 가리킵니다. forward proxy 란 클라이언트가 서버로 무언가의 요청을 보낼 때 프록시 서버가 요청을 대신 받아서 서버로 요청을 전달해주고, 응답 또한 서버로부터 대신 받아서 클라이언트에 전달해주는..
Grafana 를 좀 더 잘 활용해보자 이번 포스팅에선 Grafana 에서 제공하는 몇 가지 기능을 사용해 시각화를 좀 더 잘 할 수 있는 팁을 보일까 합니다. Grafana 가 8.x 버전이 나왔지만 이 포스팅에선 7.3 버전을 사용하게 되었습니다. 하지만 크게 다른 점은 없습니다. - Overrides 트래픽을 시각화한 대시보드를 예시로 Overrides 기능에 대해 알아보도록 하겠습니다. 별도 라이브러리를 사용해 서버에 요청을 보내는 여러 서버의 트래픽 양을 나타내는 패널을 구성한 상태입니다. 물론 메트릭을 수집할 때 부터 숫자가 아닌 식별이 가능한 문자열을 사용하는 것도 방법이겠지만, 이렇게 메트릭을 수집해도 Grafana 에서 쉽게 처리가 가능합니다. 1번에 대한 Overrides 처리를 해보겠습니다. 먼저 패널 우측에 Overrid..
Grafana API 활용하기 (2) 이전 포스팅에선 간단하게 Grafana API 를 활용하는 방법에 대해서 살펴봤습니다. 이번엔 이 API 를 사용해 만들어둔 대시보드를 백업하고, 이를 이용해 원복해보는 과정을 진행해 볼 것 입니다. - Grafana resources 백업 Grafana Lab 에서 제공하는 모든 HTTP API 는 여기에서 확인할 수 있습니다. 이 중 대시보드를 백업하기 위해선 최소 4개의 API 를 사용해 필요한 정보를 조회해야 합니다. /api/datasources /api/folders /api/search /api/dashboards/uid/:{uid} Grafana 에서 대시보드를 만들 때, 일반적으로 datasources 를 먼저 세팅하고 이를 사용해 대시보드를 구성하게 됩니다. 이 datasources 정..
Grafana API 활용하기 (1) 그라파나는 Grafana Labs 에서 관리하는 오픈 소스 시각화 및 분석 도구로서, 여러 데이터 소스와 손쉬운 통합이 가능합니다. 실제로 그라파나를 설치해 Config 에서 Datasources 를 클릭해보면, 아래와 같이 연동할 수 있는 많은 데이터 소스들이 나옵니다. InfluxDB, ES, Loki, Jaeger 등 여러 데이터소스와의 통합을 지원하지만 Prometheus 와 가장 흔히 통합해 사용한다고 볼 수 있습니다. Prometheus 가 자체적으로 web UI 를 통해 시각화를 제공하지만, 모니터링용 대시보드로 사용하기엔 꽤 부족한 점이 많아 Prometheus 에서도 이를 별로 추천하지 않고 그라파나를 많이 사용합니다. (이전 포스팅) 예전 포스팅(링크)에서 그라파나 대시보드를 설치하고 ..
Prometheus Pushgateway with Node.Js 이번엔 Prometheus 의 Pushgateway 에 대해 살펴보도록 하겠습니다. - Pushgateway 다시한번 간략히 설명하자면, Pull 방식으로 Prometheus 가 메트릭을 수집할 수 없을 때 (ex. batch-job) 사용 가능한 대안입니다. Prometheus 공식 설명에서도 Pushgateway 는 서비스 수준 배치 작업의 결과를 캡쳐하는 정도로 사용하는게 유일하면서 유용한 사례라고 얘기하고 있습니다. (참고 링크) 일반적인 케이스에서 Pull 방식이 아닌 Pushgateway 를 사용할 경우 아래와 같이 발생할 수 있는 몇가지 위험이 있습니다. • 단일 Pushgateway 를 사용해 여러 instance 를 모니터링 할 경우 Pushgateway 는 잠재적인 병목의 위험을 갖게 ..
Node.js Cluster mode 모니터링 이번엔 지난 시간에 이어 싱글 프로세스가 아닌, cluster 로 여러 프로세스를 띄운 상태에서의 메트릭 수집 및 모니터링을 해보도록 하겠습니다. - Prometheus Client Libraries 이전의 포스트에서 prom-client 라는 Node.js 에서 사용 가능한 Prometheus 클라이언트 라이브러리를 소개해드렸습니다. 이번에도 마찬가지로 해당 라이브러리를 사용할 것입니다. (prom-client 는 cluster 환경에서의 메트릭 수집을 지원하는 객체 및 함수가 있습니다) - 샘플 프로젝트 프로젝트 설정이나 지표를 수집하는 부분은 이전 내용과 어느정도 동일하지만 처음부터 만든다고 가정하고 시작해보겠습니다. • 먼저 Node.js 프로젝트를 하나 생성합니다. > mkdir prom-cli..
Node.js 어플리케이션 모니터링 이번엔 Node.js 어플리케이션 (서버) 에서 직접 메트릭을 수집하고, 이를 Prometheus 로 모니터링해보도록 하겠습니다. - Prometheus Client Libraries 직접 운영하는 서비스에서 별도의 메트릭을 추가해 모니터링하기 위해선, Prometheus 의 클라이언트 라이브러리를 설치하고 코드 레벨에 적절한 추가가 필요합니다. 이러한 라이브러리들은 Prometheus 의 4가지 메트릭타입을 구현하고 있습니다. (관련 링크) Node.js 에서 사용할 수 있는 클라이언트 라이브러리는 prom-client 입니다. 이 라이브러리가 공식 라이브러리는 아닌데, 저도 실무에서 사용하고 있지만 완전하지 않다고 느끼긴 합니다. (pm2 와의 연동, pushgateway 기능 부족 등.. 제 개인적..
Prometheus Node Exporter 모니터링 이번엔 Prometheus 와 Node Exporter 를 설치해서 제공하는 메트릭 지표를 확인하고, 시각화 도구인 Grafana 까지 연동해보도록 하겠습니다. 해당 테스트를 위해 aws ec2 instance 를 사용했습니다. - Docker 설치 Prometheus 는 binary 로 설치해도 되지만 전 docker 로 실행하기 위해 먼저 ec2 에 docker 를 설치하도록 하겠습니다. > sudo yum -y install docker 터미널에서 위와 같은 command 를 실행하면 아래처럼 설치가 될 것입니다. docker 버전을 확인해 제대로 설치되었는지 보도록 합니다. > docker -v Docker version 20.10.4, build d3cb89e 20.10.4 버전의 docker ..