[PMM] #040 PMM Server – Prometheus 설치

PMM Server – Prometheus 설치

Prometheus
프로메테우스(Prometheus) 오픈 소스 기반의 시계열 데이터베이스로 시스템 모니터링, 알림 등의 다양한 기능을 갖고 있다. 대부분의 프로메테우스 컴포넌트들은 GO언어로 작성되어 있다.
- 공식 홈페이지 : https://prometheus.io/

Prometheus Architecture
다음은 Prometheus의 전체적인 아키텍처를 보여주는 다이어그램이다.

프로메테우스 아키텍처(출처 : https://prometheus.io/docs/introduction/overview/)

Prometheus 설치
- 다운로드 메인 : https://prometheus.io/download/
- 설치버전 - 1.2.1 / 2016-10-10 Release
  : https://github.com/prometheus/prometheus/releases/download/v1.2.1/prometheus-1.2.1.linux-amd64.tar.gz
- 웹 서비스 포트 : 9090 (기본값)

010. Prometheus 바이너리 압축 해제
Prometheus 바이너리(prometheus-1.2.1.linux-amd64.tar.gz) 파일을 다운로드 받아 /home/pmm/programs/PMM105/ 디렉토리에 복사 한 후, 해당 파일을 압축 해제 한다.

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
33
34
35
36
37
[pmm@pmmserver ~]$ cd /home/pmm/programs/PMM105/
[pmm@pmmserver PMM105]$ tar xvfz prometheus-1.2.1.linux-amd64.tar.gz
prometheus-1.2.1.linux-amd64/
prometheus-1.2.1.linux-amd64/consoles/
prometheus-1.2.1.linux-amd64/consoles/aws_elasticache.html
prometheus-1.2.1.linux-amd64/consoles/aws_elb.html
prometheus-1.2.1.linux-amd64/consoles/aws_redshift-cluster.html
prometheus-1.2.1.linux-amd64/consoles/aws_redshift.html
prometheus-1.2.1.linux-amd64/consoles/blackbox.html
prometheus-1.2.1.linux-amd64/consoles/cassandra.html
prometheus-1.2.1.linux-amd64/consoles/cloudwatch.html
prometheus-1.2.1.linux-amd64/consoles/haproxy-backend.html
prometheus-1.2.1.linux-amd64/consoles/haproxy-backends.html
prometheus-1.2.1.linux-amd64/consoles/haproxy-frontend.html
prometheus-1.2.1.linux-amd64/consoles/haproxy-frontends.html
prometheus-1.2.1.linux-amd64/consoles/haproxy.html
prometheus-1.2.1.linux-amd64/consoles/index.html.example
prometheus-1.2.1.linux-amd64/consoles/node-cpu.html
prometheus-1.2.1.linux-amd64/consoles/node-disk.html
prometheus-1.2.1.linux-amd64/consoles/node-overview.html
prometheus-1.2.1.linux-amd64/consoles/node.html
prometheus-1.2.1.linux-amd64/consoles/prometheus-overview.html
prometheus-1.2.1.linux-amd64/consoles/prometheus.html
prometheus-1.2.1.linux-amd64/consoles/snmp-overview.html
prometheus-1.2.1.linux-amd64/consoles/snmp.html
prometheus-1.2.1.linux-amd64/console_libraries/
prometheus-1.2.1.linux-amd64/console_libraries/menu.lib
prometheus-1.2.1.linux-amd64/console_libraries/prom.lib
prometheus-1.2.1.linux-amd64/prometheus.yml
prometheus-1.2.1.linux-amd64/LICENSE
prometheus-1.2.1.linux-amd64/NOTICE
prometheus-1.2.1.linux-amd64/prometheus
prometheus-1.2.1.linux-amd64/promtool
[pmm@pmmserver PMM105]$ ls -al | grep prometheus
drwxr-xr-4 pmm pmm     4096 2016-10-11 01:22 prometheus-1.2.1.linux-amd64
-rw-r--r-- 1 pmm pmm  9817692 2016-10-19 11:21 prometheus-1.2.1.linux-amd64.tar.gz
cs

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

1
2
3
4
5
6
7
[pmm@pmmserver PMM105]$ mkdir /data/pmm/
[pmm@pmmserver PMM105]$ mkdir /data/pmm/prometheus/
[pmm@pmmserver PMM105]$ mv prometheus-1.2.1.linux-amd64 /data/pmm/prometheus/
[pmm@pmmserver PMM105]$ ln -/data/pmm/prometheus/prometheus-1.2.1.linux-amd64 /home/pmm/prometheus
[pmm@pmmserver PMM105]$ cd /home/pmm/
[pmm@pmmserver ~]$ ls -al | grep prometheus
lrwxrwxrwx   1 pmm  pmm    49 2016-10-19 11:26 prometheus -> /data/pmm/prometheus/prometheus-1.2.1.linux-amd64
cs

030. Prometheus 설정 파일 세팅
- prometheus.yml
: Prometheus의 전역 설정 파일로 Prometheus가 데이터를 수집(scrape)하는 주기, 알림 규칙등의 전역 설정 정보와 데이터 수집 대상 클라이언트(Linux, MySQL, MongoDB 서버 등)의 정보를 포함.
prometheus.yml을 세팅한다. 기본 수집주기는 5초로 설정하고, 웹 서비스 포트는 9090(기본값)으로 설정하고 저장한다.

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
[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']
cs

040. Prometheus 기동
Prometheus 바이너리를 압축 해제 후, 설정 파일을 확인하는 것으로 Prometheus 설치는 완료되었다. 이제 Prometheus를 기동하고 정상적으로 기동되었는지 Promethes 서버 로그, 프로세스, 9090 포트 리스닝 정상여부를 확인해본다.
Prometheus 기동 시, 설정한 옵션은 다음과 같다.
 - confie.file : Prometheus 전역 설정 파일인 prometheus.yml 파일을 지정한다.
 - storage.local.retention : 수집한 데이터의 보관주기를 설정한다. 8760h(1)으로 설정.
또한 백그라운드 실행 시, Prometheus의 정상작동 여부를 확인하기 위하여 /home/pmm/prometheus/prometheus.log 와 같이 로그를 남기도록 실행한다

, Prometheus를 기동하자.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[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 &
[113952
[pmm@pmmserver prometheus]$ cat /home/pmm/prometheus/prometheus.log
nohup: ignoring input
time="2016-10-19T11:36:20+09:00" level=info msg="Starting prometheus (version=1.2.1, branch=master, revision=dd66f2e94b2b662804b9aa1b6a50587b990ba8b7)" source="main.go:75"
time="2016-10-19T11:36:20+09:00" level=info msg="Build context (go=go1.7.1, user=root@fd9b0daff6bd, date=20161010-15:58:23)" source="main.go:76"
time="2016-10-19T11:36:20+09:00" level=info msg="Loading configuration file /home/pmm/prometheus/prometheus.yml" source="main.go:247"
time="2016-10-19T11:36:20+09:00" level=info msg="Loading series map and head chunks..." source="storage.go:354"
time="2016-10-19T11:36:20+09:00" level=info msg="431 series loaded." source="storage.go:359"
time="2016-10-19T11:36:20+09:00" level=info msg="Starting target manager..." source="targetmanager.go:76"
time="2016-10-19T11:36:20+09:00" level=info msg="Listening on :9090" source="web.go:240"
time="2016-10-19T11:36:20+09:00" level=warning msg="No AlertManagers configured, not dispatching any alerts" source="notifier.go:176"
[pmm@pmmserver prometheus]$ ps -ef | grep prometheus
pmm      13952 12537  0 11:36 pts/0    00:00:00 /home/pmm/prometheus/prometheus -config.file=/home/pmm/prometheus/prometheus.yml -storage.local.retention=8760h -log.level=info
pmm      14926 12537  0 11:36 pts/0    00:00:00 grep prometheus
[pmm@pmmserver prometheus]$ netstat -nap | grep 9090
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 :::9090                     :::*                        LISTEN      13952/prometheus
tcp        0      0 ::ffff:127.0.0.1:9090       ::ffff:127.0.0.1:40613      TIME_WAIT   -
tcp        0      0 ::ffff:127.0.0.1:9090       ::ffff:127.0.0.1:40631      TIME_WAIT   -
tcp        0      0 ::ffff:127.0.0.1:9090       ::ffff:127.0.0.1:40615      TIME_WAIT   -
tcp        0      0 ::ffff:127.0.0.1:9090       ::ffff:127.0.0.1:40667      TIME_WAIT   -
cs

050. Prometheus 웹 서비스 접속
Prometheus를 정상적으로 기동하였다면, 9090포트에 Prometheus 웹 서비스가 기동된다. http://192.168.0.10:9090/으로 접속하여 Prometheus 웹 서비스를 확인해본다

- Graph : http://192.168.0.10:9090/graph
  Prometheus가 수집한 metric을 탐색하여, 해당 수치를 그래프 형태로 볼 수 있다.
  Prometheus가 정상적으로 기동했으므로 “up{job="prometheus"}” metric을 검색해보면 up{instance="localhost:9090",job="prometheus"}엘리먼트와 값을 확인할 수 있다.

http://192.168.0.10:9090/graph

- Status > Configuration : http://192.168.0.10:9090/config
  Prometheus 기동 시, prometheus.yml 파일로부터 로드한 전역 설정정보를 확인할 수 있다.

http://192.168.0.10:9090/config

Status > Targets : http://192.168.0.10:9090/targets
  Prometheus가 현재 수집중단 대상 시스템들과 현재 상태를 job_name 별로 구분하여 보여준다.

http://192.168.0.10:9090/targets

- metrics : http://192.168.0.10:9090/metrics
  Status > Targets 에서 조회되는 대상 시스템의 특정 메트릭을 클릭하면 현 시점에서 수집한 metric과 실제 값을 확인할 수 있다.


http://192.168.0.10:9090/metrics


댓글 없음:

댓글 쓰기