Zabbixの簡単導入

# 背景
自宅サーバーを購入したのでサーバー内VMの各監視を行っていきたい
監視ツールの一つとしてZabbixがある

# 環境
Ubuntu 22.04.4 LTS
Docker 27.0.2

# 手順
## 準備
:::note info
info
必要に応じて対応してください
:::

```bash
sudo apt-get update
sudo apt-get install -y curl
sudo apt-get install -y vim
```
## Zabbixインストール
作業ディレクトリは任意ですが、今回は`/opt/`に作成します
zabbixのリポジトリを[公式サイト](https://github.com/zabbix/zabbix-docker)から取得
```/opt/
git clone https://github.com/zabbix/zabbix-docker.git
```
配下に`zabbix-docker`ディレクトリができたはず

中身を見てみよう
```/opt/
cd zabbix-docker
ls -la
```
:::note warn
注意
権限の確認をしてください
```/opt/
sudo chown -R <ユーザー名>:<ユーザー名> /opt/zabbix-docker/
```
:::

```/opt/zabbix-docker
git branch
```
`* 7.0`と出力されるが、別のバージョンを選択する場合は`git checkout`で選択してください

:::note warn
注意
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
```

<details open><summary>サンプル</summary>

```
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

```
</details>

最後に起動させてみましょう
```
docker compose up -d
```
エラーが出なければ成功です

# 確認
コンテナの状況はどうでしょう
```
dokcer ps -a
```

:::note info
info
`zabbix-docker-db-data-mysql-1`は動いていなくて問題なしです
`always`設定でリスタートを繰り返していたら止めてあげましょう
```
docker stop <コンテナID>
```
:::

コンテナ間のNWはどうなっているのか見てみましょう
```
docker network ls
docker network inspect zabbix-docker_default
```

最後に画面表示を見てみましょう
[htttp://localhost](htttp://localhost)
開けたら完了です！

ログインの初期値は`Admin`/`zabbix`です