레이블이 실시간 모니터링인 게시물을 표시합니다. 모든 게시물 표시
레이블이 실시간 모니터링인 게시물을 표시합니다. 모든 게시물 표시

[PMM] #140 MySQL 모니터링 – 실시간 모니터링#2 - Replication

MySQL 모니터링 실시간 Replication 모니터링


이번 포스팅에서는 MySQL 실시간 모니터링 요소중에서 Replication 상태를 실시간으로 확인할 수 있는 “MySQL모니터링-Replication” 대시보드를 구성해본다.


010. MySQL 실시간 Replication 모니터링 대시보드 생성
실시간 Replication 모니터링 대시보드는 이전 포스트인 [PMM] #130 MySQL모니터링 – 실시간 모니터링#1 에서 생성한 "MySQL모니터링-실시간모니터링" 대시보드를 복제하여 구성한다.


먼저 “MySQL모니터링-실시간모니터링대시보드를 열어 대시보드 관리메뉴의 “Save As…” 버튼을 클릭한다. “Save As…” 메뉴는 현재 대시보드를 새 이름으로 복사하는 기능이다.




새 대시보드의 이름은 MySQL모니터링-실시간Replication로 하고 저장한다.




다음과 같이 실시간Replication대시보드가 생성되었다.




실시간Replication 대시보드는 Replication관련 그래프로 구성할 것이므로 기존 그래프가 있는 1행을 통째로 삭제한다.




대시보드의 설정만 유지하고 다음과 같이 아무런 그래프가 없는 상태가 되었다.




이제 Replication관련 모니터링 그래프를 추가한다. “[PMM] #140 MySQL 모니터링 실시간 모니터링#1”에서 그래프를 추가하는 방법과 같은 패턴으로 Percona Dashboard에 이미 설정되어있는 그래프의 JSON 포멧 패널 정보를 그대로 복사하여 붙여넣는 방법으로 진행한다.

대시보드의 1행에 아래 그래프를 추가한다. 신규 추가하는 각 그래프의 JSON 패널 정보를 복사할 그래프는 다음과 같다. 그래프를 추가할 땐, 1개의 호스트만을 선택하여 그래프를 추가하고, 추가하는 그래프의 개수에 따라 그래프 폭을 적절히 변경한다. 1행의 전체 폭(Span) 12이다. 각 그래프별 폭은 그래프 설정탭의 General > Span 값을 2로 설정하면 된다.

- IO Thread Running : MySQL Replication | Percona App - IO Thread Running
- SQL Thread Running : MySQL Replication | Percona App - SQL Thread Running
- Replication Error No : MySQL Replication | Percona App - Replication Error No
- MySQL Replication Delay : MySQL Replication | Percona App - MySQL Replication Delay
- Binlogs Size : MySQL Replication | Percona App - Binlogs Size
- Relay Log Space : MySQL Replication | Percona App - Relay Log Space

IO Thread Running, SQL Thread Running, Replication Error No그래프는 그래프 설정 탭의 Metrics > Step 5s로 변경하고 height값을 삭제한다. 또한 모든 그래프의 타이틀에 “$host” 변수를 추가한다.

완료하면 다음과 같이 Replication관련 지표들을 실시간으로 한 화면에서 볼 수 있다.




“Binlogs Size” 그래프와 “Relay Log Space” 그래프의 지표는 하나의 그래프로 묶어서 보여줘도 크게 무리가 없기에 하나의 그래프로 두 그래프 지표를 합쳐본다.
먼저 Relay Log Space 그래프 메뉴에서 Duplicate버튼을 클릭하여 같은 그래프를 복사해둔다.




별도의 브라우저 창을 하나 더 띄워서 Binlogs Size 그래프 설정으로 집입하여 Metrics 탭의 Query 를 복사한다



원래창에서 복사한 Relay Log Space 그래프의 설정으로 진입하여 Metrics 탭의 하단에 있는 [+Add query] 버튼을 한번 클릭하면 아래의 B 메트릭 행이 추가된다. 이 메트릭정보에 Binlogs Size A 메트릭 Query 값을 복사하고 Legend FormatBinlogs Size로 등록한다. 그럼 다음과 같이 추가한 메트릭이 함께 그래프에 표시된다.




General탭으로 이동하여 그래프 이름(Title)“[$host] Binlogs/RelayLog Size”로 변경한다.





Display탭으로 이동하여 Fill 수치를 0으로 변경한다. 그래프에 음영처리를 하지 않는다.




X 버튼을 눌러 대시보드로 나와 새로 추가한 “Binlogs/RelayLog Size” 그래프가 잘 나온다면, “Binlogs Size” 그래프와 “Relay Log Space” 그래프는 삭제한다.
다음과 같이 깔끔해졌다.




행의 높이를 조금 조정해보자. 행 설정 메뉴에서 “Set height” > 150px를 클릭한다. 그럼 행의 높이와 그래프의 높이들이 일괄적으로 150px로 조정된다.




다음과 같이 150px로 행 높이가 조정되었다.




여러 호스트들의 그래프를 한번에 보여주기 위해서 행 설정 메뉴에서 Templating optins Repeat Row 값을 host로 지정해준다.




완료하였으면 Host 드롭 박스에서 여러 호스트를 선택해본다.
다음과 같이 여러 호스트의 Replication 관련 모니터링 그래프를 실시간으로 확인할 수 있다.
















[PMM] #130 MySQL 모니터링 – 실시간 모니터링#1

MySQL 모니터링 실시간 모니터링


MySQL서버의 모니터링 요소(factor)는 상당히 다양하다. 이 모니터링 요소 중에서 매우 짧은 시간(최근 5분에서 10)동안의 변화를 실시간으로 봐야하는 상황이 있을 수 있다. 예를 들면, 쇼셜커머스 서비스에서 사용자 유입량이 특정 시각부터 급증(특정 인기상품 할인 프로모션이 시작되는 시각)하는 상황이 바로 그렇다. 더욱이 이러한 서비스 DB1개의 MySQL서버로만 서비스하지 않고 DB 트래픽 분산을 위하여 여러 대의 MySQL 서버 샤드로 구성하기도 한다. 이땐, 모든 MySQL 성능 지표를 모니터링하는 것 보다는 실시간으로 급증, 급감하거나 또는 정상적인 쿼리 실행에 영향을 줄 수 있는 락 등의 4~5개의 중요한 성능 지표만 모니터링 하는 것이 유리하다.
이번 장에서는 CPU Usage, QPS, Threads, Locks, Handlers 5개의 그래프를 실시간 모니터링 그래프로 선택하여, 여러대의 호스트를 한 화면에서 5개 그래프를 실시간으로 볼 수 있는 대시보드를 만들어 본다.

이전 포스팅에서 Percona Dashboard를 설치했으므로, 그래프를 생성할 땐 Percona Dashboard의 대시보드 설정과 그 그래프들을 복사하여 간편하게 생성한다.


010. MySQL 실시간 모니터링 대시보드 생성

메뉴 > Dashboards > [+ New] 클릭하면 다음과 같이 새로운 대시보드가 생성된다.



대시보드 설정값 세팅을 위하여 대시보드 관리(메뉴바 톱니바퀴버튼) > Settings 를 클릭한다. General(일반설정) 탭에 다음과 같이 대시보드의 이름과 태그 등을 입력해준다.




대시보드 설정 값의 변경사항은 별도의 저장버튼을 클릭해야 한다. 메뉴바의 플로피 디스켓 모양의 버튼이 저장 버튼이다. 저장 버튼을 클릭하여 다음과 같이 저장한다.




대시보드 관리(메뉴바 톱니바퀴버튼) > Templating 을 클릭한다. 대시보드의 형판을 설정하는 단계이다



[+New] 버튼을 클릭하여 다음과 같이 Interval 변수를 설정한다. 입력시 대소문자를 확실히 구분하여 Name:interval, Label:Interval 과 같이 입력하고, 다른 입력값들은 다음의 이미지와 같이 입력한다. 입력이 끝났으면 반드시 ADD 버튼을 클릭한다.




interval 변수가 정상적으로 설정되었으면 Variables탭에 다음과 같이 $interval 이라는 변수값이 생성됨을 확인할 수 있다. 그리고 하단의 대시보드에 “Interval: 5s”라는 드롭다운 버튼이 생성되었다면 추가가 잘 된것이다.




[+New] 버튼을 한번 더 클릭하여 다음과 같이 Host 변수를 설정한다. 입력시 대소문자를 확실히 구분하여 Name:host, Label:Host 와 같이 입력하고, 다른 입력값들은 다음의 이미지와 같이 입력한다. 입력이 끝났으면 반드시 ADD 버튼을 클릭한다.




host 변수가 정상적으로 설정되었으면 Variables탭에 다음과 같이 $host 라는 변수값이 생성됨을 확인할 수 있다. 그리고 PMM에서 모니터링하는 대상 MySQL 서버들의 호스트들이 대시보드에 드롭다운 버튼으로 생성된다. 이 호스트 이름들은 PMM Client - Mysqld Exporter 설치편에서 PMM Server prometheus.yml 파일에 설정한 PMM Client의 노드정보 중 alias: “pmmclient:3306” 참조하는 리스트이다.




잊지 않고 반드시 저장한다.



저장했으면 X버튼을 클릭하거나, 다시 Home 대시보드로 갔다가 MySQL모니터링-실시간모니터링 대시보드를 클릭한다. 그럼 Interval Host 드롭다운 박스가 생성된다.



센스가 있는 독자분이라면 이 두 변수가 어떤 것을 의미하는 것인지 알 수 있을 것이다. Interval은 이 대시보드에 추가할 그래프의 수치를 얼마의 간격을 두고 표시할 것인지, 그 간격의 시간을 변경할 수 있는 변수이다. 그리고 Host는 이 대시보드에 추가할 그래프의 표시 대상이 어떤 모니터링 대상 서버를 가리키는지 호스트를(복수선택가능) 선택하는 변수이다.



020. CPU Usage 그래프 생성
앞서 생성한 “MySQL모니터링-실시간모니터링대시보드에 CPU Usage그래프를 추가해본다.
그래프를 생성할 때 그래프의 모든 지표를 일일이 수동으로 설정하지 않고, Percona Dashboard에 이미 설정되어있는 그래프의 JSON 포멧 패널 정보를 그대로 복사하여 붙여넣는(ctrl+c, ctrl+v) 방법으로 간단하게 생성하는게 포인트이다.

먼저 새 브라우저 창을 띄워 “System Overview | Percona App” 대시보드로 이동한다. CPU Usage 그래프의 그래프 타이틀 부분을 마우스 좌 클릭하면 그래프 메뉴가 나타난다. 여기서 “Panel JSON”을 클릭한다.




“Panel JSON”을 클릭하면 이 그래프의 패널정보를 JSON 포멧으로 직접 확인할 수 있다. JSON 포멧을 모두 선택하여 복사(ctrl+c)해 둔다. 또는 임의의 텍스트 에디터를 열어서 잠시 에디터에 붙여 둔다




다시 “MySQL모니터링-실시간모니터링대시보드로 돌아가서,  첫 행의 행 메뉴를 클릭하여 Add Panel > Graph를 클릭하고 1행에 신규 그래프를 생성한다.




이 대시보드에 그래프를 생성할 땐, Host 드롭 박스는 1개의 호스트만 선택하여 진행한다. 다음과 같은 신규 그래프 생성 화면에서 그래프 타이틀을 마우스 좌 클릭하여 Panel JSON 버튼을 클릭한다.





다음과 같이 신규 그래프의 패널 정보 JSON 편집 창이 나타난다. JSON을 모두 삭제하고 복사해 두었던 “System Overview | Percona App” 대시보드 CPU Usage 그래프의 JSON 정보를 통째로 붙여넣기(ctrl+v)한다. 그리고 반드시 Update 버튼을 눌러서 갱신한다.




그럼 다음과 같이 CPU Usage그래프가 바로 생성된다.




이 대시보드의 기본 Time Range 6시간으로 설정되어 있어, 초기 그래프의 로딩이 다소 오래 걸릴수 있다. 대시보드의 Time Range값을 편의상 최근 5, 5초마다 새로고침(refresh)되도록 변경해보자.




이 대시보드의 용도는 실시간 모니터링이므로 CPU Usage 상세 값을 직접 보여주는 테이블은 노출하지 않도록 설정한다. 그래프 설정에서 Legend 탭의 Options > Show 항목을 체크 해제 한다




이번에는 General 탭의 Title에 선택한 호스트명이 노출되도록 Title : “[$host] CPU Usage”과 같이 변수을 추가한다. 추가하면 현재 Host 드롭 박스에서 선택한 호스트명이 자동으로 함께 노출된다.




X 버튼을 눌러서 그래프 편집화면을 빠져나오면 대시보드에 다음과 같이 CPU Usage그래프가 보일것이다



대시보드 메뉴의 저장(플로피 디스켓) 버튼을 눌러, 잊지 말고 대시보드 전체를 꼭 저장한다.

-       Interval : 그래프에서 보여주는 각 metric의 시간 간격을 선택할 수 있다.
-       Host : 선택한 호스트의 CPU 사용량을 확인할 수 있다.

Interval을 최대 5초까지 줄일수롤 5초간의 CPU Usage로 그래프를 자세히 보여준다. 반면에 Interval을 크게 잡는다면 그 만큼 CPU Usage의 상세함은 떨어지게 된다



030. Host 별 행단위 노출 설정
대시보드를 처음 설정할 때 Host 변수의 유형을 중복 체크가 가능하도록 설정하였다. 허나, 이 부분에서 Host를 여러 개 선택하거나 ALL을 선택한다면 CPU Usage 그래프가 제대로 보이지 않을 것이다. Host를 복수 선택이 가능하게 설정한 이유는 단일 그래프에서 여러 호스트의 지표를 한 번에 보여주기 위함이 아니다
선택한 호스트별로 한 행씩 보여주도록 설정한 것이다.

행 설정 메뉴에서 Row editor를 클릭한다.




행 설정(Row Settings) 화면에서 Templating options를 다음과 같이 Repeat Row host로 설정하고 X버튼을 눌러 대시보드로 돌아온다.



Host 드롭 박스에서 여러 호스트를 선택하면 다음과 같이 호스트별로 1행씩 그래프가 반복되어 나타난다. 그래프 타이틀에 $host변수를 추가하여 선택한 호스트명이 보이게 하고, 호스트 드롭 박스에서 복수 호스트를 선택할 수 있도록 설정한 이유가 바로 이렇게 행 단위 호스트 별 뷰를 보기 위함이다.



최종적으로 대시보드 메뉴의 저장(플로피 디스켓) 버튼을 눌러, 잊지 말고 대시보드 전체를 꼭 저장한다.



040. QPS / Handlers / Threads / Table Locks 그래프 생성
CPU Usage와 동일한 방법으로 “MySQL모니터링-실시간모니터링대시보드의 1행에 아래 그래프를 추가한다. 신규 추가하는 각 그래프의 JSON 패널 정보를 복사할 그래프는 다음과 같다.

- QPS : MySQL Overview | Percona App - Top Command Counters
- Handler : MySQL Overview | Percona App - MySQL Handlers
- Active Threads : MySQL Overview | Percona App - MySQL Active Threads
- Table Locks : MySQL Overview | Percona App - MySQL Table Locks
- Thread Cache : MySQL Overview | Percona App - MySQL Thread Cache

그래프를 추가할 땐, 1개의 호스트만을 선택하여 그래프를 추가하고, 추가하는 그래프의 개수에 따라 그래프 폭을 적절히 변경한다. 1행의 전체 폭(Span) 12이다. 각 그래프별 폭은 그래프 설정탭의 General > Span 값을 2로 설정하면 된다.



“Active Threads” 그래프와 “Thread Cache” 그래프의 지표는 하나의 그래프로 묶어서 보여줘도 크게 무리가 없기에 하나의 그래프로 두 그래프 지표를 합쳐본다.

먼저 Thread Cache 그래프 메뉴에서 Duplicate버튼을 클릭하여 같은 그래프를 복사해둔다




별도의 브라우저 창을 하나 더 띄워서 Active Threads 그래프 설정으로 집입하여 Metrics 탭의 Query, Legend format을 복사한다




원래창에서 복사한 Thread Cache 그래프의 설정으로 진입하여 Metrics 탭의 하단에 있는 [+Add query] 버튼을 두번 클릭하면 아래의 D/E 메트릭 행이 추가된다. 이 메트릭정보에 Active Threads A/B 메트릭 값(Query, Legend Format )을 복사하여 추가한다. 그럼 다음과 같이 추가한 두개의 메트릭도 함께 그래프에 표시된다.




Active Threads 그래프와 Thread Cache그래프를 하나의 그래프로 합쳐 만든 새로은 그래프이므로 다음과 같이 General 탭의 Title [$host] Threads 라고 이름을 수정한다.



그리고 Display 탭의 Fill 값을 0으로 변경하여 그래프 하단의 음영처리를 하지 않는 그래프로 변경한다.




X 버튼을 눌러 그래프 설정 화면에서 빠져나오면 다음과 같이 “Threads” 그래프가 잘 추가되었음을 확인할 수 있을 것이다.




원래 있었던 Active Threads, Thread Cache 그래프는 각 그래프 메뉴의 쓰레기통 모양의 버튼을 클릭하여 삭제해준다.




모든 설정을 마치면 다음과 같이 CPU Usage, QPS, Threads, Locks, Handlers 그래프를 5분단위의 5초갱신으로 볼 수 있다.






물론 Host 드롭 박스에서 여러 호스트를 설정하면 복수의 행에 선택한 호스트들의 그래프도 함께 볼 수 있다.



최종적으로 완성한 이 MySQL 실시간 모니터링 대시보드는 아직 저장되지 않은 상태이다. 잊지 말고 반드시 대시보드의 저장버튼을 눌러 저장한다.