회사에서 사용하는 모니터링 툴을 멋대로 손댈수도 없고 신속하게 보려니 그것도 어렵고 해서
역량 향상 겸 요즘 핫하다는 Prometheus와 Grafana를 활용하여 시스템 모니터링 구성을 해봤다.
Prometheus 는 Metric 수집 툴
Grafana는 수집된 Metric을 GUI로 이쁘게 보여주는 툴
이라고 생각하면 이해가 편할 것 같다.
구성방법은
1) 서버를 하나 마련해서
2) Prometheus, Grafana 설치/연동
3) 클라이언트 쪽에 exporter (node, windws) 설치
4) Grafana 대시보드 구성
위와 같이 크게 4개의 단계로 볼 수 있으며, 구성은 생각보다 쉽고 간단하다.
대시보드도 이미 Grafana 사이트에 잘 구성된 것들이 많으니 json 파일만 내려받아서 적용하면 된다.
AIX는 안되는 것 같고, Linux는 매우 잘 됨. Windows는 실무에 적용하기는 아직 조금 이른 정도라고 생각한다.
이미지를 올려야 하는데, 고객사 망에 구성해놔서 이미지를...꺼낼수가...없다...아잇 참...
1) 서버
- VM으로 생성했다.
- 저장공간은 가볍게 /APP 1TB 구성
- Grafana는 저장공간이 많지 않고 데이터도 늘지 않으니 패스
- Prometheus는 10초 주기 1년 보관 설정할거라 넉넉하게 잡았다
- Process는 service로 관리하고 OS가동 시 자동 시작되도록 설정한다
- Docker로 가동하려 했으나, 관리편의성을 위해 그냥 package로 설치하기로 했다
- Grafana 는 rpm 파일 다운 받아서 yum localinstall 해주면 된다. 쉽다.
- Prometheus는 package 를 다운 받아서
prometheus.yml 환경설정 파일은 /etc/prometheus/prometheus.yml 로 저장(이 파일에 클라이언트 설정 저장)
실행파일은 /APP/prometheus/ 에 저장했다. alias 로 /usr/local/bin/prometheus 만들어주자.
ln -s 명령어 참조(실행파일 그냥 카피해놔도 된다)
- consoles 디렉토리와 console_libraries 디렉토리도 /etc/prometheus에 카피하자
- prometheus를 service로 관리하려고 /etc/systemd/system/prometheus.service 파일 신규 생성
####################################################################
[Unit]
Description=Prometheus Time Series Collection and Processing Server
Wants=network-online.target
After=network-online.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /APP/prometheus/data \
--storage.tsdb.retention.time=365d \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries
[Install]
WantedBy=multi-user.target
####################################################################
- 시스템 데몬 리로드
sudo systemctl daemon-reload
- 서비스 재시작하고 리붓할 때 자동 실행되도록 설정
systemctl restart prometheus && systemctl enable prometheus
2) 클라이언트 - Linux
- node_exporter binary 파일 /usr/bin 아래 저장 (/usr/local/bin 아래 저장해도 된다)
- /etc/systemd/system/node_exporter.service 파일 신규 생성
#####################################################################
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
Environment="NODE_EXPORTER_ARGS=--web.listen-address=\":19110\"" ## 19110 포트는 변경 가능, 변경하면 서버쪽에도 설정 적어줘야 함
User=root ## 계정 만들어줘도 되는데 어차피 백그라운드로 돌거라 root로 실행
Group=root
Type=simple
ExecStart=/usr/bin/node_exporter $NODE_EXPORTER_ARGS
[Install]
WantedBy=default.target
#####################################################################
- 시스템 데몬 리로드
sudo systemctl daemon-reload
- 서비스 재시작하고 리붓할 때 자동 실행되도록 설정
systemctl restart node_exporter && systemctl enable node_exporter
- grafana 대시보드는 "Node Exporter for Prometheus Dashboard based on 11074" 추천
(Node Exporter for Prometheus Dashboard based on 11074 | Grafana Labs)
- /etc/hosts 파일에 대상 추가해야 /etc/prometheus/prometheus.yml 파일에 심플하게 추가 가능하다.
/etc/hosts 는 127.0.0.1 localhost 이런 식으로 추가해놓고
/etc/prometheus/prometheus.yml 에는 요로케 추가할 수 있다. yml 이므로 tab 사용불가. 띄어쓰기 주의.
- job_name: "OS"
static_configs:
- targets: ['localhost:19110']
- targets: ['localhost2:19110']
3) 클라이언트(Windows)
- C:\ 나 아무데나 binary 파일 가져다 놓고 다음과 같이 실행
msiexec /i "C:\windows_exporter-0.22.0-amd64.msi" ENABLED_COLLECTORS=ad,cpu,cs,cpu_info,logical_disk,net,os,service,system,memory,process,time,textfile
- windows exporter는 웃긴게 default로 가져오는 항목이 적어서 필요한 걸 추가로 옵션에 넣어줘야 한다.
- port 변경하고 싶으면 다른 옵션 쓰면 된다.
- services.msc 들어가서 자동실행여부 확인하기
- grafana 대시보드는 "Windows Status - Prometheus" 추천
(Windows Status - Prometheus | Grafana Labs)
4) 클라이언트(AIX)
- 안된다는데? Prometheus는 없... 다른 걸 찾아봐야 할듯
5) 클라이언트(Oracle)
※주의 : 생각보다 번거로움, DB 모르면 힘들 수 있음
내용이 많아서 다른 포스트를 만들었다.
'Linux' 카테고리의 다른 글
systemd 서비스 타입 Simple or Oneshot (0) | 2023.04.26 |
---|---|
multithread enable, on 확인 방법 (0) | 2023.04.26 |
OS 별 crash dump 강제 생성 방법 (0) | 2023.04.10 |
계정 패스워드 잠금 해제 (0) | 2023.04.05 |
ulimit 값 중 nofile (open files) 값 즉시, 재시작 시 반영 방법 (0) | 2023.03.16 |
댓글