본문 바로가기

Monitoring Tools

Monitoring Tools - Zabbix MariaDB 모니터링 및 UserParameter 설정

728x90

데이터베이스 서버의 상태를 실시간으로 모니터링하고 문제 발생 시 경고를 받을 수 있어 유용합니다.

이번 글에서는 ZabbixMariaDB를 연동하여 중요한 상태 정보를 수집하고, 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) 추가

  1. Zabbix 프론트엔드로 이동하여 MariaDB 서버가 등록된 호스트에서 아이템을 추가합니다.
    • Configuration > Hosts로 이동 후, 해당 호스트 선택.
    • Items 탭에서 Create item 클릭.
  2. 아이템 정보 입력:
    • 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명을 초과할 때 경고 알림을 받을 수 있습니다

  1. Configuration > Hosts로 이동해 해당 호스트 선택.
  2. Triggers 탭에서 Create trigger 클릭.
  3. 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';"

 

728x90
반응형