“복잡한 Zabbix 운영을 더 효율적으로 만들고 싶다면,
블로그의 핵심 내용을 집대성한 『Zabbix 엔터프라이즈 최적화 핸드북(PDF)』을 확인해보세요.”
https://jikimy.gumroad.com/l/zabbix-master
관련 글 :
(베어메탈 / Kubernetes Pod 환경 완전 지원, Agent2 플러그인 기반)
Zabbix에서 MySQL 모니터링은 예전처럼 UserParameter 스크립트를 얹는 방식이 아니다.
Zabbix Agent2 + MySQL 플러그인만 있으면 관련 지표(InnoDB, Slow Query, Replication, Buffers)를 수집 가능하다.
하지만 문제는 실제 운영 환경이 두 가지로 나뉜다는 점이다.
- ① MySQL이 베어메탈(물리/VM) 서버에서 구동
- ② MySQL이 Kubernetes Pod에서 Service External IP로 노출되어 구동
두 환경은 네트워크 구조가 완전히 다르기 때문에, Agent2 설정 방식도 다르다.
이 글은 그 모든 차이를 Zabbix 7.4 기준으로 완전히 정리한 실무 가이드다.
1. 지원 버전
Zabbix
- Zabbix Server/Proxy 7.4 이상
: zabbix 홈페이지의 설명에 의하면 5.0 이상도 가능하다.
MySQL 엔진
- MySQL 5.7 / 8.0 / 9.4
- Percona 8.4
- MariaDB 10.6 / 11.8
2. MySQL 모니터링 계정
생성 (공통)
환경과 관계없이 다음 권한만 준비하면 된다.
CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
GRANT REPLICATION CLIENT, PROCESS, SHOW DATABASES, SHOW VIEW
ON *.* TO 'zbx_monitor'@'%';

MariaDB 10.5.9 이상은 추가 권한 필요:
GRANT SLAVE MONITOR ON *.* TO 'zbx_monitor'@'%';
3. Agent2 플러그인 설정 파일의 정확한 경로
Agent2 측에 MySQL 플러그인이 미리 설치·활성화되어 있어야 하며, 정상적으로 설치가
되었다면 아래와 같은 경로에 설치 된다.

4. 템플릿 매크로 방식 vs Agent2 세션 방식
두 방식 모두 동작하지만 성격이 다르다.
✔ 템플릿 매크로 방식
{$MYSQL.DSN} = tcp://192.168.117.5:3306
{$MYSQL.USER} = zbx_monitor
{$MYSQL.PASSWORD} = <password>
장점: plugin 설정 파일 수정 필요 없이. UI 에서 한번에 설정 가능.
단점: Zabbix UI에서 비밀번호가 보임
✔ Agent2 세션 방식 (권고)
대상호스트에 zabbix agent2를 설치한 이후
/etc/zabbix/zabbix_agent2.d/plugins.d/mysql.conf
에서 아래와 같이 값을 변경한 후 zabbix agent2 재시작
[기본값]
Plugins.Mysql.Sessions.*.Uri= Plugins.Mysql.Sessions.*.User=
Plugins.Mysql.Sessions.*.Password=
[수정값]
Plugins.Mysql.Sessions.example_mysql.Uri=tcp://192.168.117.5:3306
Plugins.Mysql.Sessions.example_mysql.User=zbx_monitor
Plugins.Mysql.Sessions.example_mysql.Password=<password>

템플릿 매크로 적용 : zabbix web ui에서 대상 호스트 만든 후 템플릿 및 매크로 적용
{$MYSQL.DSN} = example_mysql



장점:
- 패스워드가 Agent2 서버 내부에만 존재
- 여러 인스턴스 관리 가능
- 보안·확장성 최고
- Zabbix 에서 추천하는 방식
Tip. 플러그인 설정 방식 :
✔ (A 방식) Default 값만 사용하는 단일 MySQL 모니터링
MySQL이 1개만 존재할 때 사용/etc/zabbix/zabbix_agent2.d/plugins.d/mysql.confPlugins.Mysql.Default.Uri=tcp://192.168.117.5:3306 Plugins.Mysql.Default.User=zbx_monitor Plugins.Mysql.Default.Password=<password>
zabbix web에서 템플릿 매크로는 비워두거나 그대로 둔다.
이 방식의 장점
설정 간단
세션 이름 필요 없음
단일 MySQL 환경에 최적
✔ (B 방식) Sessions 구조를 사용하는 멀티 인스턴스 모니터링
여러 개의 MySQL 혹은 여러 DSN을 써야 한다면 Sessions 방식이 정답이다.
(1개만 사용시에도 사용해도 상관 없다)/etc/zabbix/zabbix_agent2.d/plugins.d/mysql.confPlugins.Mysql.Sessions.example_mysql.Uri=tcp://192.168.117.5:3306 Plugins.Mysql.Sessions.example_mysql.User=zbx_monitor Plugins.Mysql.Sessions.example_mysql.Password=<password>
5. Kubernetes Pod MySQL 모니터링 구성
Agent2는 Host에서 실행되고
MySQL은 Pod 안에서 실행되는 환경에서의 구성 :
Pod의 ClusterIP는 외부에서 접근 불가이므로 반드시 Service(NodePort or LoadBalancer) 를 통해 접근해야 한다.
가장 실무적인 방법은:
LoadBalancer External IP 기반 모니터링
● K8S 구조
Agent2 (Host) → Service External IP → MySQL Pod
● External IP 예
192.168.117.90:3306
● mysql.conf
Plugins.Mysql.Sessions.K8s.Uri=tcp://192.168.117.90:3306
Plugins.Mysql.Sessions.K8s.User=zbx_monitor
Plugins.Mysql.Sessions.K8s.Password=<password>
zabbix web ui 템플릿 매크로:
{$MYSQL.DSN} = K8s
6.지표 : 주요 수집 아이템
- InnoDB 버퍼/엔진 통계
- Thread/Connection
- Slow Query
- Temp Table 생성 비율
- Buffer Pool Hit Ratio
- 쿼리 처리량

7. 트러블슈팅 체크리스트
1) 베어메탈 (Bare Metal) 환경
- MySQL 설정 (
my.cnf) 확인:bind-address가127.0.0.1로 설정되어 있으면 외부 접속 불가 (0.0.0.0으로 변경 필요) - Unix Socket 권한: Zabbix Agent 실행 계정(
zabbix)이/var/run/mysqld/mysqld.sock파일에 대한 읽기/쓰기 권한이 있는지 확인 - 방화벽 (Firewall): OS 방화벽(
firewalld,ufw) 또는 클라우드 보안 그룹(Security Group)에서 3306 포트가 차단되었는지 확인 - SELinux 차단: (중요) SELinux가 Enforcing 모드일 경우, Zabbix Agent가 소켓이나 포트에 접근하는 것을 막을 수 있음 -> SELinux 비활성화 권고
2) 쿠버네티스 (Kubernetes) 환경
Kube-proxy 모드: 드물게 IPVS 모드 사용 시 세션 타임아웃으로 인한 간헐적 연결 끊김 발생 여부 확인
NetworkPolicy 차단: 네임스페이스에 적용된 NetworkPolicy가 External IP(Zabbix)로부터 들어오는 Ingress 트래픽을 허용하는지 확인
Service External IP 변경: LoadBalancer를 재생성하거나 노드 재시작 시 External IP가 변경되었는데, Zabbix 호스트 설정은 기존 IP 인지 변경 적용된 IP인지 확인
Pod 준비 상태 (Readiness Probe): MySQL Pod가 Running 상태여도 Readiness Probe 실패 시 Service의 Endpoints 목록에서 제외되어 접속이 차단됨
8. 결론
Zabbix 7.4 환경에서 MySQL 모니터링은 다음 한 문장으로 요약할 수 있다.
Agent2가 MySQL과 연결할 수 있는 DSN만 정확히 지정하면, 나머지는 모두 자동으로 해결된다.
- 플러그인 경로는
/etc/zabbix/zabbix_agent2.d/plugins.d/ - UserParameter는 6.0 이후 필요 없음
- K8S Pod → External IP · NodePort TCP
- 세션 방식이 가장 안정적·보안적·확장성 좋음
- 템플릿은 “MySQL by Zabbix agent 2” 하나면 충분
운영 환경이 베어메탈이든 Pod든 중요하지 않다.
DSN 구성만 정확하다면, Zabbix는 환경에 구애받지 않는 강력한 MySQL 모니터링
플랫폼이 된다
🛠 마지막 수정일: 2025.12.09
ⓒ 2025 엉뚱한 녀석의 블로그 [quirky guy's Blog]. All rights reserved. Unauthorized copying or redistribution of the text and images is prohibited. When sharing, please include the original source link.
💡 도움이 필요하신가요?
Zabbix, Kubernetes, 그리고 다양한 오픈소스 인프라 환경에 대한 구축, 운영, 최적화, 장애 분석,
광고 및 협업 제안이 필요하다면 언제든 편하게 연락 주세요.
📧 Contact: jikimy75@gmail.com
💼 Service: 구축 대행 | 성능 튜닝 | 장애 분석 컨설팅
📖 E-BooK [PDF] 전자책 (Gumroad):
Zabbix 엔터프라이즈 최적화 핸드북
블로그에서 다룬 Zabbix 관련 글들을 기반으로 실무 중심의 지침서로 재구성했습니다.
운영 환경에서 바로 적용할 수 있는 최적화·트러블슈팅 노하우까지 모두 포함되어 있습니다.
💡 Need Professional Support?
If you need deployment, optimization, or troubleshooting support for Zabbix, Kubernetes,
or any other open-source infrastructure in your production environment, or if you are interested in
sponsorships, ads, or technical collaboration, feel free to contact me anytime.
📧 Email: jikimy75@gmail.com
💼 Services: Deployment Support | Performance Tuning | Incident Analysis Consulting
📖 PDF eBook (Gumroad):
Zabbix Enterprise Optimization Handbook
A single, production-ready PDF that compiles my in-depth Zabbix and Kubernetes monitoring guides.
답글 남기기
댓글을 달기 위해서는 로그인해야합니다.