[Prometheus - MySQL모니터링 서버 설치] part 1

Prometheus란
Apache 2 라이센스로 공개되어 있는 오픈소스로 모니터링 툴입니다.
다른 모니터링 도구와 가장 다른 점은 대부분의 모니터링 도구가 Push 방식 즉, 각 서버에 클라이언트를 설치하고 이 클라이언트가 메트릭 데이터를 수집해서 서버로 보내면 서버가 모니터링 상태를 보여주는 방식인데 반해서 Prometheus는 Pull 방식입니다. 
그래서 서버가 각 클라이언트를 알고 있어야 하는게 아니라 서버에 클라이언트가 떠 있으면 서버가 주기적으로 클라이언트에 접속해서 데이터를 가져오는 방식입니다. 따라서 모니터링 대상 서버의 모니터링으로 인해 발생하는 부하를 줄여줍니다.
프로메테우스는 Time-series DB이기 때문에 시간과 함께 데이터를 저장합니다.

 

 
Exporter란 
모니터링 대상의 Metric 데이터를 수집하고 Prometheus가 접속했을 때 정보를 알려주는 역할을 합니다.
Prometheus Server는 Expoter가 열어놓은 HTTP 엔드포인트에 접속해서 Metric을 수집합니다. (Pull 방식)
Prometheus Server에 Grafana를 연동해서 대시보드 등의 시각화를 하고, 알림을 받을 규칙을 만들면 Alert Manager가 규칙에 따라 알림을 보냅니다.
 
이번 테스트에선 
서버 리소스 모니터링 -> node_exporter
DB 모니터링 -> mysql_exporter

 

 

 테스트 환경
Hostname
IP
Role
prometheus
192.168.100.84
모니터링 서버
mysql
192.168.100.85
모니터링 대상 서버

 

 

사전 mysql설치 (mysql)

mysql> select @@version;
+-----------+
| @@version |
+-----------+
| 8.0.28    |
+-----------+

 

 

■ Prometheus 설치 (prometheus)
Download URL : https://prometheus.io/download/
 

Download | Prometheus

An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.

prometheus.io

[root@prometheus ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.40.5/prometheus-2.40.5.linux-amd64.tar.gz


[root@prometheus ~]# tar -zxvf prometheus-2.40.5.linux-amd64.tar.gz
prometheus-2.40.5.linux-amd64/
prometheus-2.40.5.linux-amd64/NOTICE
prometheus-2.40.5.linux-amd64/promtool
prometheus-2.40.5.linux-amd64/consoles/
prometheus-2.40.5.linux-amd64/consoles/prometheus-overview.html
prometheus-2.40.5.linux-amd64/consoles/node-disk.html
prometheus-2.40.5.linux-amd64/consoles/node.html
prometheus-2.40.5.linux-amd64/consoles/node-cpu.html
prometheus-2.40.5.linux-amd64/consoles/prometheus.html
prometheus-2.40.5.linux-amd64/consoles/node-overview.html
prometheus-2.40.5.linux-amd64/consoles/index.html.example
prometheus-2.40.5.linux-amd64/console_libraries/
prometheus-2.40.5.linux-amd64/console_libraries/menu.lib
prometheus-2.40.5.linux-amd64/console_libraries/prom.lib
prometheus-2.40.5.linux-amd64/prometheus
prometheus-2.40.5.linux-amd64/prometheus.yml
prometheus-2.40.5.linux-amd64/LICENSE

 

 

■ Config 수정

[root@prometheus ~]# cd prometheus-2.40.5.linux-amd64/

[root@prometheus prometheus-2.40.5.linux-amd64]# vi prometheus.yml

  # 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"]

##OS MONITOR
  - job_name: linux
    static_configs:      
      - targets: ['192.168.100.85:9100']  ## node_exporter

##DB MONITOR
  - job_name: mysql
    static_configs:
      - targets: ['192.168.100.85:9104']  ## mysqld_exporter

 

 

■ Prometheus 기동

[root@prometheus prometheus-2.40.5.linux-amd64]#./prometheus --config.file="prometheus.yml" &

 

 

■ default 페이지 접속
http://<Public IP>:9090