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

[PMM] #190 마치며



마치며

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

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

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





[PMM] #170 MySQL 모니터링 - Alert

MySQL 모니터링 알림(Grafana Alert)

지난 포스팅에서 설치한 Grafana 4.0.1의 신규 기능인 실시간 알림 기능을 MySQL 모니터링 기능과 연동해보자. 알림 연동은 MySQL Replication 상태를 연동해보고 알림 결과는 메일(SMTP이용)로 받는 것으로 연동한다(SMTP 서버는 이미 별도로 구성되어 있다고 가정).


010. Grafana.ini SMTP 설정 등록 및 Grafana재 기동
Grafana의 전역 설정파일인 grafana.ini SMTP 정보를 설정한다. SMTP를 이용할 수 있는 별도의 SMTP서버는 이미 구성되어 있다고 가정하고 이 서버의 호스트와 포트는 “192.168.0.20:25”라고 가정한다. 별도의 유저/암호/보안키는 사용하지 않으며 송신 메일 주소는 “pmm_alert@email.com”으로 전제한다. 다음과 같이 grafana.ini 257행부터인 SMTP / Emailng 항목을 수정한다.


[root@pmmserver ~]# cd /etc/grafana
[root@pmmserver ~]# vi grafana.ini
.......
    257 #################################### SMTP / Emailing ##########################
    258 [smtp]
    259 enabled = true
    260 host = 192.168.0.20:25
    261 ;user =
    262 ;password =
    263 ;cert_file =
    264 ;key_file =
    265 skip_verify = true
    266 from_address = pmm_alert@email.com
    267
    268 [emails]
    269 ;welcome_email_on_sign_up = false
    270
.......
cs


Grafana를 재 기동해준다.

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



020. Alert - Notification 설정 및 테스트 메일 수신

Menu > Alerting > Notification 메뉴를 클릭한다.




Alert notification은 알림을 수신받을 유저 및 유저 그룹을 지정하는 메뉴이다. [+New Notirication] 버튼을 클릭하여 새로운 알림 수신자를 등록한다.



DBA그룹을 수신자로 설정하는 것을 예로 들면 다음과 같다. 알림메일 수신자를 여러명 추가하고 싶다면 세미콜론(“;”) 문자를 구분자로 추가한다.



“Send Test” 버튼을 클릭하면 테스트용 알림 메일이 수신 메일 계정들에게 송신되며, 다음과 같이 테스트용 알림메일을 받았다면 정상적으로 설정된 것이다. “Save” 버튼을 클릭하여 잊지 말고 저장한다.



알림 리스트에 다음과 같이 DBA라는 이름의 알림 그룹이 생성되었다.




030. MySQL모니터링-실시간Replication-Alert대시보드 생성

"[PMM] #140 MySQL 모니터링 - 실시간 모니터링#2 -Replication" 장에서 생성했던 "MySQL모니터링-실시간Replication" 대시보드를 복사하여 "MySQL모니터링-실시간Replication-Alert" 대시보드를 만든다.



복사하여 생성한 "MySQL모니터링-실시간Replication-Alert" 대시보드의 1행을 삭제한다.



대시보드 관리 메뉴에서 Templating 설정 중, $host항목을 삭제한다. 그 이유는 그래프에 알림 설정 시, Teplate variables는 알림쿼리에서 바인딩을 지원하지 않기 때문이다. 이 부분은 본 장 뒷부분에서 한번 더 언급하도록 한다.



다음과 같이 $host 항목을 삭제하고 $interval만 남아 있다.



대시보드의 설정값을 저장하고 대시보드를 확인해보면 다음과 같이 초기화 되었음을 볼 수 있다.



신규 그래프를 생성할 땐, 편의상, "[PMM] #140 MySQL 모니터링 - 실시간 모니터링#2 -Replication"에서 생성한 "Binlogs/RelayLog Size" 그래프의 JSON 값을 복사하여 생성한다



“Binlogs/RelayLog Size” 그래프의 JSON값을 복사한다.



다시 "MySQL모니터링-실시간Replication-Alert" 대시보드로 돌아와서 1행의 행 메뉴에서 Graph를 추가해 본다.



Panel JSON을 클릭하여 복사해둔 “Binlogs/RelayLog Size” 그래프의 JSON값을 붙여넣는다.



그래프 설정 값 중, Metrics 탭의 Query Legend format값을 다음과 같이 변경한다. 이 때, Query값에는 $host변수가 아닌 실제 모니터링 호스트명(본 예제에서는 pmmclient:3316)을 넣어준다 .



General 탭의 Title에도 $host 변수 대신 실제 모니터링 호스트명으로 수정한다.



Display > Mode Options Fill 값을 1로 변경하여 그래프 하단을 음영처리해준다.



저장하는 것을 잊지 않도록, 현재 설정값을 한번 저장한다.



그래프 설정 메뉴중 Alert탭을 클릭한다. 그래프에 아무런 알림설정이 되어있지 않으므로 다음과 같이 “Create Alert” 버튼만이 활성화 되어 있다. “Create Alert”버튼을 클릭해보자.



이 그래프에 알림을 설정할 수 있는 메뉴가 나타날 것이다.
먼저 “Alert Config”항목을 설정한다. 이는 알림 자체의 주기와 규칙을 설정하는 부분이다.. Replication 모니터링 지표 중 “mysql_slave_status_slave_io_running” “mysql_slave_status_slave_sql_running” 지표 값은 두 스레드가 정상적으로 기동 중일 때는 1, 그렇지 않을 때는 0을 반환한다. MySQL Replication IO스레드와 SQL스레드가 모두 정상적으로 기동하고 있는 상태를 말하므로 두 지표 중 하나라도 값이 1의 범위를 벗어난 경우에 알림을 받도록 설정해 본다.
- Evaluate every : 알림이 상태(Conditions)값이 변경되는 것을 체크하는 주기(10s(10)로 설정)
- Condition : 알림이 체크하는 지표별 상태값
  . A Query의 최소값이 현재부터 10초 동안 1~1 범위를 벗어났을때
(When min() OF query(A, 10s, now) IS OUTSIDE RANGE 1 TO 1)


다음으로 Notification을 클릭하면 알림을 수신받을 대상자를 설정할 수 있는 항목이 나타난다. 앞에서 설정한 “DBA” 그룹명을 입력해주고, 해당 알림을 수신할 때 함께 받을 간단한 메시지를 입력한다.



그래프 설정 메뉴를 나온 뒤, 잊지 말고 대시보드를 저장한다. 알림이 설정되었다면 그래프의 타이틀 앞에 작은 하트 아이콘이 표시된다. 이 아이콘은 알림 아이콘으로 알림의 상태를 나타낸다.



현재 알림 상태가 정상이라면 알림 아이콘은 초록색으로 보인다.



만일 Replication IO 스레드 또는 SQL 스레드 둘 중 하나라도 중지되었다면 다음과 같이 알림 아이콘음 부셔진 하트 모양으로 변경되고 색깔도 붉은색으로 바뀐다.



다시 정상화 되었다면 초록색 아이콘으로 다시 바뀐다.



Replication이 중지 되었을 때 다음과 같은 메일로 알림 메일이 수신된다.



다시 정상화 되었을 때에는 다음과 같은 정상화 알림 메일이 수신된다.



030. Alert - 전체 알림 목록 및 개별 알림 이력 확인

알림을 설정한 특정 그래프의 알림 이력은 그래프 설정 화면의 Alert > State History 에서 확인 할 수 있다.



Grafana 에 설정한 모든 알림 리스트는 메뉴 > Alerting > Alert List에서 확인할 수 있다. 특정 알림을 비 활성화하고 싶다면 이 메뉴에서 해당 알림의 Pause버튼(||)을 클릭하면 된다.




040. Alert – 몇 가지 유의사항

Grafana의 알림 기능의 Query Template variables를 지원하지 않는다. 그래서 그래프의 Query 부분의 $host를 동적으로 바인딩하지 않고, 대상 서버마다 각각 설정해준 것이다. 만일 알림 쿼리에 Template variables 이 있다면 Alert설정 시 다음과 같이 경고문구가 뜨며, 알림이 정상적으로 작동하지 않을 수 있다.



아울러, 알림 기능은 현재 Graph 패널만 지원한다. 나중에 릴리즈될 버전에서 Singlestat Table 패널까지도 지원 예정이라고 공식 홈페이지(http://docs.grafana.org/alerting/rules/)에 나와있다.







[PMM] #160 Grafana 4.0.1 설치


Grafana 4.0.1 설치


지난 "[PMM] #150 Grafana 4.0.0 Release + Bug" 포스팅에서처럼 Grafana 4.0.0 정식버전의 버그는 크리티컬한 문제가 될 수 있다. Grafana에서는 이를 중요한 버그로 인지하고 긴급패치가 적용된 업데이트 버전(4.0.1, 2 Dec 2016)을 다시 발표하였다. 본 장에서는 Grafana 4.0.1 버전을 설치해 본다.


Grafana 4.0.1 설치
기존에 3.X 버전이 설치되어 있다면 4.0.1 버전은 RPM으로 그대로 덥어씌워도 전혀 문제가 되지 않는다. 기존에 구성한 대시보드와 그래프들은 모두 유지된다. Grafana 4.0.1 버전을 RPM으로 다운로드 받아 3.X 버전을 설치한 방법과 같은 방법으로 설치한다.

- 공식 다운로드 : http://grafana.org/download/

010. Grafana Server 3.X 프로세스 중지
Grafana Server 3.X가 현재 실행중이라면 프로세스를 중지 한다.

1
2
3
4
5
6
7
8
[root@pmmserver ~]# cd /home/pmm/programs/PMM105
[root@pmmserver PMM105]# ps -ef | grep grafana
grafana  26945     1  0 Nov17 ?        00:23:01 /usr/sbin/grafana-server --pidfile=/var/run/grafana-server.pid --config=/etc/grafana/grafana.ini cfg:default.paths.data=/var/lib/grafana cfg:default.paths.logs=/var/log/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins
root     55984 24112  0 14:26 pts/1    00:00:00 grep grafana
[root@pmmserver PMM105]# service grafana-server stop
Stopping Grafana Server ...                                [  OK  ]
[root@pmmserver PMM105]# ps -ef | grep grafana
root     62387 24112  0 14:27 pts/1    00:00:00 grep grafana
cs


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

1
2
3
4
5
6
7
8
9
[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
-rw-r--r-- 1 pmm  pmm  42164557 2016-12-01 14:18 grafana-4.0.1-1480694114.x86_64.rpm
-rw-r--r-- 1 pmm  pmm    225180 2016-10-19 15:19 grafana-app-master.zip
[root@pmmserver PMM105]# rpm -Uvh grafana-4.0.1-1480694114.x86_64.rpm
경고: grafana-4.0.1-1480694114.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID 3dd18bdd: NOKEY
준비 중...               ########################################### [100%]
   1:grafana                ########################################### [100%]
cs



030. Grafana Server 기동
RPM으로 Grafana Server를 설치하면 리눅스 서비스(service)에 등록되므로 “service” 명령어로 Grafana Server를 기동한다.

1
2
3
4
[root@pmmserver PMM105]# service grafana-server start
Starting Grafana Server: .... OK
[root@pmmserver PMM105]# rpm -qa | grep grafana
grafana-4.0.1-1480694114.x86_64
cs


040. Grafana 대시보드 접속
Grafana 대시보드에 접속하여 좀더 심플해지고 명확해진 UI/UX를 확인해본다.











[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 관련 모니터링 그래프를 실시간으로 확인할 수 있다.