[PMM] #090 PMM Server – Percona App for Grafana 플러그인 설치


PMM Server – Percona App for Grafana 플러그인 설치

Percona App for Grafana 플러그인은 Prometheus를 데이터 소스로 하는 MySQL 성능 모니터링과 시스템 모니터링을 위한 Grafana용 대시보드를 묶어놓은 플러그인이다상세한 설명은 github(https://github.com/percona/grafana-app내용을 참고한다.

Percona App for Grafana 플러그인
- 그라파나 플러그인 사이트: https://grafana.net/plugins/percona-percona-app
- 설치버전 : v1.0.0


010. Percona App plugin 압축 해제
Percona App 플러그인은 grafana-app github 사이트에서 ZIP파일로 직접 다운로드 받은 파일로 설치한다.(grafana-app-master.zip)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[pmm@pmmserver ~]$ cd /home/pmm/programs/PMM105/
[pmm@pmmserver PMM105]$ unzip grafana-app-master.zip
Archive:  grafana-app-master.zip
8264b8e75eb16fe8a93f6d35c824f3f1a2bd46d5
   creating: grafana-app-master/
 extracting: grafana-app-master/.gitignore
  inflating: grafana-app-master/Gruntfile.js
  inflating: grafana-app-master/LICENSE
  inflating: grafana-app-master/README.md
   creating: grafana-app-master/dist/
  inflating: grafana-app-master/dist/README.md
   creating: grafana-app-master/dist/components/
 extracting: grafana-app-master/dist/components/config.html
  ……………
   creating: grafana-app-master/src/img/
  inflating: grafana-app-master/src/img/percona_large.png
  inflating: grafana-app-master/src/img/percona_small.png
  inflating: grafana-app-master/src/module.js
cs


020. Percona App plugin 디렉토리 경로 이동(플러그인 등록)
grafana-app-master 디렉토리를 grafana-app으로 이름을 변경하면서 Grafana Server의 플러그인 디렉토리로 이동(move)시킨다.

1
2
[root@pmmserver ~]# cd /home/pmm/programs/PMM105
[root@pmmserver PMM105]# mv /home/pmm/programs/PMM105/grafana-app-master /var/lib/grafana/plugins/grafana-app
cs


030. Percona App plugin 버그 패치
Percona App 플러그인에는 Grafana 대시보드의 Zoom 기능과 관련된 Interval 설정에 약간의 오류가 있다. 그라파나 플러그인 사이트와 github 사이트에 마이너 패치에 대한 내용이 친절히 나와 있다. 다음과 같이 datasource.js, query_ctrl.js 두 파일의 내용을 sed 명령어로 수정한다.

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
[root@pmmserver PMM105]# cd /usr/share/grafana/public/app/plugins/datasource/prometheus/
[root@pmmserver prometheus]# ls -al
합계 108
drwxr-xr-x  6 root root  4096 2016-10-19 14:45 .
drwxr-xr-11 root root  4096 2016-10-19 14:45 ..
-rw-r--r--  1 root root   292 2016-08-01 19:28 README.md
drwxr-xr-x  2 root root  4096 2016-10-19 14:45 dashboards
-rw-r--r--  1 root root   221 2016-08-01 19:28 datasource.d.ts
-rw-r--r--  1 root root  4737 2016-08-01 19:28 datasource.js
-rw-r--r--  1 root root 10763 2016-08-01 19:28 datasource.js.map
-rw-r--r--  1 root root  8538 2016-08-01 19:28 datasource.ts
drwxr-xr-x  2 root root  4096 2016-10-19 14:45 img
-rw-r--r--  1 root root    44 2016-08-01 19:28 metric_find_query.d.ts
-rw-r--r--  1 root root  2167 2016-08-01 19:28 metric_find_query.js
-rw-r--r--  1 root root   430 2016-08-01 19:28 module.d.ts
-rw-r--r--  1 root root   541 2016-08-01 19:28 module.js
-rw-r--r--  1 root root   537 2016-08-01 19:28 module.js.map
-rw-r--r--  1 root root   464 2016-08-01 19:28 module.ts
drwxr-xr-x  2 root root  4096 2016-10-19 14:45 partials
-rw-r--r--  1 root root   448 2016-08-01 19:28 plugin.json
-rw-r--r--  1 root root   512 2016-08-01 19:28 query_ctrl.d.ts
-rw-r--r--  1 root root  1775 2016-08-01 19:28 query_ctrl.js
-rw-r--r--  1 root root  3062 2016-08-01 19:28 query_ctrl.js.map
-rw-r--r--  1 root root  2155 2016-08-01 19:28 query_ctrl.ts
drwxr-xr-x  2 root root  4096 2016-10-19 14:45 specs
[root@pmmserver prometheus]# sed -i 's/expr=\(.\)\.replace(\(.\)\.expr,\(.\)\.scopedVars\(.*\)var \(.\)=\(.\)\.interval/expr=\1.replace(\2.expr,\3.scopedVars\4var \5=\1.replace(\6.interval, \3.scopedVars)/' ./datasource.js
[root@pmmserver prometheus]# sed -i 's/,range_input/.replace(\/"{\/g,"\\"").replace(\/}"\/g,"\\""),range_input/; s/step_input:""/step_input:this.target.step/' ./query_ctrl.js
cs

040. Grafana Server 재 기동
설치한 플러그인을 Grafana Server가 인식하기 위해서는 Grafana Server의 재 기동이 필요하다. 재 기동한다.

1
2
3
4
[root@pmmserver prometheus]# service grafana-server stop
OKopping Grafana Server ...                                [  OK  ]
[root@pmmserver prometheus]# service grafana-server start
Starting Grafana Server: .... OK
cs


050. Percona App Plugin 활성화
Grafana Server가 다시 기동하였으면 그라파나에 관리자 계정으로 접속하여 [메뉴] > [Plugins] > [App] 을 클릭하여 다음과 같이 Percona App이 잘 보이는지 확인한다.




060. Percona Dashbord 확인

App 을 클릭하면 [Config] 항목을 이동한다. “Enable” 버튼을 클릭한다.


“Enable” 버튼을 클릭하면 Percona App의 모든 대시보드가 자동으로 활성화 된다


[Dashboards] 탭을 클릭하여 대시보드별로 활성화되었음을 확인한다.


[메뉴] > [대시보드] 를 클릭하면 등록완료된 Percona Dashboard 들이 보이며 각 대시보드를 클릭하여, 각 서버별로 지표들이 정상적으로 나오는 지 슬쩍 둘러보자. 



각 대시보드의 뷰 기간은 기본값이 대부분 최근 12시간이다. node_exporter와 mysqld_exporter로 지표를 수집한지 몇 분 되지 않았다면 꼭 그래프가 나오지 않는것 처럼 느낄 수 있다. 각 대시보드 우측 상단의 "Time Range"를 최근 5분 정도로 줄여서도 확인해본다.

각 대시보드에서 보여주는 지표들은 간단히 다음과 같으며 PMM의 버전 업데이트로 대시보드가 추가되거나 그래프 또는 그래프의 여러 지표들이 추가되곤 한다.

- Cross Server Graphs
  : Connection Query수 등의 대표적인 MySQL 성능 지표를 보여준다.(등록된 모든 MySQL 서버를 다중 선택)
- Disk Performance
  : 모니터링 대상 호스트에 마운트 되어있는 디스크를 블럭디바이스(block device)별 성능 지표를 보여준다.
- Disk Space
  : 모니터링 대상 호스트에 마운트 되어있는 디스크를 마운트된 디렉토리별 디스크 사용량을 보여준다.
- Galera Graphs
  : 모니터링 대상 호스트가 Galera Cluster 로 구성이 되었다면 주요 클러스터 모니터링 지표를 보여준다.
- MySQL InnoDB Metrics
  : 모니터링 대상 MySQL 서버의 InnoDB 엔진 관련 모니터링 지표를 보여준다.
- MySQL MyISAM Metrics
  : 모니터링 대상 MySQL 서버의 MyISAM 엔진 관련 모니터링 지표를 보여준다.
- MySQL Overview
  : 모니터링 대상 MySQL 서버의 전반적인 모니터링 지표를 보여준다.
MySQL Overview
- MySQL Performance Schema
  : (Performance Schema 기능을 사용중이라면)모니터링 대상 MySQL 서버의 Performance Schema 모니터링 지표를 보여준다.
- MySQL Query Response Time
  : (Query Reponse Time 플러그인을 사용중이라면)모니터링 대상 MySQL 서버의 쿼리 응답시간 관련 모니터링 지표를 보여준다.
  : Query Reponse Time 플러그인은 MariaDB 10.0.4, Percona Server 5.5.8-20.0 버전 이상에서만 사용할 수 있다.
- MySQL Replication
  : 모니터링 대상 MySQL 서버의 레플리케이션 관련 모니터링 지표를 보여준다.
- MySQL Table Statistics
  : (User Statistics 기능을 사용중이라면)모니터링 대상 MySQL 서버의 테이블 사용량, 접근 행 수 등의 테이블 관련 모니터링 지표를 보여준다.
  ; User Statistics 기능은 MariaDB MariaDB 5.2.0, Percona Server 5.5.10-20.1 버전 이상에서만 사용할 수 있다.
- MySQL User Statistics
  : (User Statistics 기능을 사용중이라면)모니터링 대상 MySQL 서버의 사용자별 접속 횟수 등의 사용자 관련 모니터링 지표를 보여준다.
  ; User Statistics 기능은 MariaDB MariaDB 5.2.0, Percona Server 5.5.10-20.1 버전 이상에서만 사용할 수 있다.
- Prometheus
  : 데이터소스로 설정되어있는 Prometheus 데이터베이스의 상태 지표를 보여준다.
- Summary Dashboard
  : 모니터링 대상 호스트의 시스템/MySQL 모니터링 지표를 요약하여 보여준다.
- System Overview
  : 모니터링 대상 호스트의 전반적인 시스템 모니터링 지표를 보여준다.
System Overview
- TokuDB Metrics
  : 모니터링 대상 MySQL 서버의 TokuDB 엔진 관련 모니터링 지표를 보여준다.
- Trends Dashboard
  : 모니터링 대상 호스트의 시스템/MySQL 주요 모니터링 지표의 변동 추이를 보여준다.


[PMM] #080 PMM Server – Grafana/Prometheus 데이터소스 연동



PMM Server – Grafana/Prometheus 데이터소스 연동

Grafana Prometheus에 저장된 데이터를 단지 효과적으로 보여주기만(View) 하는 도구이다. 그러므로 설치한 Grafana가 어떤 데이터베이스의 데이터를 조회할 것 인지 연결(데이터 소스 연동)해 주어야 한다. PMM에서는 Prometheus를 데이터 저장소 역할로 사용하므로 설치한 Prometheus를 데이터 소스로 등록한다.


010. Grafana - Prometheus 데이터 소스 등록
[메뉴 > Datasource] 를 클릭하여 데이터 소스 조회/등록 화면으로 이동한다.


최초 설치 시, 다음과 같이 아무런 데이터 소스도 등록되어 있지 않다. “Add data source” 버튼을 클릭하여 데이터 소스 등록화면으로 이동한다.


PMM Server의 수집데이터 저장소인 Prometheus를 등록한다.


“Add” 버튼을 눌르면 정상적으로 연결이 되었는지 자동으로 테스트되며, 성공했으면 자동 저장된다.





020. Prometheus Stats 대시보드 등록 및 확인
Prometheus를 데이터 소스로 설정하면 Dashborads에 프로메테우스용 상태 정보를 보여주는 “Prometheus Stats” 대시보드를 Import할 수 있게 된다.


다음과 같이 “Import” 버튼을 클릭하는 것 만으로 Prometheus Stats 대시보드를 현재 접속하고 있는 계정인 관리자의 대시보드에 자동으로 추가된다.



Import하고, 상단 대시보드 메뉴에 Prometheus Stats 대시보드가 추가되었다. Prometheus Stats 대시보드를 클릭한다.

설치된 Prometheus Uptime, Local Storage Memory Series 등의 다양한 Prometheus 상태정보가 그래프로 나타남을 확인할 수 있다.





[주의]
대시보드에서 나타나는 시각은 해당 대시보드 상단의 [톱니바퀴모양(Manage dashboard) > Settings > General > Timezone] 에서 확인할 수 있다. 기본값인 “Local Browser Time” 로 설정되어 있으므로, 혹시 조회하는 PC의 시각이 PMM Sererver의 서버 시각과 다르게(PC의 시각이 1~2분 정도 PMM Server보다 늦어서) 한동안 그래프가 보이지 않을 수 있다. 침착하게 로컬 PC의 시각을 PMM Server와 동일하게 맞추고 다시 조회해 본다.

[PMM] #070 PMM Server – Grafana 설치


PMM Server – Grafana 설치

Grafana
그라파나(Grafana)는 오픈 소스 기반의 정보 분석 및 시각화 도구이다. 쉽게 말해서 다양한 데이터베이스에 저장된 데이터를 직관적이고 시각적인 그래프나 대시보드 형태로 보여주는 툴이다. Grafana는 다양한 데이터베이스의 데이터와 연동할 수 있으며, 특히 시계열 형태의 데이터베이스(Prometheus, Ifluxdb, Graphite )와의 연동에 효과적이다.
- 공식 홈페이지 : http://grafana.org/
- 온라인 문서 : http://docs.grafana.org/
- Grafana Demo site : http://play.grafana.org/

그라파나 대시보드(출처 : http://grafana.org/)

Grafana 설치
- 다운로드 메인 : http://grafana.org/download/
- 설치버전 - 3.1.1 / 2016-08-01 Release
- 웹 서비스 포트 : 3000 (기본값)


010. Grafana Server 설치
Grafana Server 바이너리(grafana-3.1.1-1470047149.x86_64.rpm) 파일을 다운로드 받아 /home/pmm/programs/PMM105/ 디렉토리에 복사 한 후, 해당 RPM을 설치한다. RPM으로 설치하므로 pmm 계정이 아니라 root 계정으로 설치한다.


1
2
3
4
5
6
7
8
9
10
11
[root@pmmserver ~]$ cd /home/pmm/programs/PMM105
[root@pmmserver PMM105]$ ls -al | grep grafana
-rw-r--r-- 1 pmm pmm 40541601 2016-10-19 11:21 grafana-3.1.1-1470047149.x86_64.rpm
[root@pmmserver PMM105]# rpm -Uvh grafana-3.1.1-1470047149.x86_64.rpm
경고: grafana-3.1.1-1470047149.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 3dd18bdd: NOKEY
준비 중...               ########################################### [100%]
   1:grafana                ########################################### [100%]
### NOT starting grafana-server by default on bootup, please execute
 sudo /sbin/chkconfig --add grafana-server
### In order to start grafana-server, execute
 sudo service grafana-server start
cs


020. Grafana Server 설정 정보 확인
RPM으로 Grafana Server를 설치하면 기본 설치 경로를 포함한 전역 설정정보를 /etc/init.d/grafana-server 파일에서 확인할 수 있다.


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
[root@pmmserver PMM105]# cat /etc/init.d/grafana-server
#! /usr/bin/env bash
# chkconfig: 2345 80 05
# description: Grafana web server & backend
# processname: grafana
# config: /etc/grafana/grafana.ini
# pidfile: /var/run/grafana.pid
### BEGIN INIT INFO
# Provides:          grafana
# Required-Start:    $all
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start grafana at boot time
### END INIT INFO
#  tested on
#  1. New lsb that define start-stop-daemon
#  3. Centos with initscripts package installed
PATH=/bin:/usr/bin:/sbin:/usr/sbin
NAME=grafana-server
DESC="Grafana Server"
GRAFANA_USER=grafana
GRAFANA_GROUP=grafana
GRAFANA_HOME=/usr/share/grafana
CONF_DIR=/etc/grafana
WORK_DIR=$GRAFANA_HOME
DATA_DIR=/var/lib/grafana
PLUGINS_DIR=/var/lib/grafana/plugins
LOG_DIR=/var/log/grafana
CONF_FILE=$CONF_DIR/grafana.ini
MAX_OPEN_FILES=10000
PID_FILE=/var/run/$NAME.pid
DAEMON=/usr/sbin/$NAME
..................
cs


030. Grafana Server 리눅스 유저/그룹 확인
RPM으로 Grafana Server를 설치하면 Grafana Server의 기본 구동 계정과 그룹이 생성된다. 다음과 같이 생성된 계정을 확인해본다.


1
2
3
4
[root@pmmserver PMM105]# cat /etc/passwd | grep grafana
grafana:x:495:490:grafana user:/usr/share/grafana:/sbin/nologin
[root@pmmserver PMM105]# cat /etc/group | grep grafana
grafana:x:490:
cs


040. Grafana Server 기동 및 로그 확인
RPM으로 Grafana Server를 설치하면 리눅스 서비스(service)에 등록되므로 “service” 명령어로 Grafana Server를 기동하고 로그 내용을 확인하여 정상 기동 여부를 체크한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@pmmserver PMM105]# service grafana-server start
Starting Grafana Server: .... OK
[root@pmmserver PMM105]# cat /var/log/grafana/grafana.log
t=2016-10-19T14:53:08+0900 lvl=info msg="Starting Grafana" logger=main version=3.1.1 commit=a4d2708 compiled=2016-08-01T19:20:16+0900
t=2016-10-19T14:53:08+0900 lvl=info msg="Config loaded from" logger=settings file=/usr/share/grafana/conf/defaults.ini
t=2016-10-19T14:53:08+0900 lvl=info msg="Config loaded from" logger=settings file=/etc/grafana/grafana.ini
t=2016-10-19T14:53:08+0900 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.data=/var/lib/grafana"
t=2016-10-19T14:53:08+0900 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.logs=/var/log/grafana"
t=2016-10-19T14:53:08+0900 lvl=info msg="Config overriden from command line" logger=settings arg="default.paths.plugins=/var/lib/grafana/plugins"
t=2016-10-19T14:53:08+0900 lvl=info msg="Path Home" logger=settings path=/usr/share/grafana
t=2016-10-19T14:53:08+0900 lvl=info msg="Path Data" logger=settings path=/var/lib/grafana
t=2016-10-19T14:53:08+0900 lvl=info msg="Path Logs" logger=settings path=/var/log/grafana
t=2016-10-19T14:53:08+0900 lvl=info msg="Path Plugins" logger=settings path=/var/lib/grafana/plugins
t=2016-10-19T14:53:08+0900 lvl=info msg="Initializing DB" logger=sqlstore dbtype=sqlite3
t=2016-10-19T14:53:08+0900 lvl=info msg="Starting DB migration" logger=migrator
t=2016-10-19T14:53:08+0900 lvl=info msg="Executing migration" logger=migrator id="create migration_log table"
…………………
t=2016-10-19T14:53:08+0900 lvl=info msg="Executing migration" logger=migrator id="drop preferences table v3"
t=2016-10-19T14:53:08+0900 lvl=info msg="Executing migration" logger=migrator id="create preferences table v3"
t=2016-10-19T14:53:08+0900 lvl=info msg="Created default admin user: [admin]"
t=2016-10-19T14:53:08+0900 lvl=info msg="Starting plugin search" logger=plugins
t=2016-10-19T14:53:08+0900 lvl=warn msg="Plugin dir does not exist" logger=plugins dir=/var/lib/grafana/plugins
t=2016-10-19T14:53:08+0900 lvl=info msg="Plugin dir created" logger=plugins dir=/var/lib/grafana/plugins
t=2016-10-19T14:53:08+0900 lvl=info msg="Server Listening" logger=server address=0.0.0.0:3000 protocol=http subUrl=
cs


050. Grafana 웹 서비스 접속 및 admin로그인
Grafana Server가 정상 기동되었다면 Grafana 웹 서비스(http://192.168.0.10:3000/)에 접속하여 초기 관리자 계정(admin/admin)으로 접속해본다.


http://192.168.0.10:3000/login - admin/admin

관리자 계정으로 접속하면 다음과 같이 Grafana Home 대시보드를 확인할 수 있다.