⚠️ バージョン注意(重要)
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 バージョンの Zabbix agent2 が事前インストール済み
- デプロイ先 Namespace 例:
monitoring
1) Helm Repo 登録(バージョン選択)
使用する Zabbix バージョンを指定
# export ZBX_VER=7.4
Namespace 作成
# 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.yaml の作成と編集(1ファイルのみ)
チャートのデフォルト値をローカルに出力し、環境に合わせて編集する。
helm show values zabbix-chart-${ZBX_VER}/zabbix-helm-chrt > zabbix_values.yaml
※以下の設定例はすべて Zabbix 7.4 基準。
① kube-state-metrics を特定ノードに配置
kubeStateMetrics ブロックがある場合、kube-state-metrics に修正して以下を設定:
kube-state-metrics:
enabled: true
nodeSelector:
kubernetes.io/hostname: example-node1 # デプロイ先ノード
Taint ノードに配置する場合は
tolerationsを追記。
② Zabbix Proxy を特定ノードに配置
zabbixProxy:
enabled: true
nodeSelector:
kubernetes.io/hostname: example-node1
tolerations: [] # 必要に応じて taint に合わせる
affinity: {} # 高度な制御を行う場合に使用
Zabbix Proxy の環境変数:
- name: ZBX_HOSTNAME
value: example-proxy # Zabbix UI上で使用するプロキシ名
- name: ZBX_SERVER_HOST
value: "zabbix サーバ IP"
③ Zabbix Agent のデプロイノード指定(DaemonSet)
Agentをノード単位に制限する場合:
zabbixAgent:
enabled: true
nodeSelector:
kubernetes.io/hostname: example-node1
nodeSelectorの Linux指定(kubernetes.io/os: linux)はコメントアウトすること。
Agentを enabled: false にすると、既存ホストの agent2 を停止する必要はない。
ここでは true として Pod ベースに切り替える。
④ Zabbix Java Gateway(必要に応じて)
zabbixJavaGateway:
enabled: false # 使用しない場合
使用する場合は:
zabbixJavaGateway:
enabled: true
nodeSelector:
kubernetes.io/hostname: example-node1
⑤ Zabbix Server IP の指定
- name: ZBX_SERVER_HOST
value: 実際のサーバ IP
以上の設定だけでも問題なく動作するが、必要に応じて
resources,tolerations,hostNetworkなども同ファイルで調整可能。
ポイントは1つのvalues.yamlだけを編集してデプロイすること。
Zabbix UI 設定
- 管理 → プロキシ → 新規作成
- プロキシ名: 例
example-proxy
- プロキシ名: 例
- テンプレート適用時
- 対象:
Prod K8S Cluster - プロキシ: 上記で登録したものを指定
- 対象:
テンプレートのうち「Kubernetes cluster state by HTTP」は、
ZabbixサーバがK8sクラスタ外部にある場合、データ収集ができないため、
Zabbix Proxy の使用が必須。
zabbix_values.yaml の設定では、プロキシのバージョンを Zabbix サーバーと同じバージョンに合わせることが推奨される。
例:Zabbix サーバーのバージョンが 7.4.3 の場合、以下のように同じ 7.4.3 に設定する。

3) 既存ホストの zabbix-agent2 停止
PodでAgentを動かす場合、ホスト側Agent2を停止して競合を防ぐ。
# sudo systemctl stop zabbix-agent2
# sudo systemctl disable zabbix-agent2
- Pod未展開ノード → ホストagent2継続利用(競合なし)
- Pod展開ノード → Podのみ使用(重複・ポート競合回避)
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
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 テンプレート適用(重複回避)
| ホスト名 | 適用テンプレート |
|---|---|
| K8S Cluster | Kubernetes cluster state by HTTP / API server / controller manager / scheduler |
| K8S Node | Kubernetes nodes by HTTP / Kubelet by HTTP |
共通マクロ設定:
{$KUBE.API.TOKEN} = 上記で発行したSAトークン
{$KUBE.API.URL} = https://<apiserver_ip>:6443
{$KUBE.KUBELET.URL} = https://<node_ip>:10250
状況により:
{$KUBE.API.SERVER.URL} = https://<apiserver_ip>:6443/metrics
{$KUBE.KUBELET.URL} はマスターノードIPでも問題なし。
7) Zabbix UI 設定例
| 項目 | 例 |
|---|---|
| クラスタホスト名 | Prod K8S Cluster |
| ノードホスト名 | Prod K8S Node |
| APIサーバIP | 192.168.190.24 (マスター) |
| Kubelet IP | 192.168.190.25 (Zabbix Pod配置ノード) |
- Prod K8S Cluster Template -> cluster state / api server / controller manager / scheduler

2. Prod K8S Cluster -> set macros

3. Prod K8S node Templates -> node/kubelet templates

4. Prod K8S Node -> set macros

8) チェックリスト
- 対象ノードの
zabbix-agent2が完全停止済み - Server ↔ Agent2 (10050/10051) 通信可能
{$KUBE.API.TOKEN}が有効(get/list/watch 権限){$KUBE.KUBELET.URL}(10250) にアクセス可能- Cluster / Node テンプレートを別ホストとして登録
- Repo・チャート・テンプレートのバージョンがサーバと一致
- Zabbix Proxyの性能上の限界
– Zabbix Proxyは内部データベースのI/O処理能力に応じて、1秒あたりに処理で
きる値(VPS: Values Per Second)に上限があります。
– つまり、1台のプロキシに全てのメトリクスを集約する構成では、おおよそ
250 VPS 前後 が限界となります。
これを超える場合は、プロキシのリソース増強、または プロキシの水平分割 (Proxy A/B構成) による負荷分散が有効です。
– VPSが250以下であっても、Podに割り当てられたリソース、特にCPUのlimit
が低い場合は、
Proxyの処理がボトルネックとなり、データ収集の遅延が発生する可能性があ
ります。
日本語(表現を自然に調整)
| VPS値 | 状態 | 意味 |
|---|---|---|
| ≤ 250 | 正常運用 | 追加の対応は不要 |
| 250 ~ 350 | 境界領域 | 収集遅延が発生する可能性あり → リソース増強 / チューニングを検討 |
| ≥ 350 | 危険領域 | 収集遅延が発生する可能性が高い → Proxyの分割を推奨 |
この内容について、もし要望があれば、今後さらに詳しい解説記事を作成します。
9) FAQ
Q. なぜ Zabbix サーバをクラスタ外に置くのか?
A. オンプレミス環境では必須ではないが、Kubernetes クラスタ自体の状態も監視するため、
Zabbix を外部に配置しておく構成が推奨される。
🔗 関連記事
🛠 마지막 수정일: 2025.11.18
💡 お困りですか?
Zabbix、Kubernetes、各種オープンソースインフラの構築・運用・最適化・障害解析が必要であれば、いつでもご連絡ください。
📧 メール: jikimy75@gmail.com
💼 サービス: 導入支援 | 性能チューニング | 障害解析コンサルティング
답글 남기기
댓글을 달기 위해서는 로그인해야합니다.