시스템 리소스 측면에서, 그리고 DB 리소스 측면에서의 모니터링이 필요한데
이를 수월히 진행하려면 모니터링 툴의 도움이 필요하다. 대부분의 지표를 모니터링 함에
있어서 중요한 점 중 하나는 평상시 리소스 사용량의 추이 변화를 살펴보는 것이다.
따라서 평소에 리소스 사용량이 어떻게 되는지 그 내용을 기록 및 보관해둘 필요가 있다.
또한 사람이 보기 쉽게 그래프 형태로 표시해 주면 좋을 것이다. 또 다른 중요한 점으로는
대부분의 지표가 지금 이 순간의 상태 값만을 보여준다는 점일 것이다.
따라서 특정 기간 동안에 실제로 리소스가 얼마나 사용되었는지를 가늠해 보고자 한다면,
그 기간의 시작점과 종료 점에서의 리소스 상태 값의 차이를 계산해야 한다. 마찬가지겠지만 이러한 기능을
구현하기 위해서도 각 순간순간의 상태 값을 기록 및 저장할 필요가 생기며, 해당 기간 사이의 차이 값을
계산해 주는 고 그래프 형태로 표시해 주는 등 사용자 편의성을 제공해 주는 것이 좋다.
현재 이러한 기능들을 갖추고 있는 다양한 MySQL 툴들이 이미 시중에서 사용되고 있다.
대표적인 제품으로는 다음과 같은 것들이 있다.
제품명 |
업체 |
라이선스 |
|
|
|
MySQL Enterprise Monitor |
Oracle |
Commercial License |
|
|
|
MONyog |
Webyog |
Commercial License |
|
|
|
Maxguage for MySQL |
Exem |
Commercial License |
|
|
|
Spotlight for MySQL |
Dell software |
Commercial License |
|
|
|
Cacti |
The Cacti Group |
GPL v2 |
|
|
|
Nagios |
Nagios Enterprises |
GPL v2 |
|
|
|
Zabbix |
Zabbix LLC |
GPL v2 |
|
|
|
이 중 대표적인 몇 가지 제품을 살펴보도록 하겠다.
1) MySQL Enterprise Monitor
(출처: mysql.com)
MySQL Enterprise Monitor는 Oracle사로부터 정식 Subscription을 구입하면 사용할 수 있는 모니터링 툴이다.
Standard Edition에서는 제공하지 않으며, Enterprise Edition 이상의 Subscription을 맺어야 한다.
해당 제품을 운용하려면 MySQL Enterprise Monitor를 띄우기 위한 별도의 서버가 하나 필 요하며, 모니터링 대상이 될
MySQL 서버에도 에이전트를 설치해야 한다. 그러면 MySQL 서버 에 설치되어 있는 에이전트가 자신의 로컬의
MySQL DB에 접속하여 지속적으로 모니터링 항 목들에 대한 지표를 수집하고, 그 수집된 결과를 중앙의
MySQL Enterprise Monitor서버로 보 내준다. MySQL Enterprise Monitor서버는 수집된 결과를 이용해 모니터링 화면을 구성하고, 그
결과물을 웹 페이지를 통해 확인 가능하다.
MySQL Enterprise Monitor가 제공해주는 대표적인 기능은 다음과 같다.
l Replication Dashboard: 리플리케이션 구성을 인식하고, 성능, 가용성, 상태 정보 등과 같
은 지표를 수집 및 모니터링 한다. 마스터-마스터, 환형 구조와 같은 일반적이지 않는 구 성을 했을 때에도 그 구성을 인식할 수 있다.
l Access Control Lists (ACLs): MySQL Enterprise Monitor를 이용해 ACL 관리를 더욱 편하게 할 수 있다.
멀티 테넌트, 클라우드등 다양한 환경에 대한 사용자 권한, 롤등을 단일하게 관 리할 수 있도록 인터페이스를 제공한다.
l MySQL Enterprise Firewall Monitoring: MySQL Enterprise 버전의 기능 중 하나인 MySQL Enterprise Firewall 기능을 모니터링 할 수 있다.
이를 통해 DB에 대한 공격이나 비정상적인 접근 시도 등을 쉽게 확인할 수 있다.
l MySQL Enterprise Audit Monitoring: MySQL Enterprise 버전의 기능 중 하나인 MySQL Enterprise Audit 기능을 모니터링 할 수 있다.
이를 통해 모든 MySQL 서버에서 일어나고 있 는 보안 정책에 어긋나는 행동을 한 곳에서 모니터링 할 수 있다.
l Real-time MySQL Performance Monitoring and Alerts: 실시간으로 쿼리와 성능 관련 지표 들을 수집 및 모니터링한다.
성능 향상을 위한 어드바이저 기능도 지원한다.
l Real-time MySQL Availability Monitoring: 실시간으로 데이터베이스 가용성을 모니터링하고,
문제가 있으면 DBA에게 알려준다.
l Remotely Monitor MySQL in the Cloud: 클라우드와 가상 환경내의 MySQL을 모니터링 하기 적합하도록 디자인 되어 있다.
이와 같은 환경에서는 별도의 에이전트가 필요 없다.
l Visually Manage All Your MySQL Servers: 웹 기반의 대시보드를 제공한다. 이를 통해 사용 자가 보다 쉽게 성능, 가용성 정보등을
확인할 수 있고, 이에 대한 실시간 및 히스토리 그래 프를 제공한다.
l Visual Query Analysis: 쿼리 성능을 실시간으로 분석하고 시각적으로 표시해준다. performance schema를 이용해 성능을 측정하므로
추가 요소의 설치 없이 간단히 동작한다.
l Find and Fix Expensive Queries: 고비용의 쿼리를 찾아내고 수정할 수 있도록 도와준다. 단
순히 슬로우 쿼리를 측정하는 것이 아니라, CPU, 메모리 사용량과 같은 실질적인 리소스 사 용량을 기반으로 하여 고비용 쿼리를 찾는다.
l InnoDB Monitoring: InnoDB 스토리지 엔진과 관련된 성능지표를 수집 및 모니터링 한다.
인 덱스를 잘못 타고있다거나, 락 경합이 발생하는 등 성능상의 이슈가 발생하면 사용자에게 통 지하는 기능이 포함되어 있다.
l MySQL Cluster Monitoring: NDB 클러스터 소토리지 엔진과 관련된 성능지표를 수집 및 모니터링 한다.
성능 지표에 대한 모니터링뿐 아니라 가용성에 대한 모니터링 기능도 지원한다.
l Backup Monitoring: 백업이 정상적으로 받아졌는지, 너무 오래된 것은 아닌지, 백업이 너무 오래 걸리거나
증분 백업이 제대로 동작하긴 했는지와 같은 백업 관련 정보를 수집 및 모니 터링할 수 있다.
l Disk Monitoring: 디스크 사용량의 증가 추이와 같은 부분을 모니터링하고 예상되는 사용량 을 계산하여 알려준다.
l Operating System Monitoring: CPU, 메모리, 디스크 사용량과 같은 OS 측면에서의 리소스 사용량과 성능 지표를 수집
및 모니터링 하고 이 정보를 시각적으로 표시해준다.
l Identify Security Vulnerabilities: 보안상의 구멍을 찾아내고 특정지어 주는 기능을 포함하고 있다. 이를 통해 신속히 보안 결함을 메울 수 있다.
l Faster Tuning during Development and Testing: 개발 과정 중 성능 문제를 빨리 찾아내고 SQL을 최적화할 수 있도록 편의 기능을 제공하고 있다.
2) MONyog
(출처: www.webyog.com)
MONyog은 Webyog이라는 업체에서 제공하고 있는 상용 모니터링 툴이다. MariaDB의 경우
Enterprise Advanced 이상의 Subscription을 맺을 경우 MONyog을 제공해주고 있다. 물론
Webyog사에 직접 라이선스를 맺고 사용을 할 수도 있다. 하지만 그만큼 널리 인정 받고 사용되고 있는 툴이기에
MariaDB의 정식 모니터링 툴로 사용되고 있다 할 수 있겠다. 정식
Subscription을 구입하고 사용한다는 전제하에, MySQL의 경우는 MySQL Enterprise Monitor
제품을 사용하고, MariaDB의 경우는 MONyog 제품을 사용하여 모니터링을 수행하면 될 것이다.
MONyog의 경우는 MySQL Enterprise Monitor 제품과 동작 과정상의 결정적인 차이가 하나 있는데,
이 제품은 모니터링 대상 서버에 따로 에이전트를 설치하지 않는다.
l Multi-User Management: 모니터링 대상 서버에 대하여, 특정 사용자는 특정 서버만 확인할
수 있도록 세분화 가능. 사용자별로 권한도 다르게 설정 가능. AD, OpenLDAP을 통해 LDAP
계정 연동 가능.
l Security: 보안 취약점을 찾고 수정할 수 있음. MySQL에 대한 해킹 감지 가능.
l Monitor Replication: 리플리케이션 모니터링 가능. 리플리케이션 갭 발생시나, 중단시 사용 자에게 통보 가능.
리플리케이션 장애 해결에 도움이 될 수 있는 상세한 리플리케이션 로그 정보를 제공해줌.
l Real-Time Monitoring: 실시간 모니터링 기능을 통해 지금 이순간에 DB에 벌어지고 있는 일을 확인 가능함.
따로 로깅 기능을 활성화 할 필요도 없이 바로 확인 가능함.
l Find Problem SQL by: 제너럴, 슬로우 쿼리 로그 분석 기능 제공. MySQL Proxy에 대한 쿼리 가능. SQL 결과와 리포트를 CSV 형식으로 출력 가능.
l Real-Time Query Sniping: 실시간으로 슬로우 쿼리를 모니터링 할 수 있음. 장 시간 락을 대 기중인 쿼리를 모니터링 할 수 있음.
l Server Optimization: 사용자 쿼리를 통해 모니터링 가능. 과거 상태로 돌릴 수 있음. 데드락 감지 가능.
디스크 사용량 정보 제공. 성능 지표에 대한 히스토리 및 사용 경향 정보 표시. 간단한 성능 튜닝 기능 제공.
OS 성능 지표 수집 및 모니터링 가능. 에러 로그에 대한 분석 기능 제공.
l Proactive Alerts: 이벤트 단위로 상태 모니터링. 이메일과 SNMP를 통해 사용자에게 경고 메 세지 전달 가능
l Multi-platform Support: 어떠한 플랫폼 위에 올라간 MySQL이라도 모니터링 가능함. OS나 bit, 설치한 패키징 방식등에 상관없이 동작함.
l Licensing: 영구 라이선스, 기업 레벨 라이선스등을 저렴한 가격으로 제공함
l User Friendly GUI: AJAX방식을 사용한 웹 인터페이스를 통해 시각화.
MySQL 내부에 대해 더 자세히 파악할 수 있도록 상세한 정보를 전달해줌. 대쉬보드 기능을 제공하며, 이를 통해 서 버간의 비교나 실시간 정보 등을 표시할 수 있음.
l Miscellaneous Features: 실시간으로 processlist 정보를 표시해줌. 웹서버가 내장되어 있음. SSH 터널링 기능 제공. 실수로 중복 설치되는 것을 방지해 줌.
3) Cacti
(출처: www.cacti.net)
Cacti는 MySQL을 위한 전용의 모니터링 툴이 아니다. 범용으로 사용되고 있으며, 소스가 공개되어 있는 오픈소스 모니터링 툴이다.
이러한 제품으로 대표적인 것들은 Nagios, Cacti, Zabbix등이 있다.
MySQL을 위한 전용 모니터링 툴이 아니기에, MySQL 모니터링을 위한 어떠한 기능도 내장되어 있지 않다.
모니터링을 하고자 하는 부분들은 사용자가 직접 구현해야 하며, 따라서 제공되는 모니터링 기능의 수준 또한 구현하기 나름이다.
굉장히 높은 자유도를 가지고 있기에 필요한 기능들로 모니터링 화면을 구성할 수 있겠지만, 직접 구현해야만 한다는 부담이 따른다.
이는 사실 굉장히 큰 부담으로 돌아올 수 있는데, 사용자가 디스크 사용량을 모니터링 해야 할지 말아야 할지,
버퍼풀 사용량을 모니터링 해야 할지 말아야 할지와 같은 부분을 스스로 판단하고 결정해야 하며,
해당 내용을 어떻게 모니터링 해야 할 것 인지와 같은 방법까지 스스로 개발하고 추가해 주어야 한다.
하지만 그나마 간단한 방편이 있다. Percona사의 웹사이트에서 Cacti, Nagios, Zabbix에 대한모니터링 템플릿 파일을 내려 받을 수 있다.
이를 통해 오픈소스 MySQL 모니터링 시스템 구현을 한층 편하게 할 수 있다.
4) Percona-toolkit
Percona-toolkit은 화려한 UI와 다양한 기능을 제공해 주는 위의 모니터링 툴들과는 용도가 다르다.
Percona-toolkit 자체는 MySQL 운영 편의성을 위한 다양한 종류의 스크립트들 묶음인데,
이 중에 MySQL 모니터링을 위해 사용할 수 있는 간단하고 편리한 스크립트가 있어 이 자리에 함께 설명하려 한다.
아래 2개의 스크립트는 사실 너무 간단한 정보만 표시해주기에 상세히 DB 모니터링을 수행하기엔 다소 어려움이 있다.
하지만 아무런 모니터링 시스템을 갖출 필요도, 준비할 필요도 없이 바로 수행 가능하다는 이점이 있으며,
정기 점검 용도로 쓰기에도 괜찮은 스크립트라고 할 수 있겠다.
① pt-summary
해당 스크립트는 OS 상태 정보를 표시해준다.
OS 상에서 확인 가능한 시스템 사양 정보, CPU, 메모리, 디스크와 같은 시스템 리소스에 대한 사용 상태, 네트워크 연결 정보, Top
프로세스 정보와 같은 기본적인 상태 정보들을 표시해 준다. 굳이 root 권한이 필요 없으므로
MySQL 사용자 계정으로도 바로 수행이 가능하다.
② pt-mysql-summary
해당 스크립트는 MySQL DB 상태 정보를 표시해준다. MySQL의 접속 정보, 각 디렉토리 정보와
리플리케이션 연결 상태와 같은 MySQL 구동 상태 정보, 현재 MySQL의 사용량,
스크립트 수행 후 10초간의 실시간 사용량, 각종 DB 환경 변수 정보와 같은 눈으로
바로 확인 가능한 MySQL 요약 상태 정보를 표시해준다.
DB 상태 정보를 표시해 주는 스크립트이니 수행 시 DB 접속 정보를 필요로 하며,
DB에 접속 가능해야 스크립트가 정상적으로 수행된다..
'DB - MySQL' 카테고리의 다른 글
MySQL my.cnf 파일 설정 (0) | 2017.03.23 |
---|---|
MySQL Isolation LEVEL (0) | 2017.03.22 |
MySQL DB 리소스 사용량 (0) | 2017.03.06 |
MySQL 이중화 방식 - MHA 구성 방법 (0) | 2017.03.06 |
MySQL 이중화 방식 - replication 구성 방법 (0) | 2017.03.06 |