데이터베이스 서버의 상태를 실시간으로 모니터링하고 문제 발생 시 경고를 받을 수 있어 유용합니다.
이번 글에서는 Zabbix와 MariaDB를 연동하여 중요한 상태 정보를 수집하고, UserParameter를 통해 더 세밀한 모니터링을 구현하는 방법을 설명하겠습니다.
Zabbix Version : 5.0 기준
1. Zabbix 기본 템플릿: Template DB MySQL by Zabbix agent
Zabbix는 MySQL과 MariaDB의 기본적인 모니터링을 위한 Template DB MySQL by Zabbix agent 템플릿을 제공합니다.
- MySQL 버전 확인
- 쿼리 수 및 슬로우 쿼리 수집
- 스레드 연결 수 및 활성 상태
- 연결된 클라이언트 수
이 템플릿을 사용하면 MariaDB 서버의 주요 성능 지표들을 기본적으로 모니터링할 수 있습니다.
하지만, 특정 요구 사항을 반영한 맞춤형 모니터링은 사용자 정의 UserParameter를 추가하여 모니터링할 수 있습니다.
2. 사용자 정의 UserParameter 추가
Zabbix는 UserParameter 기능을 제공하여, 기본 템플릿에서 제공하지 않는 특정 요구 사항을 충족하는 커스텀 모니터링을 설정할 수 있습니다. 예를 들어, 50명 이상 사용자가 접속 중일 때 경고를 발생시키는 조건을 모니터링하는 방법을 설명하겠습니다.
2.1 UserParameter 설정 예시
C:\Program Files\Zabbix Agent\zabbix_agentd.d\template_db_mysql.conf
UserParameter=mysql.userupper[*], C:\MariaDB\bin\mysql -h"$1" -P"$2" -Dtestdb -sN -e "SELECT COUNT(roomcode) AS '' FROM tb_roominfo WHERE curuser > 50 AND open_state ='O';"
- mysql.userupper[*]: 특정 데이터베이스에 50명 이상 접속한 사용자를 모니터링하는 사용자 정의 항목입니다.
- 쿼리 설명: tb_roominfo 테이블에서 현재 접속한 사용자가 50명을 초과하고, open_state가 'O'인 경우에 해당하는 데이터의 개수를 반환합니다.
2.2 고려 사항
MariaDB에서 직접 비밀번호를 입력하는 대신, .my.cnf 파일에 MariaDB 접속 정보를 저장하여 보안을 강화할 수 있습니다.
[client] ## DB에 접근 가능한 계정으로 설정 필요
user=zbx_monitor
password=zabbix
* 이 정보는 Zabbix를 실행하는 사용자 홈 디렉토리에 .my.cnf 파일을 생성해야 읽어감
2.3 Zabbix 호스트에 아이템(Item) 추가
- Zabbix 프론트엔드로 이동하여 MariaDB 서버가 등록된 호스트에서 아이템을 추가합니다.
- Configuration > Hosts로 이동 후, 해당 호스트 선택.
- Items 탭에서 Create item 클릭.
- 아이템 정보 입력:
- Name: MySQL: UserUpper
- Key: mysql.userupper[127.0.0.1,3306] OR mysql.userupper["{$MYSQL.HOST}","{$MYSQL.PORT}"]
- Type of information: Text
- Update interval: 10m (10분마다 수집)
* {$MYSQL.HOST} / {$MYSQL.PORT} 의 경우 템플릿의 매크로를 불러다가 사용함.
2.4 트리거 설정
아이템에 트리거를 설정해, 접속 인원이 50명을 초과할 때 경고 알림을 받을 수 있습니다
- Configuration > Hosts로 이동해 해당 호스트 선택.
- Triggers 탭에서 Create trigger 클릭.
- Trigger information 입력:
- Name: User Count Over 50 Alert
- Expression: last(/[Zabbix_Host]/mysql.userupper["{$MYSQL.HOST}","{$MYSQL.PORT}"].last()}>0
- Severity: 원하는 심각도 선택
이렇게 설정하면 사용자가 50명 이상일 때 Zabbix가 자동으로 알림을 보내도록 설정됩니다.
3. 추가적인 UserParameter 예시
3.1 슬로우 쿼리 모니터링
슬로우 쿼리는 데이터베이스 성능 저하의 원인이 될 수 있습니다.
UserParameter=mysql.slowqueries[*], C:\MariaDB\bin\mysql -h"$1" -P"$2" -sNX -e "SHOW GLOBAL STATUS LIKE 'Slow_queries';"
3.2 쿼리 캐시 사용량 모니터링
쿼리 캐시가 성능에 어떤 영향을 미치는지 확인하려면, 쿼리 캐시 크기를 모니터링할 수 있습니다.
UserParameter=mysql.query_cache_size[*], C:\MariaDB\bin\mysql -h"$1" -P"$2" -sNX -e "SHOW VARIABLES LIKE 'query_cache_size';"
3.3 연결 수 모니터링
연결된 클라이언트 수를 모니터링하여 시스템 부하를 관리할 수 있습니다.
UserParameter=mysql.connections[*], C:\MariaDB\bin\mysql -h"$1" -P"$2" -sNX -e "SHOW GLOBAL STATUS LIKE 'Threads_connected';"
'Monitoring Tools' 카테고리의 다른 글
Monitoring Tools - Zabbix 로그 파일 모니터링 설정 시 "Accessible only as active check" 에러 해결 방법 (0) | 2024.10.15 |
---|---|
Monitoring Tools - Zabbix Agent 모드 비교와 호스트 자동 등록 설정 (4) | 2024.10.03 |
Monitoring Tools - Zabbix UserParameter를 이용한 금액 모니터링 (0) | 2024.10.03 |
Monitoring Tools - Zabbix Server 설치 매뉴얼 (0) | 2024.07.04 |
Monitoring Tools - Zabbix Agent 서비스 등록 (0) | 2024.06.20 |