월요일, 1월 19, 2015

mysql 모니터링 시스템 1/6

3일간  mysql 모니터링 시스템 만들기 12시간 후

주요한 항목으로 놓고...
  • 실시간 모니터링은 탐지 후 즉각알림이 중요하고(than 시각화). 통합툴의 모니터링은 추세 통계의 시각화가 더 중요할거 같습니다. 전자는 개발자들이 어떻게든 커버하는데 후자가 어렵습니다. 하루동안 언제 슬로쿼리가발행했는지... 매일의 기록을 잘 보여준다면 인사이트를 줄 수 있겠죵


모니터링 항목으로는 다음과 같습니다.
  • 세션리스트
  • slow query(table only)
  • query monitoring
  • io, connection, process
단서) slow query, query monitoring 은 로그가 테이블에 있어야 합니다. 

전체기능은 다음과 같습니다.
  1. 그래프로 보여준다. 
  2. 세션리스트, slow query가 ?(3)초 이상일 경우 
  • 관리자에게 메일보내기
  • 해당 쿼리 저장
우선 데이터를 가져오는 쿼리는 다음과 같습니다. 
-- profile
select * from mysql.general_log ;

-- slow 
select * from mysql.slow_log order;

-- SHOW FULL PROCESSLIST
SHOW FULL PROCESSLIST;

-- CPU
-- DISK, File I/O

-- http://dev.mysql.com/doc/refman/5.0/en/server-status-variables.html
-- http://dev.mysql.com/doc/refman/5.0/en/show-status.html

-- connection
SHOW STATUS WHERE `variable_name` = 'Connections';
-- process 
SHOW STATUS WHERE `variable_name` = 'Threads_connected';

-- Network I/
SHOW STATUS WHERE `variable_name` = 'Bytes_received';
SHOW STATUS WHERE `variable_name` = 'Bytes_sent';

-- querys
SHOW STATUS WHERE `variable_name` = 'Queries';

전체 구조는

  1. 데이터 가져오는 것은 기존의 스케줄 기능을 확장(Quartz)
    1. 스케줄 항목에 어떤 데이터는 어떻게의 후속 과정을 넣을 수 있도록 확장
      예를 들어 경고 값이 어떤 것일 경우에 후속 과정을 수행해라라거나...
  2. 데이터 가져와서 캐쉬 엔진에 제일 마지막 데이터를 넣어 놓고(Guava cache)
  3. 차트에서는 캐쉬의 제일 마지막 데이터만 사용하도록 합니다. (D3.js)
  4. 올챙이 화면은 monitoring perspective를 만들..

댓글 없음:

댓글 쓰기