2 min read

ZabbixをDockerへ

2026/02追記

最新版はここ

GitHub - sugtao4423/docker-zabbix: ZabbixをDockerへ
ZabbixをDockerへ. Contribute to sugtao4423/docker-zabbix development by creating an account on GitHub.

2023/03/20追記

以下でZabbix Serverに curl を入れているが、それは alertscripts 用。
しかし media-types にてJavaScriptでAPIコールなどをできるためそちらに移行した。
なのでそれらは不要になった。一応打ち消し線をつけておく。

以下記事

Zabbixが5.0にメジャーバージョンアップしたので、これを機にDockerへ移行することにした

Zabbix公式がDockerコンテナを用意してくれているので神。

Zabbix Docker images

使ったコンテナ

  • zabbix/zabbix-server-mysql:alpine-latest
  • zabbix/zabbix-web-nginx-mysql:alpine-latest
  • zabbix/zabbix-agent:alpine-latest

:latest でも alpine のものになる模様。

改良した箇所

既知の通り、グラフで日本語を使うと化けるのでそれの修正とか。

  • グラフで日本語を使った場合の文字化け対策。
  • curl を入れる。(Slackスクリプトなどへの対応。wgetは元から入ってる。)

tree

.
├── alertscripts
│   ├── slack.sh
│   └── and more...
├── docker-compose.yml
├── dockerfiles
│   ├── ZBXFront
│   └── ZBXServer (deleted)
└── mysql-vars.env

ZBXServer

FROM 'zabbix/zabbix-server-mysql:alpine-latest'
USER root
RUN apk --update add curl wget && \
    rm -rf /var/cache/apk/*
USER zabbix

通知スクリプトのための curl を入れるだけ。
wget は元から入ってるけど念の為。

ZBXFront

FROM 'zabbix/zabbix-web-nginx-mysql:alpine-latest'
USER root
RUN wget https://noto-website.storage.googleapis.com/pkgs/NotoSansCJKjp-hinted.zip && \
    mkdir /NotoSansCJKjp && \
    unzip NotoSansCJKjp-hinted.zip -d /NotoSansCJKjp/ && \
    cp /NotoSansCJKjp/NotoSansCJKjp-Regular.otf /usr/share/zabbix/assets/fonts/DejaVuSans.ttf && \
    rm -rf /NotoSansCJKjp NotoSansCJKjp-hinted.zip
USER zabbix

グラフの文字化けを直すためにGoogleフォントの Noto Sans CJK jp を使う。

docker-compose.yml

version: '3.5'

services:
  zabbix-agent:
    image: 'zabbix/zabbix-agent:alpine-latest'
    restart: 'always'

  zabbix-server:
    image: 'zabbix/zabbix-server-mysql:alpine-latest'
    #build:
      #context: './dockerfiles'
      #dockerfile: 'ZBXServer'
    ports:
      - '10051:10051'
    links:
      - 'zabbix-agent'
    volumes:
      - '/etc/localtime:/etc/localtime:ro'
      - '/etc/timezone:/etc/timezone:ro'
      - './alertscripts:/usr/lib/zabbix/alertscripts:ro'
    environment:
      - 'ZBX_ENABLE_SNMP_TRAPS=true'
    env_file: './mysql-vars.env'
    restart: 'always'

  zabbix-web-nginx-mysql:
    #image: 'zabbix/zabbix-web-nginx-mysql:alpine-latest'
    build:
      context: './dockerfiles'
      dockerfile: 'ZBXFront'
    ports:
      - '80:8080'
    links:
      - 'zabbix-server'
    volumes:
      - '/etc/localtime:/etc/localtime:ro'
      - '/etc/timezone:/etc/timezone:ro'
    environment:
      - 'PHP_TZ=Asia/Tokyo'
    env_file: './mysql-vars.env'
    restart: 'always'

文字列をクォーテーションで囲うのは癖なので許せ。

mysql-vars.env

DB_SERVER_HOST=
MYSQL_USER=
MYSQL_PASSWORD=
MYSQL_DATABASE=

おわり

これだけでZabbix構築できるんやぞ。やらん手はないやろ。
全人類Zabbix使え。