Cloud 21

Grafana와 prometheus 연동

https://do0911.tistory.com/19 프로메테우스 설치 및 실행 Helm 설치 헬름은 쿠버네티스에 패키지를 손쉽게 배포할 수 있도록 패키지를 관리하는 쿠버네티스 전용 패키지 매니저로 리눅스의 yum, apt 파이썬의 pip와 같은 역할을 한다. 헬름을 설치하고 이를 do0911.tistory.com 쿠버네티스 환경에서 설치한 프로메테우스에 그라파나를 연동하여 구성해 본다. 사전 작업으로 프로메테우스 설치와 마찬가지로 그라파나가 사용하도록 nfs 서버 생성과 PV, PVC 구성이 필요하다. 아래 명령어로 nfs 서버를 생성한다. $ mkdir nfs_shared/grafana $ echo '/nfs_shared/grafana 192.168.1.0/24(rw,sync,no_root_squas..

Cloud/Grafana 2023.06.06

Grafana?

https://grafana.com/ Grafana: The open observability platform | Grafana Labs Your observability stack Operational dashboards for your data here, there, or anywhere grafana.com 그라파나는 그라파나 랩스에서 제공하는 오픈소스 데이터 시각화 도구로 다양한 수집 도구 또는 데이터베이스와 연계를 지원한다. 아래 예시와 같이 시각화 대시보드를 생성, 모니터링 할 수 있고 Graphite, Prometheus, Elasticsearch와 같은 시계열 데이 터베이스 및 AWS CloudWatch, Azure Monitor, Goolge Stackdriver 와 같은 클라우드 데이터..

Cloud/Grafana 2023.06.05

프로메테우스 (Web UI)

프로메테우스 설치 및 웹 UI 설치가 끝나고 접속하면 먼저 Graph 메뉴를 확인 할 수 있다. 프로메테우스에서 제공하는 가장 중요한 기능을 처리하는 페이지이며 Expression에 메트릭 데이터를 조회할 수 있는 표현 식을 입력하여 값을 조회 할 수 있고 이때 사용하는 표현식은 PromQL(Prometheus Query Language)라는 프로메테우스에 서 제공하는 쿼리 언어이다. 예시로 노드별로 사용가능한 메모리의 용량을 표시하는 node_memory_MemFree_bytes라는 쿼리를 입력하고 Excute를 클릭하면 아래와 같이 각 노드의 정보와 메트릭이 정상적으로 수집되는 것을 확인할 수 있다. Table이 기본 옵션으로 Graph를 선택하여 메트릭 데이터를 시각화하여 차트로 확인할 수도 있다...

Cloud/Prometheus 2023.06.01

프로메테우스 설치 및 실행

Helm 설치 헬름은 쿠버네티스에 패키지를 손쉽게 배포할 수 있도록 패키지를 관리하는 쿠버네티스 전용 패키지 매니저로 리눅스의 yum, apt 파이썬의 pip와 같은 역할을 한다. 헬름을 설치하고 이를 통해 프로메테우스를 설치한다. 아래 명령어를 통해 helm을 설치한다. $ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 $ chmod 700 get_helm.sh $ ./get_helm.sh 사전 설치 및 설정 프로메테우스를 설치하기 전 프로메테우스 서버와 연결할 nfs, PV, PVC 생성과 외부 ip를 부여할 metallb를 구성하여야 한다. https://do0911.tistor..

Cloud/Prometheus 2023.05.31

Prometheus란?

프로메테우스는 사운드클라우드에서 자사 서비스의 모니터링을 위해 개발한 도구로 현재 오픈 소스로 전환되었고 시계열 데이터를 처리하는 것이 주 목적인 프로그램이다. 프로메테우스는 주로 CPU, 메모리 등과 같은 메트릭 데이터에 대한 모니터링 구축을 목적으로 하기 때문에 MSA 형태의 컨테이너 서비스, 서버 클러스터 모니터링 등에서 사용하는 것이 일반적이다. 프로메테우스의 장점 프로메테우스는 CNCF에 속한 프로젝트로서 같은 CNCF의 프로젝트들은 대부분 데이터 백엔드로 프로메테우스를 지원하 고 있기 때문에 큰 노력 없이 쉽게 모니터링 시스템을 구축할 수 있다. 쿠버네티스의 경우 메트릭을 내보내는 /metrics, cadvisor와 같은 기능을 내장하기 때문에 프로메테우스와 쉽게 연동하여 모니터링 시스템을 구..

Cloud/Prometheus 2023.05.31

PV, PVC

쿠버네티스에서 파드는 언제든 생성되고 지워진다. 하지만 파드에서 생성한 내용을 기록하고 보관하거나 모든 파드가 동일한 설정 값을 유지하고 관리하기 위해 공유된 볼륨으로 부터 값을 가져올 수 있도록 설정해야 할 때도 있다. 따라서 파드의 생명주기와 무관하게 저장이 유지되는 데이터 저장소가 필요한데 이런 요구사항을 만족하기 위한 개념이 PV(PersistentVolume)와 PVC(PersistentVolumeClaim)이다. PV는 데이터를 저장할 볼륨을 생성하고 사용할 수 있게 준비하는 것이고 PVC는 사용자가 PV를 사용할 수 있게 요청하는 것이라고 할 수 있다. PV,PVC를 사용하는 이유는 PV, PVC를 사용하지 않고 파드에 네트워크 볼륨과 같은 스토리지를 직접 마운트 해서 사용한다면 스토리지의 ..

쿠버네티스의 서비스 (HPA)

HPA 만약 파드를 사용하는 사용자가 갑자기 많아져 부하가 증가하게 되면 심한 경우 서비스 중단이 발생 할 수도 있다. 쿠버네티스는 이런 경우를 대비해 부하량에 따라 디플로이먼트의 파드 수를 유동적으로 관리하는 기능을 제공하며 이를 HPA(Horizontal Pod Autoscaler)라고 한다. 부하량이 증가하게 되면 설정에 따라 파드를 더 배치하게 되고 부하가 감소하 게되면 파드를 자동으로 감소시킨다. 우선 디플로이먼트를 hpa-hname-pods라는 이름으로 생성한다. HPA를 사용하려면 MetalLB가 구성되어 있어야하며 이전 포스트에서 이미 MetalLB를 구성했기 때문에 expose를 실행해 해당 디플로이먼트를 바로 로드밸런서 서비스로 설정한다. HPA를 사용하려면 파드의 자원이 어느정도 사용..

쿠버네티스의 서비스 (LoadBalancer)

Loadbalancer 로드밸런서는 서버에 가해지는 부하를 분산해주는 기술 및 장치로 클라이언트와 서버 사이에 위치하여 한 대의 서버로 부 하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 성능을 내게 한다. 쿠버네티스에서도 로드밸런서를 사용 가능하며 이전 포스트의 NodePort 방식과 같은 경우 클라이언트의 요청을 모두 워 커 노드의 노드포트를 통해 노드포트 서비스로 이동하고 이를 다시 각 파드로 보내는 방식이기 때문에 비효율적이라고 볼 수 있다. 하지만 로드밸런서를 사용하면 다음과 같은 구조로 간단하게 외부에 노출하고 부하를 분산할 수 있다. 하지만 로드밸런서를 사용하려면 쿠버네티스를 클라우드 환경에 구축하고 해당 클라우드에서 제공하는 로드밸런서 (Amazon의 ELB, Azure의 Azu..

쿠버네티스의 서비스 (NodePort, Ingress)

쿠버네티스에서는 외부에서 쿠버네티스 클러스터에 접속하는 방법을 서비스라고 한다. 외부 사용자가 쿠버네티스에 접속하여 파드를 이용하려면 서비스를 사용하여야 한다. NodePort 외부에서 쿠버네티스 클러스터의 내부에 접속하는 가장 쉬운 방법은 노드포트 서비스를 이용하는 것으로 노드포트 서비스를 설정하면 모든 워커노드의 특정 포트를 열고 여기로 오는 요청을 노트포트 서비스로 전달하고 노드포트에서는 해당 파드로 요청을 전달한다. 오브젝트 스펙을 활용한 NodePort 서비스 생성 실습을 위해 docker hub에 등록되어 있는 echo-hname 이미지를 이용하여 파드를 생성한다. 오브젝트 스펙이 정의되어 있는 yaml 파일을 사용해 kubectl create로 노드포트 서비스를 생성한다. nodeport.y..

테라폼으로 AWS 구성 - 3

웹 서버 배포하기 지난 포스팅에 이어 응용하여 간단한 웹서버를 배포해 본다. #!/bin/bash echo "Hello, World" > index.html nohup busybox httpd -f -p 8080 & 우선 위와 같은 간단한 배시 스크립트로 웹 서버를 실행하며, Hello World 라는 텍스트를 index.html로 저장하고 우분투에서 실행가능한 busybox라는 도구로 8080 port에서 웹서버를 실행해 해당 파일을 제공한다. busybox 명령어를 nohub과 &로 래핑하여 웹 서버가 백그라운드에서 영구적으로 실행되도록 설정한다. EC2 인스턴스에서 이 스크립트를 실행하려면 이전 포스팅을 참고하여 우분투 ami를 사용하여 EC2 인스턴스를 생성하고 user data 옵션으로 해당 셸..

Cloud/Terraform 2023.05.09