[Linux] 프로메테우스
프로메테우스를 이용한 모니터링
프로메테우스
가상머신 설정
3개의 가상머신을 생성한다.
- server : 192.168.197.100
- 01-node : 192.168.197.10
- 02-node : 192.168.197.20
호스트 설정
- server
vi /etc/hostname
server
- node(01-node, 02-node)
vi /etc/hostname
01-node # 02-node는 02-node로 입력
호스트끼리 연동하기
vi /etc/hosts
192.168.197.100 server 192.168.197.10 01-node 192.168.197.20 02-node
다음 내용을 추가해 주고 재부팅한 뒤, ping [가상머신 이름] 으로 서로간의 통신을 확인해본다.
프로메테우스 설정
- 서버 설정(server)
- 레포지터리 추가 ```shell cat > /etc/yum.repos.d/prometheus.repo «‘EOF’ # 따로 쳐야함
[prometheus] name=prometheus baseurl=https://packagecloud.io/prometheus-rpm/release/el/$releasever/$basearch repo_gpgcheck=1 enabled=1 gpgkey=https://packagecloud.io/prometheus-rpm/release/gpgkey https://raw.githubusercontent.com/lest/prometheus-rpm/master/RPM-GPG-KEY-prometheus-rpm gpgcheck=1 metadata_expire=300
EOF # 따로 쳐야함
- 설치
```shell
dnf -y install prometheus2
- 설정 파일 수정
vi /etc/prometheus/prometheus.yml
# 맨 마지막에 추가
static_configs:
- targets: ["localhost:9090"]
- job_name: node
static_configs:
- targets: ['01-node:9100', '02-node:9100']
- 서버 시작
systemctl stop firewalld # 방화벽 해제 systemctl restart prometheus
- 확인
server의 [아이피:9090]을 했을때, 다음 화면이출력되면 성공이다.
- 노드 설정(01-node, 02-node)
- 레포지터리 추가 ```shell cat > /etc/yum.repos.d/prometheus.repo «‘EOF’ # 따로 쳐야함
[prometheus] name=prometheus baseurl=https://packagecloud.io/prometheus-rpm/release/el/$releasever/$basearch repo_gpgcheck=1 enabled=1 gpgkey=https://packagecloud.io/prometheus-rpm/release/gpgkey https://raw.githubusercontent.com/lest/prometheus-rpm/master/RPM-GPG-KEY-prometheus-rpm gpgcheck=1 metadata_expire=300
EOF # 따로 쳐야함
- 설치
```shell
dnf -y install node_exporter
- 실행
systemctl stop firewalld # 방화벽 해제 systemctl restart node_exporter
- 확인
그라파나
설정
- 서버 설정(server)
- 설치
dnf -y install grafana
- 설정 파일 수정
vi /etc/grafana/grafana.ini
35번째 줄을 다음과 같이 바꾼다.
- 설치
- 확인
server의 ip:3000
으로 접속, 초기 아이디 패스워드 모두admin
이다. 접속해서 새로운 비밀번호를 설정한다.
프로메데우스와 연동
자기 프로메테우스 서버의 ip주소
대시보드 설정
- 템플릿 다운 : https://grafana.com/grafana/dashboards/15780-opstree-node-exporter-a/
-
적용
- 직접 만들기
cpu남은양 확인
irate(node_cpu_seconds_total {mode="idle"}[1m])
cup사용양 확인
100 - (avg by (instance) (irate(node_cpu_seconds_total {mode="idle"}[5m])) * 100)
알람 설정
- 설치
dnf -y install alertmanager
- 원본 설정파일 백업
mv /etc/prometheus/alertmanager.yml /etc/prometheus/alertmanager.yml.org
- 설정 파일 생성
vi /etc/prometheus/alertmanager.yml
global:
smtp_smarthost: '54.180.32.98:25' #내가 만든 이메일 도메인
smtp_require_tls: false
smtp_from: 'Alertmanager <test01@mail.cloudcampkjh.kro.kr>' #내가 만든 이메일 도메인 계정1
route:
receiver: 'email-notice'
group_by: ['alertname', 'Service', 'Stage', 'Role']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
receivers:
- name: 'email-notice'
email_configs:
- to: "test02@mail.cloudcampkjh.kro.kr" #내가 만든 이메일 도메인 계정2
- 알람 발생 규칙 설정
vi /etc/prometheus/alert_rules.yml
```shell groups:
- name: Instances
rules:
- alert: InstanceDown expr: up == 0 for: 1m #여기서 시간 설정 할 수 있다. labels: severity: critical annotations: description: ‘ of job has been down for more than 5 minutes.’ summary: ‘Instance down’ ```
- 프로메테우스에 alertmanager 추가
vi /etc/prometheus/prometheus.yml
```shell
Alertmanager configuration
alerting: alertmanagers:
- static_configs:
- targets:
- ‘localhost:9093’ #여기 들여쓰기 신경쓰기
- targets:
rule_files: # - “first_rules.yml” # - “second_rules.yml” - “alert_rules.yml” #들여쓰기 신경쓰기 ```
- static_configs:
- 재시작
systemctl restart prometheus alertmanager
- 확인
node의 컴퓨터 하나 꺼보기
systemctl stop node_exporter
- 1분 후
test02에 메일이 온다.
- Gmail로 받아보기
두개가 설정이 완료되야 한다.
global:
resolve_timeout: 1m
route:
receiver: 'gmail-notifications'
receivers:
- name: 'gmail-notifications'
email_configs:
- to: [받는 사람 메일 주소]
from: [본인 gmail 주소]
smarthost: smtp.gmail.com:587
auth_username: [본인 gmail 주소]
auth_identity: [본인 gmail 주소]
auth_password: [발급받은 앱 비밀번호]
send_resolved: true
- 재시작 및 확인
systemctl restart prometheus alertmanager