“복잡한 Zabbix 운영을 더 효율적으로 만들고 싶다면,
블로그의 핵심 내용을 집대성한 『Zabbix 엔터프라이즈 최적화 핸드북(PDF)』을 확인해보세요.”
https://jikimy.gumroad.com/l/zabbix-master
버전 주의(중요): Zabbix는 7.4/7.2/7.0(LTS) 등 버전별로 Helm Repo URL/차트 브랜치가 다름.
아래 예시는7.4기준이며, 운영 중인 Zabbix 서버/템플릿 버전에 맞춰<ZBX_VER>만 변경.
Repo 패턴:https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/<ZBX_VER>/
0) 사전 준비
- Kubernetes 1.23+ (권장 1.24+) /
kubectl,helm사용 가능 - Zabbix Server 또는 Proxy에서 TCP 10050/10051 경로 허용
- 적용하고자 하는 버전으로 Zabbix agent2 설치
- 설치 네임스페이스(예시):
monitoring
1) Repo 등록(버전 선택)
- 사용할 Zabbix 버전 지정 (7.4 / 7.2 / 7.0 중 하나)
# export ZBX_VER=7.4
- 네임스페이스 생성
# kubectl create namespace monitoring 2>/dev/null || true
- 버전별 Helm Repo 추가/업데이트
# helm repo add zabbix-chart-${ZBX_VER} https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/${ZBX_VER}/
# helm repo update
2) 기본 values 덤프 → 파일 한 장만 편집
- 차트 기본값을 로컬 파일로 저장
# helm show values zabbix-chart-${ZBX_VER}/zabbix-helm-chrt > zabbix_values.yaml
아래 항목을 같은 파일(zabbix_values.yaml) 에서 찾아 환경에 맞게 수정
버전별로 다를수 있음 . 아래는 7.4 기준임
1. kube-state-metrics 특정 노드에 배치
## kubeStateMetrics.enabled
deploys the kube-state-metrics deployment: K8s 오브젝트 상태(Deployment/Pod/노드 컨디션 등)를 실질적으로 제공
: kubeStateMetrics 블록 안에 nodeSelector 추가: taint 걸린 노드라면 tolerations 필요함
values 블록 이름이 kubeStateMetrics 로 되어 있다면
=> 아래와 같이 kube-state-metrics 로 수정
kube-state-metrics:
enabled: true
nodeSelector:
kubernetes.io/hostname: example-node1 - 배포할 노드
2. Zabbix Proxy 특정 노드에 배포
zabbixProxy:
enabled: true
nodeSelector:
kubernetes.io/hostname: example-node1
tolerations: [] # 필요 시 taint에 맞춰 추가
affinity: {} # (선택) 더 정교한 제어 시 사용
## Zabbix proxy hostname
- name: ZBX_HOSTNAME
value: example-proxy => 추후 프록시명 설정시
사용할 이름
## Note that since version 6.0 the variable ZBX_SERVER_PORT is not supported anymore. Instead, add a colon (:) followed by the port number to the end of ZBX_SERVER_HOST value.
- name: ZBX_SERVER_HOST
value: "zabbix 서버 IP"
3. Zabbix Agent를 특정 노드로 제한(Agent는 DaemonSet)
: false로 할경우 아래 3)번 작업 호스트 agent2 중지 작업은
필요 없음.여기서는 true로 설정하도록 한다.
zabbixAgent:
enabled: true
nodeSelector:
kubernetes.io/hostname: emample-node1
# 기본적으로 DaemonSet이므로, 이 조건에 맞는 노드(example-node1)에만 1개 배포됩니다
## Node selector for Agent. Only supports Linux.
#반드시 아래 설정 주석 처리
#nodeSelector:
# kubernetes.io/os: linux
4. Zabbix Java Gateway 특정 노드로 배포
: 여기서는 일단 false로 한다. true로 할경우
아래처럼 적용
zabbixJavaGateway:
enabled: true # 안 쓰는 경우 false
nodeSelector:
kubernetes.io/hostname: example-node1
5. zabbix server ip 변경
## Zabbix server host
- name: ZBX_SERVER_HOST
value: 실제 서버 IP
=> 기본적으로 이 정도 컨피그만 수정해도 사용하는데
큰 무리는없으나,
상황에 맞게 컨피그를 수정할 수도 있다.
필요 시 같은 파일에서
resources,tolerations,hostNetwork등도 함께 조정.zabbix web ui 에서 관리 -> 프록시 ->
프록시 생성 -> 프록시명 설정 후 추가
zabbix template 적용시 Prod K8S Cluster
에 프록시 추가템플릿 중 kubernetes cluster state by http는 k8s cluster 외부에 zabbix 서버가 있을경우 데이터 수집이 불가함으로 zabbix proxy가 반드시 필요하다
zabbix_values.yaml 파일에서 proxy 버전을 zabbix server 버전과 동일하게
맞출것을 권고한다.
예시 : zabbix server 버전이 7.4.3일 경우 아래와 같이 동일하게 맞추도록 한다

3) 배포 대상 호스트 agent2 중지
- 호스트 zabbix-agent2 중지/비활성화
# sudo systemctl stop zabbix-agent2
# sudo systemctl disable zabbix-agent2
- pod로 배포되지 않은 노드는 기존 호스트 agent2 계속 사용 → 중복/충돌 없음
- pod로 배포된 노드는 Pod만 사용(호스트 agent2 중지) → 포트/중복 수집 방지
4) Helm 설치
#helm install zabbix zabbix-chart-${ZBX_VER}/zabbix-helm-chrt \
-n monitoring \
--dependency-update \
-f zabbix_values.yaml
- 확인
# kubectl -n monitoring get pods -o wide
- zabbix helm 설치후 values.yaml 수정시 배포
# helm upgrade --install zabbix zabbix-chart-${ZBX_VER}/zabbix-helm-chrt -n monitoring -f zabbix_values.yaml
5) ServiceAccount 토큰 발급
#kubectl -n monitoring get secret zabbix-service-account -o jsonpath='{.data.token}' | base64 -d; echo
6) Zabbix 템플릿 적용
- Host K8S Cluster : Kubenetes cluster state by HTTP 등 나머지 템플릿 연결
- Host K8S NODE :
Kubernetes Kubelet by HTTP/ Kubernetes nodes by HTTP 연결
공통 매크로
{$KUBE.API.TOKEN}= (위에서 발급한 SA 토큰){$KUBE.KUBELET.URL}=https://<노드IP>:10250{$KUBE.API.URL}=https://<apiserver ip>:6443- 상황에 따라서 추가 :
{$KUBE.API.SERVER.URL}= https://<apiaerver ip>:6443/metrics - kube.kubelet.url 의 주소를 마스터 노드의 ip로 지정해도 무방
7) Zabbix UI 입력 예시
- 예시 호스트명: Prod K8S Cluster / Prod K8S NODE
- 예시 IP: API IP – 198.168.190.24 (master node) / Kubelet IP – 198.168.190.25 (zabbix pod 배포된 node ip)
1. Prod K8S Cluster -> cluster state / api server / controller manager / scheduler

2. Prod K8S Cluster -> 매크로 입력

3. Prod K8S NODE -> node/kubelet 템플릿

4. Prod K8S NODE -> 매크로 입력

8) 체크리스트
- 배포된 노드의 호스트 agent2 완전 중지
- Server ↔ Agent2(10050/10051) 통신 허용
{$KUBE.API.TOKEN}유효, 필요 권한(get/list/watch) 확인{$KUBE.KUBELET.URL}(노드IP:10250) 접근 가능- 템플릿 Host A/B 분리 유지(새 템플릿 추가 시에도 동일 원칙 적용)
- Repo/차트/템플릿 버전이 서버 버전과 일치
- Zabbix Proxy 성능 한계 :
– Zabbix Proxy는 내부 DB I/O 처리량에 따라 초당 처리 가능한 값(VPS: Values Per
Second) 한계가 정해진다.
– 즉, 프록시 1대로 모든 지표를 다 받는 구조는 250 VPS 전후에서 한계가 온다.
이 지점부터는 프록시 리소스 증가 또는 프록시 수평 분리(Proxy A/B) 로 분산이 답.
– VPS가 250 이하라도, Pod에 걸린 리소스, 특히 CPU limits가 낮으면
Proxy가 처리 속도에 병목이 발생해 수집 지연은 발생할 수 있다.
| VPS 수치 | 상태 | 의미 |
|---|---|---|
| ≤ 250 | 정상 운영 | 별도 조치 불필요 |
| 250 ~ 350 | 경계 구간 | 수집 지연 가능성 생김 ->자원 증설 / 튜닝 고려 |
| ≥ 350 | 위험 구간 | 수집 지연 가능성 높음 → 프록시 분리 권장 |
: 관련하여 따로 요청이 있다면 추후에 더 자세한 관련 글을 작성하도록 하겠다.
9) FAQ 요약
- zabbix 서버를 왜 외부에 설치 하는지?
-> 온프레미스 상황에서는 모니터링 서버인 zabbix를 k8s 외부에
두어야 하는게 필수적인 상황은 아니지만. k8s cluster의 상태도
모니터링 해야 하니..외부에 두는걸 권장
대시보드 관련 글 :
taint 걸린 노드에 proxy pod 배포하고자 할 경우 아래 링크 참고 바람 :
🛠 마지막 수정일: 2025.12.19
ⓒ 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.
답글 남기기
댓글을 달기 위해서는 로그인해야합니다.