[PMM] #050 PMM Client - Node Exporter 설치

PMM Client - Node Exporter 설치

Node Exporter
Node Exporter는 리눅스 시스템의 시스템 메트릭(disk I/O 통계, CPU 부하, 메모리 사용량, 네트워크 통계 등)들을 Prometheus용 포멧으로 추출에서 웹 서비스로 제공하는 에이전트이다.
- 공식 홈페이지(github) : https://github.com/prometheus/node_exporter

Node Exporter 설치
- 다운로드 메인 : https://prometheus.io/download/
- 설치버전 - v0.13.0-rc.1 / 2016-10-16 Release
- 웹 서비스 포트 : 9100 (기본값)

010. Node Exporter 바이너리 압축 해제
Node Exporter 바이너리(node_exporter-0.13.0-rc.1.linux-amd64.tar.gz) 파일을 다운로드 받아 /home/mysql/DBA/programs/PMM105/client/ 디렉토리에 복사 한 후, 해당 파일을 압축 해제 한다.

1
2
3
4
5
6
[mysql@pmmclient ~]$ cd /home/mysql/DBA/programs/PMM105/client/
[mysql@pmmclient client]$ tar xvzf node_exporter-0.13.0-rc.1.linux-amd64.tar.gz
node_exporter-0.13.0-rc.1.linux-amd64/
node_exporter-0.13.0-rc.1.linux-amd64/LICENSE
node_exporter-0.13.0-rc.1.linux-amd64/NOTICE
node_exporter-0.13.0-rc.1.linux-amd64/node_exporter
cs


020. Node Exporter 설치 디렉토리 생성
- 설치 디렉토리 : /data/pmm_client/node_exporter/
- 심볼릭 링크 생성 : /home/mysql/ node_exporter à /data/pmm_client/node_exporter/node_exporter-0.13.0-rc.1.linux-amd64
Node Exporter 설치 디렉토리를 생성하고 압축 해제한 Node Exporter 바이너리를 설치 디렉토리에 옮긴다(move). 그 후, 설치 디렉토리에 대한 심볼릭 링크를 생성하여 편의상 디렉토리 경로를 단순하게 한다.

1
2
3
4
5
6
7
[mysql@pmmclient client]$ mkdir /data/pmm_client
[mysql@pmmclient client]$ mkdir /data/pmm_client/node_exporter
[mysql@pmmclient client]$ mv node_exporter-0.13.0-rc.1.linux-amd64 /data/pmm_client/node_exporter/
[mysql@pmmclient client]$ cd /home/mysql/
[mysql@pmmclient ~]$ ln -/data/pmm_client/node_exporter/node_exporter-0.13.0-rc.1.linux-amd64 ./node_exporter 
[mysql@pmmclient ~]$ ls -al | grep node_exporter
lrwxrwxrwx   1 mysql mysql    68 2016-10-19 11:49 node_exporter -> /data/pmm_client/node_exporter/node_exporter-0.13.0-rc.1.linux-amd64
cs

030. Node Exporter 기동
Node Exporter 바이너리를 압축만 해제하면 설치는 완료된다. 이제 Node Exporter를 기동하고 정상적으로 기동되었는지 로그와 프로세스 정상여부를 확인해본다.
Node Exporter 기동 시, 설정한 옵션은 다음과 같다.
-collectors.enabled : 수집을 원하는 지표에 대한 콜렉터를 지정한다.
또한 백그라운드 실행 시, Node Exporter의 정상작동 여부를 확인하기 위하여 /home/mysql/node_exporter/node_exporter.log 와 같이 로그를 남기도록 실행한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[mysql@pmmclient ~]$ cd /home/mysql/node_exporter/
[mysql@pmmclient node_exporter]$ nohup ./node_exporter -collectors.enabled="diskstats,filesystem,loadavg,meminfo,netdev,stat,time,uname,vmstat" -log.level=info > /home/mysql/node_exporter/node_exporter.log 2>&1 &
[153809
[mysql@pmmclient node_exporter]$ ps -ef | grep node_exporter
mysql    53809 25822  0 11:51 pts/0    00:00:00 ./node_exporter -collectors.enabled=diskstats,filesystem,loadavg,meminfo,netdev,stat,time,uname,vmstat -log.level=info
mysql    53830 25822  0 11:51 pts/0    00:00:00 grep node_exporter
[mysql@pmmclient node_exporter]$ cat /home/mysql/node_exporter/node_exporter.log
nohup: ignoring input
time="2016-10-19T11:51:17+09:00" level=info msg="Starting node_exporter (version=0.13.0-rc.1, branch=master, revision=2ff8e5f0e4553371161b98293d52ed98ecb8117b)" source="node_exporter.go:135"
time="2016-10-19T11:51:17+09:00" level=info msg="Build context (go=go1.7.1, user=root@197f6ac1b691, date=20161016-12:36:43)" source="node_exporter.go:136"
time="2016-10-19T11:51:17+09:00" level=info msg="Enabled collectors:" source="node_exporter.go:155"
time="2016-10-19T11:51:17+09:00" level=info msg=" - filesystem" source="node_exporter.go:157"
time="2016-10-19T11:51:17+09:00" level=info msg=" - loadavg" source="node_exporter.go:157"
time="2016-10-19T11:51:17+09:00" level=info msg=" - netdev" source="node_exporter.go:157"
time="2016-10-19T11:51:17+09:00" level=info msg=" - stat" source="node_exporter.go:157"
time="2016-10-19T11:51:17+09:00" level=info msg=" - time" source="node_exporter.go:157"
time="2016-10-19T11:51:17+09:00" level=info msg=" - uname" source="node_exporter.go:157"
time="2016-10-19T11:51:17+09:00" level=info msg=" - diskstats" source="node_exporter.go:157"
time="2016-10-19T11:51:17+09:00" level=info msg=" - meminfo" source="node_exporter.go:157"
time="2016-10-19T11:51:17+09:00" level=info msg=" - vmstat" source="node_exporter.go:157"
time="2016-10-19T11:51:17+09:00" level=info msg="Listening on :9100" source="node_exporter.go:176"
cs

Node Exporter기동 시, 명시적으로 지정한 콜렉터들이 수집하는 지표는 다음과 같다.

Name
Description
OS
diskstats
Exposes disk I/O statistics from /proc/diskstats.
Linux
filesystem
Exposes filesystem statistics, such as disk space used.
FreeBSD, Dragonfly, Linux, OpenBSD
loadavg
Exposes load average.
Darwin, Dragonfly, FreeBSD, Linux, NetBSD, OpenBSD, Solaris
meminfo
Exposes memory statistics.
Dragonfly, FreeBSD, Linux
netdev
Exposes network interface statistics such as bytes transferred.
Dragonfly, FreeBSD, Linux, OpenBSD
stat
Exposes various statistics from /proc/stat. This includes CPU usage, boot time, forks and interrupts.
Linux
time
Exposes the current system time.
any
vmstat
Exposes statistics from /proc/vmstat.
Linux

Node Exporter기동 시, 지정할 수 있는 모든 콜렉터에 대한 정보는 Node Exporter github 사이트(https://github.com/prometheus/mysqld_exporter)에서 확인할 수 있다. 


040. Prometheus 설정 파일 변경(클라이언트 추가)
PMM Serverprometheus.yml 파일에 PMM Client의 노드정보를 추가한다.
추가한 PMM Client Node Exporter가 추출하는 시스템 모니터링 지표를 5초마다 Prometheus가 수집(scrape)하도록 설정하는 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[pmm@pmmserver ~]$ cd prometheus
[pmm@pmmserver prometheus]$ vi prometheus.yml
# my global config
global:
  scrape_interval:     5s # By default, scrape targets every 15 seconds.
  evaluation_interval: 5s # By default, scrape targets every 15 seconds.
  # scrape_timeout is set to the global default (10s).
  # Attach these labels to any time series or alerts when communicating with
  # external systems (federation, remote storage, Alertmanager).
  external_labels:
      monitor: 'codelab-monitor'
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first.rules"
  # - "second.rules"
# 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'
    # Override the global default and scrape targets from this job every 5 seconds.
    scrape_interval: 5s
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'linux'
    scrape_interval: 5s
    static_configs:
      - targets: ['192.168.0.11:9100']
        labels:
          alias"pmmclient:3306"
cs


050. Prometheus 재 기동
prometheus.yml 설정 파일의 변경사항(PMM Client 추가)을 적용하기 위해서는 Prometheus를 재 기동해야 한다. Prometheus의 프로세스를 중지하고 재 기동한다.

1
2
3
4
5
6
7
[pmm@pmmserver prometheus]$ ps -ef | grep prometheus
pmm      13952     1  0 11:36 pts/0    00:00:03 /home/pmm/prometheus/prometheus -config.file=/home/pmm/prometheus/prometheus.yml -storage.local.retention=8760h -log.level=info
[pmm@pmmserver prometheus]$ kill 13952
[pmm@pmmserver prometheus]$ nohup /home/pmm/prometheus/prometheus -config.file=/home/pmm/prometheus/prometheus.yml -storage.local.retention=8760h -log.level=info > /home/pmm/prometheus/prometheus.log 2>&1 &
[163570
[pmm@pmmserver prometheus]$ ps -ef | grep prometheus
pmm      63570 59220  0 11:55 pts/0    00:00:00 /home/pmm/prometheus/prometheus -config.file=/home/pmm/prometheus/prometheus.yml -storage.local.retention=8760h -log.level=info
cs



060. Prometheus 웹 서비스 접속
Prometheus를 정상적으로 재 기동하였다면, Prometheus 웹 서비스에 접속하여 추가한 pmmclient 서버가 정상적으로 등록되었는지 확인해본다.

- Status > Targets : http://192.168.0.10:9090/targets
Job name“linux” pmmclient(192.168.0.11) 노드가 추가되었고, stateUP(정상)이라면 Prometheuspmmclient 서버를 정상적으로 인식한것이다. 


Linux
Endpoint
State
Labels
Last Scrape
Error
UP
alias="pmmclient:3306"
4.017s ago
 
Prometheus
Endpoint
State
Labels
Last Scrape
Error
UP
None
4.134s ago
 


추가한 pmmclient Linux 메트릭을 클릭하면, 현재 Prometheuspmmclient 서버의 node_exporter로부터 수집한 리눅스 모니터링 정보를 확인할 수 있다.

..............
# HELP node_cpu Seconds the cpus spent in each mode.
# TYPE node_cpu counter
node_cpu{cpu="cpu0",mode="guest"} 0
node_cpu{cpu="cpu0",mode="idle"} 6.70609821e+06
node_cpu{cpu="cpu0",mode="iowait"} 43862.4
node_cpu{cpu="cpu0",mode="irq"} 0.5
node_cpu{cpu="cpu0",mode="nice"} 1.43
node_cpu{cpu="cpu0",mode="softirq"} 917.97
..............
cs






댓글 1개: