背景
自宅サーバーを購入したのでサーバー内VMの各監視を行っていきたい
監視ツールの一つとしてZabbixがある
環境
Ubuntu 22.04.4 LTS
Docker 27.0.2
手順
準備
info
必要に応じて対応してください
sudo apt-get update
sudo apt-get install -y curl
sudo apt-get install -y vim
Zabbixインストール
作業ディレクトリは任意ですが、今回は/opt/
に作成します
zabbixのリポジトリを公式サイトから取得
git clone https://github.com/zabbix/zabbix-docker.git
配下にzabbix-docker
ディレクトリができたはず
中身を見てみよう
cd zabbix-docker
ls -la
注意
権限の確認をしてください
sudo chown -R <ユーザー名>:<ユーザー名> /opt/zabbix-docker/
git branch
* 7.0
と出力されるが、別のバージョンを選択する場合はgit checkout
で選択してください
注意
gitコマンドでエラーが発生する可能性があるので、以下で対応
git config --global --add safe.directory /opt/zabbix-docker
シンボリックリンクが貼られているので一旦削除し、zabbixの構成を選択してcompose.yaml
にコピー
(今回はcentOS + MySQLの構成を選択)
rm -rf docker-compose.yaml
cp docker-compose_v3_centos_mysql_latest.yaml docker-compose.yaml
使わないないものは削除していきましょう
rm -rf docker-compose_v3_alpine_*
rm -rf docker-compose_v3_ol_*
rm -rf docker-compose_v3_ubuntu_*
rm -rf docker-compose_v3_centos_pgsql_*
rm -rf docker-compose_v3_centos_mysql_local.yaml
docker-compose.yaml
を修正します
これもいらないのは削除します
vim docker-compose.yaml
サンプル
services:
zabbix-server:
extends:
file: compose_zabbix_components.yaml
service: server-mysql
image: "${ZABBIX_SERVER_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}"
volumes:
- /etc/timezone:/etc/timezone:ro
depends_on:
- mysql-server
labels:
com.zabbix.os: "${CENTOS_OS_TAG}"
restart: always
zabbix-web-nginx-mysql:
extends:
file: compose_zabbix_components.yaml
service: web-nginx-mysql
image: "${ZABBIX_WEB_NGINX_MYSQL_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}"
volumes:
- /etc/timezone:/etc/timezone:ro
depends_on:
- mysql-server
labels:
restart: always
zabbix-web-service:
extends:
file: compose_zabbix_components.yaml
service: web-service
image: "${ZABBIX_WEB_SERVICE_IMAGE}:${ZABBIX_CENTOS_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}"
labels:
com.zabbix.os: "${CENTOS_OS_TAG}"
restart: always
mysql-server:
extends:
file: compose_databases.yaml
service: mysql-server
restart: always
db-data-mysql:
extends:
file: compose_databases.yaml
service: db-data-mysql
restart: always
networks:
frontend:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "${FRONTEND_ENABLE_IPV6}"
ipam:
driver: "${FRONTEND_NETWORK_DRIVER}"
config:
- subnet: "${FRONTEND_SUBNET}"
backend:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "${BACKEND_ENABLE_IPV6}"
internal: true
ipam:
driver: "${BACKEND_NETWORK_DRIVER}"
config:
- subnet: "${BACKEND_SUBNET}"
database:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "${DATABASE_NETWORK_ENABLE_IPV6}"
internal: true
ipam:
driver: "${DATABASE_NETWORK_DRIVER}"
tools_frontend:
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "${ADD_TOOLS_ENABLE_IPV6}"
ipam:
driver: "${ADD_TOOLS_NETWORK_DRIVER}"
config:
- subnet: "${ADD_TOOLS_SUBNET}"
volumes:
snmptraps:
# dbsocket:
secrets:
MYSQL_USER:
file: ${ENV_VARS_DIRECTORY}/.MYSQL_USER
MYSQL_PASSWORD:
file: ${ENV_VARS_DIRECTORY}/.MYSQL_PASSWORD
MYSQL_ROOT_USER:
file: ${ENV_VARS_DIRECTORY}/.MYSQL_ROOT_USER
MYSQL_ROOT_PASSWORD:
file: ${ENV_VARS_DIRECTORY}/.MYSQL_ROOT_PASSWORD
# client-key.pem:
# file: ${ENV_VARS_DIRECTORY}/.ZBX_DB_KEY_FILE
# client-cert.pem:
# file: ${ENV_VARS_DIRECTORY}/.ZBX_DB_CERT_FILE
# root-ca.pem:
# file: ${ENV_VARS_DIRECTORY}/.ZBX_DB_CA_FILE
# server-cert.pem:
# file: ${ENV_VARS_DIRECTORY}/.DB_CERT_FILE
# server-key.pem:
# file: ${ENV_VARS_DIRECTORY}/.DB_KEY_FILE
最後に起動させてみましょう
docker compose up -d
エラーが出なければ成功です
確認
コンテナの状況はどうでしょう
dokcer ps -a
info
zabbix-docker-db-data-mysql-1
は動いていなくて問題なしです
always
設定でリスタートを繰り返していたら止めてあげましょう
docker stop <コンテナID>
コンテナ間のNWはどうなっているのか見てみましょう
docker network ls
docker network inspect zabbix-docker_default
最後に画面表示を見てみましょう
htttp://localhost
開けたら完了です!
ログインの初期値はAdmin
/zabbix
です