레이블이 알림인 게시물을 표시합니다. 모든 게시물 표시
레이블이 알림인 게시물을 표시합니다. 모든 게시물 표시

[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/)에 나와있다.