- リポジトリをインストール
- Dockerをインストール
- Docker composeのインストール
- gitをインストール
- firewalldの設定
- ZabbixのGitHubのリポジトリをclone
- docker-compose.yamlを編集
- zabbix のコンテナを起動する
- コンテナ起動状況確認
- Zabbixにログインする
【リポジトリをインストール】
# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
【Dockerをインストール】
# yum install -y docker-ce docker-ce-cli containerd.io --allowerasing
# systemctl start docker
# systemctl status docker
# systemctl enable docker
# docker --version
Docker version 20.10.2, build 2291f61
《参考ページ》
https://zenn.dev/ymasaoka/articles/install-docker-centos-7
https://docs.docker.com/engine/install/centos/
【Docker composeのインストール】
# curl -L "https://github.com/docker/compose/releases/download/1.28.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose
# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# docker-compose --version
docker-compose version 1.28.0, build d02a7b1a
《参考ページ》
https://zenn.dev/ymasaoka/articles/install-docker-compose-centos-7
https://docs.docker.com/compose/install/
【gitをインストール】
# yum install git
【firewalldの設定】
Port 8081(http)、Port 8443(https),Port 162(SNMP Trap)用のポートを開放する。8081、8443用のxmlファイルを作成する。※既存のxmlファイルをコピーして編集する。
IPマスカレードを有効にする。※これを忘れるとコンテナおよびSQLへの通信ができない。
# vi /usr/lib/firewalld/services/http-8081.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>WWW (HTTP)</short>
<description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description>
<port protocol="tcp" port="80"/>
</service>
# vi /usr/lib/firewalld/services/https-8443.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Secure WWW (HTTPS) 8443</short>
<description>HTTPS is a modified HTTP used to serve Web pages when security is important. Examples are sites that require logins like stores or web mail. This option is not required for viewing pages locally or developing Web pages. You need the httpd package installed for this option to be useful.</description>
<port protocol="tcp" port="8443"/>
</service>
# firewall-cmd --add-masquerade --permanent
# firewall-cmd --zone=public --add-service=http-8081
# firewall-cmd --zone=public --add-service=https-8443
# firewall-cmd --zone=public --add-service=snmptrap
# firewall-cmd --reload
【ZabbixのGitHubのリポジトリをclone】
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker
cp docker-compose_v3_centos_mysql_latest.yaml docker-compose.yaml
【docker-compose.yamlを編集】
SQLはMySQLを使用、フロントエンドはnginxを使用するため、それ以外はコメント化にする。
# vi docker-compose.yaml
version: '3.5'
services:
zabbix-server:
image: zabbix/zabbix-server-mysql:centos-5.2-latest
ports:
- "10051:10051"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro
- ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
- ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw
- ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
- ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
- ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
- ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
- snmptraps:/var/lib/zabbix/snmptraps:rw
links:
- mysql-server:mysql-server
- zabbix-java-gateway:zabbix-java-gateway
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
deploy:
resources:
limits:
cpus: '0.70'
memory: 1G
reservations:
cpus: '0.5'
memory: 512M
env_file:
- .env_db_mysql
- .env_srv
secrets:
- MYSQL_USER
- MYSQL_PASSWORD
- MYSQL_ROOT_PASSWORD
# - client-key.pem
# - client-cert.pem
# - root-ca.pem
depends_on:
- mysql-server
- zabbix-java-gateway
- zabbix-snmptraps
networks:
zbx_net_backend:
aliases:
- zabbix-server
- zabbix-server-mysql
- zabbix-server-centos-mysql
- zabbix-server-mysql-centos
zbx_net_frontend:
# devices:
# - "/dev/ttyUSB0:/dev/ttyUSB0"
stop_grace_period: 30s
sysctls:
- net.ipv4.ip_local_port_range=1024 65000
- net.ipv4.conf.all.accept_redirects=0
- net.ipv4.conf.all.secure_redirects=0
- net.ipv4.conf.all.send_redirects=0
labels:
com.zabbix.description: "Zabbix server with MySQL database support"
com.zabbix.company: "Zabbix LLC"
com.zabbix.component: "zabbix-server"
com.zabbix.dbtype: "mysql"
com.zabbix.os: "centos"
# zabbix-proxy-sqlite3:
# image: zabbix/zabbix-proxy-sqlite3:centos-5.2-latest
# ports:
# - "10061:10051"
# volumes:
# - /etc/localtime:/etc/localtime:ro
# - /etc/timezone:/etc/timezone:ro
# - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
# - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
# - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
# - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
# - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
# - snmptraps:/var/lib/zabbix/snmptraps:rw
# links:
# - zabbix-server:zabbix-server
# - zabbix-java-gateway:zabbix-java-gateway
# ulimits:
# nproc: 65535
# nofile:
# soft: 20000
# hard: 40000
# deploy:
# resources:
# limits:
# cpus: '0.70'
# memory: 512M
# reservations:
# cpus: '0.3'
# memory: 256M
# env_file:
# - .env_prx
# - .env_prx_sqlite3
# depends_on:
# - zabbix-java-gateway
# - zabbix-snmptraps
# networks:
# zbx_net_backend:
# aliases:
# - zabbix-proxy-sqlite3
# - zabbix-proxy-centos-sqlite3
# - zabbix-proxy-sqlite3-centos
# zbx_net_frontend:
# stop_grace_period: 30s
# labels:
# com.zabbix.description: "Zabbix proxy with SQLite3 database support"
# com.zabbix.company: "Zabbix LLC"
# com.zabbix.component: "zabbix-proxy"
# com.zabbix.dbtype: "sqlite3"
# com.zabbix.os: "centos"
#
# zabbix-proxy-mysql:
# image: zabbix/zabbix-proxy-mysql:centos-5.2-latest
# ports:
# - "10071:10051"
# volumes:
# - /etc/localtime:/etc/localtime:ro
# - /etc/timezone:/etc/timezone:ro
# - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
# - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
# - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
# - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
# - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
# - snmptraps:/var/lib/zabbix/snmptraps:rw
# links:
# - zabbix-server:zabbix-server
# - zabbix-java-gateway:zabbix-java-gateway
# ulimits:
# nproc: 65535
# nofile:
# soft: 20000
# hard: 40000
# deploy:
# resources:
# limits:
# cpus: '0.70'
# memory: 512M
# reservations:
# cpus: '0.3'
# memory: 256M
# env_file:
# - .env_db_mysql_proxy
# - .env_prx
# - .env_prx_mysql
# depends_on:
# - mysql-server
# - zabbix-java-gateway
# - zabbix-snmptraps
# secrets:
# - MYSQL_USER
# - MYSQL_PASSWORD
# - MYSQL_ROOT_PASSWORD
# - client-key.pem
# - client-cert.pem
# - root-ca.pem
# networks:
# zbx_net_backend:
# aliases:
# - zabbix-proxy-mysql
# - zabbix-proxy-centos-mysql
# - zabbix-proxy-mysql-centos
# zbx_net_frontend:
# stop_grace_period: 30s
# labels:
# com.zabbix.description: "Zabbix proxy with MySQL database support"
# com.zabbix.company: "Zabbix LLC"
# com.zabbix.component: "zabbix-proxy"
# com.zabbix.dbtype: "mysql"
# com.zabbix.os: "centos"
# zabbix-web-apache-mysql:
# image: zabbix/zabbix-web-apache-mysql:centos-5.2-latest
# ports:
# - "80:8080"
# - "443:8443"
# links:
# - mysql-server:mysql-server
# - zabbix-server:zabbix-server
# volumes:
# - /etc/localtime:/etc/localtime:ro
# - /etc/timezone:/etc/timezone:ro
# - ./zbx_env/etc/ssl/apache2:/etc/ssl/apache2:ro
# - ./zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro
# deploy:
# resources:
# limits:
# cpus: '0.70'
# memory: 512M
# reservations:
# cpus: '0.5'
# memory: 256M
# env_file:
# - .env_db_mysql
# - .env_web
# secrets:
# - MYSQL_USER
# - MYSQL_PASSWORD
## - client-key.pem
## - client-cert.pem
## - root-ca.pem
# depends_on:
# - mysql-server
# - zabbix-server
# healthcheck:
# test: ["CMD", "curl", "-f", "http://localhost:8080/"]
# interval: 10s
# timeout: 5s
# retries: 3
# start_period: 30s
# networks:
# zbx_net_backend:
# aliases:
# - zabbix-web-apache-mysql
# - zabbix-web-apache-centos-mysql
# - zabbix-web-apache-mysql-centos
# zbx_net_frontend:
# stop_grace_period: 10s
# sysctls:
# - net.core.somaxconn=65535
# labels:
# com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support"
# com.zabbix.company: "Zabbix LLC"
# com.zabbix.component: "zabbix-frontend"
# com.zabbix.webserver: "apache2"
# com.zabbix.dbtype: "mysql"
# com.zabbix.os: "centos"
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:centos-5.2-latest
ports:
- "8081:8080"
- "8443:8443"
links:
- mysql-server:mysql-server
- zabbix-server:zabbix-server
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro
- ./zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro
deploy:
resources:
limits:
cpus: '0.70'
memory: 512M
reservations:
cpus: '0.5'
memory: 256M
env_file:
- .env_db_mysql
- .env_web
secrets:
- MYSQL_USER
- MYSQL_PASSWORD
# - client-key.pem
# - client-cert.pem
# - root-ca.pem
depends_on:
- mysql-server
- zabbix-server
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
networks:
zbx_net_backend:
aliases:
- zabbix-web-nginx-mysql
- zabbix-web-nginx-centos-mysql
- zabbix-web-nginx-mysql-centos
zbx_net_frontend:
stop_grace_period: 10s
sysctls:
- net.core.somaxconn=65535
labels:
com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support"
com.zabbix.company: "Zabbix LLC"
com.zabbix.component: "zabbix-frontend"
com.zabbix.webserver: "nginx"
com.zabbix.dbtype: "mysql"
com.zabbix.os: "centos"
zabbix-agent:
image: zabbix/zabbix-agent:centos-5.2-latest
ports:
- "10050:10050"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./zbx_env/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro
- ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
- ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
- ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
links:
- zabbix-server:zabbix-server
deploy:
resources:
limits:
cpus: '0.2'
memory: 128M
reservations:
cpus: '0.1'
memory: 64M
mode: global
env_file:
- .env_agent
privileged: true
pid: "host"
networks:
zbx_net_backend:
aliases:
- zabbix-agent
- zabbix-agent-passive
- zabbix-agent-centos
stop_grace_period: 5s
labels:
com.zabbix.description: "Zabbix agent"
com.zabbix.company: "Zabbix LLC"
com.zabbix.component: "zabbix-agentd"
com.zabbix.os: "centos"
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:centos-5.2-latest
ports:
- "10052:10052"
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
reservations:
cpus: '0.25'
memory: 256M
env_file:
- .env_java
networks:
zbx_net_backend:
aliases:
- zabbix-java-gateway
- zabbix-java-gateway-centos
stop_grace_period: 5s
labels:
com.zabbix.description: "Zabbix Java Gateway"
com.zabbix.company: "Zabbix LLC"
com.zabbix.component: "java-gateway"
com.zabbix.os: "centos"
zabbix-snmptraps:
image: zabbix/zabbix-snmptraps:centos-5.2-latest
ports:
- "162:1162/udp"
volumes:
- snmptraps:/var/lib/zabbix/snmptraps:rw
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
reservations:
cpus: '0.25'
memory: 128M
networks:
zbx_net_frontend:
aliases:
- zabbix-snmptraps
zbx_net_backend:
stop_grace_period: 5s
labels:
com.zabbix.description: "Zabbix snmptraps"
com.zabbix.company: "Zabbix LLC"
com.zabbix.component: "snmptraps"
com.zabbix.os: "centos"
mysql-server:
image: mysql:8.0
command:
- mysqld
- --character-set-server=utf8
- --collation-server=utf8_bin
- --default-authentication-plugin=mysql_native_password
# - --require-secure-transport
# - --ssl-ca=/run/secrets/root-ca.pem
# - --ssl-cert=/run/secrets/server-cert.pem
# - --ssl-key=/run/secrets/server-key.pem
volumes:
- ./zbx_env/var/lib/mysql:/var/lib/mysql:rw
env_file:
- .env_db_mysql
secrets:
- MYSQL_USER
- MYSQL_PASSWORD
- MYSQL_ROOT_PASSWORD
# - server-key.pem
# - server-cert.pem
# - root-ca.pem
stop_grace_period: 1m
networks:
zbx_net_backend:
aliases:
- mysql-server
- zabbix-database
- mysql-database
db_data_mysql:
image: busybox
volumes:
- ./zbx_env/var/lib/mysql:/var/lib/mysql:rw
# elasticsearch:
# image: elasticsearch
# environment:
# - transport.host=0.0.0.0
# - discovery.zen.minimum_master_nodes=1
# networks:
# zbx_net_backend:
# aliases:
# - elasticsearch
networks:
zbx_net_frontend:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "false"
ipam:
driver: default
config:
- subnet: 172.16.238.0/24
zbx_net_backend:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "false"
internal: true
ipam:
driver: default
config:
- subnet: 172.16.239.0/24
volumes:
snmptraps:
secrets:
MYSQL_USER:
file: ./.MYSQL_USER
MYSQL_PASSWORD:
file: ./.MYSQL_PASSWORD
MYSQL_ROOT_PASSWORD:
file: ./.MYSQL_ROOT_PASSWORD
# client-key.pem:
# file: ./.ZBX_DB_KEY_FILE
# client-cert.pem:
# file: ./.ZBX_DB_CERT_FILE
# root-ca.pem:
# file: ./.ZBX_DB_CA_FILE
# server-cert.pem:
# file: ./.DB_CERT_FILE
# server-key.pem:
# file: ./.DB_KEY_FILE
【zabbix のコンテナを起動する】
docker-compose pullでimageをpullする。
docker-compose imagesで確認する。
docker-compose up -dでコンテナ起動する。
docker-compose logs -fで起動状態を確認する。
# docker-compose pull
# docker-compose images
Container Repository Tag Image Id Size
--------------------------------------------------------------------------------------------------------------------
zabbix-docker_db_data_mysql_1 busybox latest b97242f89c8a 1.232 MB
zabbix-docker_mysql-server_1 mysql 8.0 c8562eaf9d81 546.1 MB
zabbix-docker_zabbix-agent_1 zabbix/zabbix-agent centos-5.2-latest deeaabf17a9a 240.3 MB
zabbix-docker_zabbix-java-gateway_1 zabbix/zabbix-java-gateway centos-5.2-latest f7ce98cfb3b8 398.3 MB
zabbix-docker_zabbix-server_1 zabbix/zabbix-server-mysql centos-5.2-latest f5edea6478bf 348.3 MB
zabbix-docker_zabbix-snmptraps_1 zabbix/zabbix-snmptraps centos-5.2-latest 8fc514b6a712 251.2 MB
zabbix-docker_zabbix-web-nginx-mysql_1 zabbix/zabbix-web-nginx-mysql centos-5.2-latest 3ae562ceafb9 447.4 MB
# docker-compose up -d
# docker-compose logs -f
《参考ページ》
https://qiita.com/zembutsu/items/d98099bf68399c56c236
https://www.zabbix.com/documentation/current/manual/installation/containers#docker_compose
https://github.com/zabbix/zabbix-docker
https://github.com/docker/compose/releases
【コンテナ起動状況確認】
sh以外はupになっている事を確認する。
# docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------------------------------------
zabbix-docker_db_data_mysql_1 sh Exit 0
zabbix-docker_mysql-server_1 docker-entrypoint.sh mysql ... Up
zabbix-docker_zabbix-agent_1 /sbin/tini -- /usr/bin/doc ... Up
zabbix-docker_zabbix-java-gateway_1 docker-entrypoint.sh /usr/ ... Up
zabbix-docker_zabbix-server_1 /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10051->10051/tcp
zabbix-docker_zabbix-snmptraps_1 /usr/sbin/snmptrapd -n -C ... Up 0.0.0.0:162->1162/udp
zabbix-docker_zabbix-web-nginx-mysql_1 docker-entrypoint.sh Up (healthy) 0.0.0.0:8081->8080/tcp, 0.0.0.0:8443->8443/tcp
【Zabbixにログインする】
WebブラウザでZabbixにログインする。
Username : Admin
Password : zabbix


No Responses