-
[Prometheus] 다른서버에 exporter를 설치하고 Prometheus서버에 연결해보기데이터 엔지니어링/Prometheus 2022. 12. 19. 20:54반응형
안녕하세요 저번 포스팅에서 Prometheus 서버를 설치하여 간단하게 UI를 살펴봤는데요. 이번에는 Prometheus 서버에서 Pull 할 수 있는 데이터를 만들어주는 Exporter에 대해 알아보겠습니다.
목차
- Exporter란?
- Node_exporter란?
- Node_exporter 실행하기 (Optional - background 실행하는 법)
- Prometheus Config에 Node_exporter 추가하기
- Prometheus 실행하기 하고 Node_exporter metrics 확인하기
- 마치며
Exporter란?
Prometheus는 맨처음 포스팅에서 Push 방식이 아닌 Pull방식을 채택되었다고 하였습니다. 그러면 사용자가 Prometheus에서 바라보고 다른 서버를 Pull 할 수 있는 형태로 만들어 주어야 하는데요 다른 서버에 Exporter라는 것을 배포해주면 Prometheus가 Pull 할 수 있는 상태가 됩니다. 즉, Exporter는 Prometheus가 시계열 데이터를 가져갈 수 있도록 하는 시계열 데이터 제공 서버라고 생각하시면 될 것 같습니다.
Node_exporter란?
Prometheus에서 정보를 가져오는 방식이 Pull방식이기 때문에 어떤 곳을 모니터링할 때 exporter를 사용하여 정보를 가져갈 수 있도록 만들어 줘야 한다고 하였는데 Node Exporter는 그중에 node의 cpu, memory 등의 정보를 노출시켜주는 역할을 하는 것이 Node_exporter입니다. Prometheus 다운로드 페이지에서 링크 주소 복사형 wget 다운로드 설치하겠습니다.
# wget으로 다운로드 wget <https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz> # 압축해제 tar xvfz node_exporter-*.*-amd64.tar.gz # node_exporter로 이동 cd node_exporter-*.*-amd64 # node_exporter 실행 ./node_exporter
Node_exporter background 실행하는 법(Optional)
그냥 실행 줘도 돼지만 저는 Background에서 실해하는 것으로 해보도록 하겠습니다. node_exporter가 background 실행 명령어가 없어 background service 만들기 아래 명령어 실행
sudo vi /etc/systemd/system/node_exporter.service # 아래 내용 넣기 [Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=root Group=root Type=simple ExecStart=/root/prometheus/node_exporter/node_exporter [Install] WantedBy=multi-user.target # 종료 :wq sudo systemctl daemon-reload sudo systemctl enable node_exporter.service sudo systemctl start node_exporter.service
다 돼었다면 {주소}:{포트 default 9100} 접속하여 접속되면 Node_exporter가 실행된 것입니다.
Prometheus Config에 Node_exporter 추가하기
Node_Exporter가 다른 서버에 설치된 것이기 때문에 이를 Prometheus 서버로 돌아와서 config 파일에 추가해주어야 Prometheus가 인지하고 데이터를 Pull 할 수 있습니다. 아래 화살표 내용 추가해 줍니다.
vim prometheus.yml # 맨아래 화살표 구역 추가 # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ["localhost:9090"] # Node Exporter <---------------------------------------------- - job_name: "node" static_configs: - targets: ["172.30.3.170:9100"]
Prometheus 시작하기
./prometheus --config.file=prometheus.yml
web-Targets에서 node가 추가된 것을 확인할 수 있습니다. up상태이면 Pull 할 수 있는 상태임을 나타냅니다. 또한 노드에 관한 API가 생기게 되어 Metrics에서도 Node에 대한 Metrics가 생성된 것을 확인할 수 있습니다.
하나를 검색해보면 아래와 같이 값이 잘 나오는 것을 알 수 있습니다.마치며
다운로드 페이지로 이동하시면 다양한 Exporter가 존재합니다. 다른 Exporter들도 Github에서 찾아보면 대표적인 툴들은 오픈소스로 제공하고 있습니다. 필요한 툴로 다운로드하여서 설치 후에 사용하면 될 것 같고 안된다고 하면, Custom Exporter를 만들어서 사용하면 될 것 같습니다. Custom Exporter는 Python, Go 등으로 작성하여 배포 가능합니다. 다음 포스팅은 Grafana와 연동하여 Node_exporter에 대한 시각화를 진행해보도록 하겠습니다.
참고자료
https://prometheus.io/docs/guides/node-exporter/
https://prometheus.io/download/#node_exporter반응형'데이터 엔지니어링 > Prometheus' 카테고리의 다른 글
[Prometheus 개념] Jobs, Instances, Group에 대해 알아보기 (0) 2022.12.21 [Prometheus 개념] Metric Type 과 Label에 대해 알아보고 Custom Exporter(=Client Library with python)작성하여 값 받아보기 (0) 2022.12.21 [Prometheus] Prometheus와 Grafana 연동하고 Node_exporter 대쉬보드 만들기, Grafana Dashboard( (0) 2022.12.19 [Prometheus] Prometheus 설치하고 간단하게 사용법 알아보기(with Ubuntu) (0) 2022.12.19 [Prometheus] Prometheus란 무엇인가 (0) 2022.12.18