#두괄식 요약
1. Docker 설치
#!/bin/sh
#centOS
yum update -y
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y
systemctl start docker
systemctl enable docker
systemctl status docker
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
#!/bin/sh
#amazon linux2
yum update -y
amazon-linux-extras install -y docker
service docker start
systemctl enable docker
systemctl status docker
2. exporter 계열 1개 설치
docker run \
-itd \
-p 9100:9100 \
--name node_exporter \
prom/node-exporter
3. Prometheus 설치
echo """
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'node_exporter'
static_configs:
- targets: ['IP_1:9100', 'IP_2:9100']
""" | tee /home/ec2-user/prometheus.yml
docker run \
-itd \
-p 9090:9090 \
--name prometheus \
-v /home/ec2-user/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
4. prometheus - exporter 연결 확인
chrome에서 prometheus_ip:9090 접속 -> 상단 Status -> Targets
5. grafana 설치
docker run -itd \
--name grafana \
-p 3000:3000 \
grafana/grafana
6. prometheus - grafana 연결 확인
Chrome -> grafana_ip:3000
#자세히
각 서버들, 또는 Docker container, kubernetes 등의 모니터링 시스템에는 Prometheus Grafana 조합을 많이 쓴다고 들었다.
그래서 Prometheus - Grafana를 설치를 해보았다.
인프라 구성도는 이렇다.
마침 최근에 썼던 VPC와 서브넷이 있어서 그 위에 public-subnet-a, private-subnet-a를 썼다.
만들 구성도는 이렇게 된다.
Prometheus란 : 서버들의 정보들을 긁어 모으는 수집 소프트웨어. 모아놓은 시계열데이터(TSDB format)를 사용해 간단히 차트도 띄울 수 있고, 알람도 보낼 수 있다.
Node exporter란 : Prometheus에게 데이터를 제공하는 소프트웨어, 프로메테우스에서 제공되는 여러개의 exporter 중 하나다.
Grafana 란 : Prometheus에서 차트도, 알람도 가능하지만 기능이 조금 부족한 감이 있다. Grafana를 쓰면 시각화, 알람 설정 등을 좀더 세밀히 할 수 있다.
웹서버(라고 이름만 지은) 인스턴스 3대를 만들어서 node exporter를 docker로 띄워준다.
- 인스턴스 구성
어느샌가 Amazon Linux 2가 아닌 1이 자동으로 선택되는 AMI가 되었는데, Amazon-linux1은
amazon-linux-extras가 없는 거 같기에 2를 골랐다.
- 보안그룹 열어주기
Node exporter의 포트인 9100을 열어준다 (ssh는 혹시 몰라서 들어가보려고 열었다.)
User Data에 설치 스크립트를 넣는다.
모니터링 서버를 1대 두고
보안그룹도 정해주고
프로메테우스의 포트는 9090이고, 3000은 그라파나의 포트다. (내PC의 IP를 넣었다.)
prometheus와 grafana를 설치한다.
설치를 했으면 정상작동하는지 확인해봐야 한다!
1. 설치가 되었는가?
2. 연동이 되었는가?
를 보면 된다.
브라우저에서 9100번 접속하면 프로메테우스에 접근 할 수 있다.
상단의 Status -> Target을 누르면 연결 상태도 조회 가능하다.
Graph를 들어가면 쿼리를 날리고 확인 해볼 수도 있다.
단순히 기능만을 원하는 거면 사실 프로메테우스에서도 차트, 보드 구성, 알람이 가능은 하다.
3000번 포트로 그라파나에 접속해보자
최초 계정, 비밀번호는 admin/admin이다.
로그인 하면 비밀 번호를 바꾸라고 하는데
Skip을 누르거나, 새 비밀번호도 admin/admin으로 정하면, 로그인 할때마다 다시 정하라고 한다.
접속 후에 톱니바퀴 -> data sources를 들어가면 그라파나에 넣을 data source를 정할 수 있다.
여러 종류의 데이터 소스들 중 프로메테우스를 선택한다.
주의점은 선택만 해도 그라파나에 추가가 된다.
선택 후 뒤로가기 해서 또 누르면 저장 버튼을 따로 안눌러도 2개가 생긴다.
프로메테우스의 URL을 입력해준다. 이때, 보안그룹 또 열기 싫으면 Public IP 말고 Private IP를 입력하기 바란다.
안그러면 이렇게 접근이 안되니까...
물론 그라파나와 프로메테우스를 티어 분리를 하고 싶다면 public ip로 넣어줘야 한다.
다시 Private IP를 넣고
아래에서 Save & test를 눌러 꼭 통과를 해야 한다.
Testing 이라고만 적혀 있을때 뒤로 가기 눌렀다가 나중에 보니 연결 안됐다 나오면 혼란스럽다.
이렇게 설치 및 연동을 완료 했다.
구조를 정리해 설명하자면,
Web서버에 (설치 안했지만) Docker container가 띄워져 있고 그 안에 Node_exporter가 들어가 있다.
모니터링서버엔 컨테이너 두대가 올라가, Prometheus와 Grafana가 각각 들어있는 형태다.
아까 열어준 9100으로 prometheus가 접근해 node-exporter로부터 데이터를 받는다.
(Node-exporter가 모니터링 서버로 데이터를 먼저 보내주는게 아니다. 올때만 준다.)
그러면 Node-exporter가 데이터를 제공하고, 프로메테우는 데이터를 수집해 "설정한 기간 만큼만" 저장한다. (default 15 day)
프로메테우스가 모은 데이터를 그라파나가 접근해 (9090) 데이터를 가져와 시각화를 한다.
그렇게 생성된 차트 등을 브라우저에서 확인이 가능하다.
다음 포스트에서는 그라파나에 UI를 띄워보자.
'Prometheus - Grafana - Thanos 사내 도입기' 카테고리의 다른 글
[Docker] Apache exporter 설치기 (0) | 2023.04.26 |
---|---|
Mysql exporter Docker 설치 (0) | 2023.04.18 |
그라파나에 간단한 UI 띄우기 (2) | 2023.04.15 |
프로메테우스 저장기한 변경 (0) | 2023.04.09 |