레이블이 Linux Monitoring인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Linux Monitoring인 게시물을 표시합니다. 모든 게시물 표시

[PMM] #190 마치며



마치며

[PMM] 시리스 포스팅은 본 장으로 마무리 한다. 이 포스팅 시리즈는 PMM의 서버/클라이언트 구성을 시작으로 마지막에는 Prometheus를 활용한 MySQL 데이터 모니터링까지 연동해보는 내용으로 구성하였다. 초보자도 쉽게 따라할 수 있는 실전 시나리오로 구성 한 만큼, 이론적인 내용보다 독자들이 MySQL 모니터링 환경을 손 쉽게 구성하는데에 초첨을 맞추었다. 많은 도움이 되길 바란다.

 아울러, Prometheus, Grafana 등의 PMM을 구성하는 모듈들은 모두 Open Source 기반의 소프트웨어로 현재도 활발하게 버전 업데이트가 빠르게 진행되고 있으며 그에 따라 각 소프트웨어의 기능들도 확장되고 있다. 반면에, 최신 업데이트 버전은 소프트웨어 안정성 등이 검증되지 않았을 수 있으며 아직 개발단계의 새로운 모듈이 추가될 수도 있다
 그러므로 Open Source 소프트웨어에 대한 무조건적인 맹신은 금물이다. Open Source 소프트웨어의 안정성도 함께 고려하여, 각 모듈들이 정말 본인의 IT인프라에 필요한 기능인지 되 짚어 보고 선별적으로 구성해야 할 것이다.

[PMM] 시리스 포스팅을 다시 한번 정독해보길 바라며, 본 시리즈를 마무리 한다.





[PMM] #110 Percona Dashboard – MySQL 모니터링

Percona Dashboard – MySQL 모니터링

Percona Dashboard에서 조회할 수 있는 MySQL 모니터링 지표는 앞서 연동한 mysqld exporter가 주기적으로 수집하여, Prometheus가 주기적으로 가져와(scraping) 저장하고 있는 정보(metric)를 조회하는 것이다.
MySQL 모니터링 지표에 대한 대시보드는 MySQL Overview, MySQL InnoDB Metrics, MySQL Table Statistics, MySQL User Statistics, MySQL Replication 등이 있다. 이 지표들은 mysqld exporter로부터 수집한 MySQL 서버의 전역 변수(Global Variables)와 전역 상태 정보(Global Status) 등의 주요 지표들을 시간별, 기간별로 보여준다.

본 장에서는 MySQL Overview, MySQL InnoDB Metrics, MySQL Table Statistics, MySQL User Statistics, MySQL Replication 다섯 개 대시보드의 주요 그래프에 대해서 간단히 알아보자.


010. MySQL – MySQL Overview
MySQL Overview는 모니터링 대상 MySQL 서버의 주요 모니터링 지표를 보여준다.

- Connections, Active Thread, Thread Cache .
MySQL 서버의 커넥션과 스레드의 상태별 수, 스레드 캐시 사용량 등을 보여준다.




- Top Command Counter/Counter Houry, Handlers
MySQL 서버에서 실행되는 SQL의 유형별 실행 횟수 상위 5 SQL 유형 실행 횟수(초당)를 보여준다(Top Command Counters). 또한 최근 24시간 동안의 유형별 SQL 실행횟수를 시간당 누적 횟수로도 보여준다(Top Command Coounters Hourly). MySQL Handler 그래프는 MySQL서버의 주요 핸들러의 초당 사용량을 보여준다.



020. MySQL – MySQL InnoDB Metrics
MySQL 서버에서 사용하는 InnoDB 엔진과 관련된 성능지표를 나타낸다.

- InnoDB Buffer Pool Size, InnoDB Row Operations .
InnoDB 버퍼 풀의 전체크기와 실제 물리 메모리에서 InnoDB 버퍼 풀의 용량이 차지하는 비율, InnoDB 버퍼 풀의 초당 행 읽기/쓰기 횟수 등의 지표등을 보여준다.


- InnoDB Buffer Pool Content, Pages, I/O
InnoDB 버퍼 풀에 적재되어 있는 데이터 량(크기, 페이지 수)와 아직 디스크로 플러시 되지 않은 데이터 량을 보여준다. 또한 InnoDB 버퍼 풀의 읽기/쓰기 페이지 수, 읽기/쓰기 요청 횟수 등을 보여준다.




030. MySQL – MySQL Table Statistics
MySQL Table Statistics 대시보드는 MySQL 서버의 모든 테이블에 대한 간략한 통계정보(테이블 크기, 행 읽기 횟수 등)를 보여준다.

- Table Size
mysqld expoter 프로세스를 실행할 때, “-collect.infor_schema.tables=true” 옵션을 추가하여 실행하면 테이블 관련 통계정보를 수집한다. 이 테이블 통계 정보는 MySQL 서버의 information_schema 데이터베이스의 tables 테이블에 저장된 통계정보를 수집하는 것이다.
전체 데이터베이스 크기, 데이터베이스별 크기 상위 5, 테이블별 크기 상위 5개 등의 사이즈 정보를 보여준다.



- Table Activity
mysqld expoter 프로세스를 실행할 때, "-collect.infor_schema.tablestats=true" 옵션을 추가하여 실행하면 해당 통계정보를 수집한다. 이때, 모니터링 대상 MySQL 서버의 전역 변수(Global Variables) 중 사용자 통계정보 수집 기능을 사용 중이어야 한다(userstats=1). MySQL의 클론 DB MariaDB Percona Server에서만 사용할 수 있는 기능이다.
Table Activity 항목의 그래프는 읽은 행의 수, 변경 행의 수가 많은 상위 5개 테이블의 행 읽기 수, 변경 행의 수 등의 테이블 관련 모니터링 지표를 보여준다.


Top Tables by Auto Incremeht Usage 그래프는 auto_increment 속성의 컬럼의 최대 값 대비 현재 값을 백분율로 보여준다.
이 지표는 mysqld expoter 프로세스를 실행할 때, "-collect.auto_increment.columns=true " 옵션을 추가하여 실행해야 해당 통계정보를 수집한다






040. MySQL – MySQL User Statistics
MySQL Table Statistics 대시보드는 MySQL 서버의 유저들에 대한 간략한 통계정보(유저별 접속 횟수, 유저별 CPU사용시간, 유저별 행 추출/변경 휫수 등)를 보여준다. 이 지표들은 mysqld expoter 프로세스를 실행할 때, "-collect.infor_schema.userstats=true" 옵션을 추가하여 실행해야 해당 통계정보를 수집한다.
MySQL Table Statistics 대시보드의 Table Activity 항목의 그래프와 동일하게 사용자 통계정보 수집 기능을 사용 중이어야 한다(userstats=1).





050. MySQL – MySQL Replication
MySQL Replication 대시보드는 MySQL의 레플리케이션 관련 모니터링 지표를 보여준다.

- IO/SQL Tread Running, Replication Delay
모니터링 대상 서버의 Replication 관련 지표(IO/SQL 스레드 동작 상태, 복제 지연(Slave Lag) 상태 등)를 보여준다.



- Binlogs Size
MySQL 서버의 Binlog 크기와 시간별 누적 binlog 크기를 보여준다.





- Relay Log Space
MySQL 서버의 Relay Log 크기와 시간별 누적 Relay Log 크기를 보여준다.







[PMM] #100 Percona Dashboard – 리눅스 모니터링

Percona Dashboard – 리눅스 모니터링

Percona Dashboard에서 조회할 수 있는 리눅스 모니터링 지표는 앞서 연동한 node exporter가 주기적으로 수집하여, Prometheus가 주기적으로 가져와(scraping) 저장하고 있는 정보(metric)를 조회하는 것이다.
리눅스 모니터링 지표에 대한 대시보드는 크게 System Overview, Disk Space, Disk Performance 세개의 대시보드이며 Summary Dashboard는 리눅스 모니터링 지표와 MySQL 서버 모니터링 지표를 요약하여 함께 보여주는 대시보드이다. 이 지표들은 리눅스 시스템의 시스템 자원(CPU, Memory, Disk, Newwork )의 주요 지표들을 시간별, 기간별로 보여준다.

본 장에서는 System Overview, Disk Space, Disk Performance 세 개의 대시보드의 주요 그래프에 대해서 간단히 알아보자.


010. 리눅스 모니터링 - System Overview
System Overview는 모니터링 대상 리눅스(운영체제)의 주요 모니터링 지표를 보여준다.

- CPU Usage
기간별 CPU 사용량을 100분률로 보여주며 idle, user, system등의 사용영역별 비율을 함께 보여준다.


- Memory, Memory Distribution
기간별 Memory 사용량을 영역별 용량으로 보여준다




020. 리눅스 모니터링 – Disk Space
Disk Space는 리눅스에 마운트 되어 있는 마운트 포인트별 디스크 사용량을 보여준다.

- Mountpoint
마운트 되어 있는 디스크(블록 디바이스)별로 사용중인 디스크 용량과 유휴 디스크 용량을 보여준다.



030. 리눅스 모니터링 – Disk Performance
Disk Performance 는 리눅스에서 사용하는 블록 디바이스들의 여러 디스크 성능 지표를 보여준다.

- Disk Latency
Disk Latency는 디스크들의 읽기/쓰기 지연 시간(Read/Write Latency)을 보여준다



- Disk Operations
Disk Operations 는 디스크들의 물리적 읽기/쓰기 횟수(초당, IOPS)를 보여준다.



- Help
Help 항목은 Disk Performance 대시보드의 각 그래프들의 보여주는 성능지표에 대하여 간단하게 설명한 내용이다







[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 주요 모니터링 지표의 변동 추이를 보여준다.