Sunday, September 29, 2024

[Zabbix] Triển khai Zabbix bằng Docker

-

1. Tổng quan.

Docker Compose là một công cụ để quản lý và chạy các ứng dụng được xây dựng dựa trên Docker. Nó cho phép bạn định nghĩa và chạy các dịch vụ của ứng dụng trong một tập tin cấu hình duy nhất, giúp tối ưu hóa quá trình triển khai và quản lý các dịch vụ.

Zabbix là một giải pháp quản lý theo dõi hệ thống mã nguồn mở. Nó cung cấp một cách dễ dàng để theo dõi tình trạng và hiệu suất của hệ thống mạng, máy chủ và các dịch vụ. Zabbix cung cấp một giao diện web cho phép bạn quản lý và theo dõi các mục tiêu của hệ thống một cách dễ dàng.

Có một số lý do tại sao bạn nên cài đặt Zabbix sử dụng Docker:

  1. Tiện dụng: Cài đặt và sử dụng Zabbix trong Docker cung cấp một cách đơn giản và nhanh chóng để cài đặt và sử dụng Zabbix trên máy chủ của bạn.
  2. Tái sử dụng: Bạn có thể dễ dàng chia sẻ và tái sử dụng cấu hình Zabbix trên nhiều môi trường khác nhau.
  3. Độc lập với hệ thống: Cài đặt Zabbix trong Docker tách rời Zabbix từ hệ thống của bạn và giúp bạn tránh các vấn đề liên quan đến phụ thuộc vào phần mềm hệ điều hành hoặc cấu hình hệ thống.
  4. Dễ dàng quản lý: Bạn có thể dễ dàng quản lý và theo dõi các dịch vụ của Zabbix sử dụng Docker Compose.
  5. An toàn: Cài đặt Zabbix trong Docker giúp bảo vệ hệ thống của bạn khỏi các tấn công và các lỗ hổng bảo mật.

2. Triển khai Zabbix bằng Docker Run.

Trong hướng dẫn này, chúng ta sẽ chạy Zabbix với cơ sở dữ liệu MariaDB, mặc dù người ta vẫn có thể chạy với PostgreSQL hoặc MySQL.

Ta sẽ có các container sau:

  • MySQL server
  • Zabbix server
  • Zabbix web interface
  • Zabbix proxy
  • Zabbix Java Gateway

Sử dụng docker, bạn chỉ có thể chạy các container như sau:

Bắt đầu bằng cách tạo một network cho tất cả các thành phần Zabbix:

docker network create --subnet 172.1.101.0/24 --ip-range 172.1.101.0/27 zabbix-net

Xác nhận network đã khởi tạo thành công.

$ docker network list
NETWORK ID     NAME         DRIVER    SCOPE
beb7890cd7b1   bridge       bridge    local
b1b1d5457974   host         host      local
0e0aa6e63a87   none         null      local
e40397127b8a   zabbix-net   bridge    local

Bây giờ hãy tạo container MySQL cho Zabbix:

docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbixdb" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="Passw0rd" \
      -e MYSQL_ROOT_PASSWORD="StrongPassword" \
      --network=zabbix-net \
      -d mariadb \
      --character-set-server=utf8 --collation-server=utf8_bin \
      --default-authentication-plugin=mysql_native_password

Container tiếp theo sẽ được triển khai là Zabbix Java gateway.

docker run --name zabbix-java-gateway -t \
      --network=zabbix-net \
      --restart unless-stopped \
      -d zabbix/zabbix-java-gateway:alpine-6.0-latest

Triển khai Zabbix server với MySQL và liên kết nó với phiên bản MySQL đã tạo. Hãy nhớ thay thế các chi tiết chính xác:

docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbixdb" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="Passw0rd" \
      -e MYSQL_ROOT_PASSWORD="StrongPassword" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --network=zabbix-net \
      -p 10051:10051 \
      --restart unless-stopped \
      -d zabbix/zabbix-server-mysql:alpine-6.0-latest

Tạo Zabbix web interface và liên kết nó với máy chủ Zabbix đã tạo và MySQL.

docker run --name zabbix-web-nginx-mysql -t \
      -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbixdb" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="Passw0rd" \
      -e MYSQL_ROOT_PASSWORD="StrongPassword" \
      --network=zabbix-net \
      -p 80:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql:alpine-6.0-latest

Xác minh xem các container có đang chạy không:

$ docker ps
CONTAINER ID   IMAGE                                             COMMAND                  CREATED         STATUS         PORTS                                             NAMES
eb64af99746d   zabbix/zabbix-web-nginx-mysql:alpine-6.0-latest   "docker-entrypoint.sh"   8 minutes ago   Up 8 minutes   8443/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp   zabbix-web-nginx-mysql
d04464af7fa8   zabbix/zabbix-server-mysql:alpine-6.0-latest      "/sbin/tini -- /usr/…"   9 minutes ago   Up 9 minutes   0.0.0.0:10051->10051/tcp, :::10051->10051/tcp     zabbix-server-mysql
a1a78709eaaa   zabbix/zabbix-java-gateway:alpine-6.0-latest      "docker-entrypoint.s…"   9 minutes ago   Up 9 minutes   10052/tcp                                         zabbix-java-gateway
ae717f35b698   mariadb                                           "docker-entrypoint.s…"   9 minutes ago   Up 9 minutes   3306/tcp                                          mysql-server

3. Triển khai Zabbix bằng Docker Compose.

Dưới đây là một tập tin docker-compose.yml mẫu bạn có thể sử dụng để cài đặt Zabbix:

cat > docker-compose.yml << 'OEF'
version: '3.8'

services:
  db:
    image: mariadb:10.7.8
    container_name: zabbix-mysql
    restart: always
    environment:
      MYSQL_DATABASE: zabbix
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
      MYSQL_ROOT_PASSWORD: zabbix
    networks:
      - zabbix_network

  server:
    image: zabbix/zabbix-server-mysql
    container_name: zabbix-server
    restart: always
    environment:
      DB_SERVER_HOST: db
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
      MYSQL_DATABASE: zabbix
    depends_on:
      - db
    ports:
      - "10051:10051"
    networks:
      - zabbix_network

  web:
    image: zabbix/zabbix-web-nginx-mysql
    container_name: zabbix-web
    restart: always
    environment:
      DB_SERVER_HOST: db
      MYSQL_USER: zabbix
      MYSQL_PASSWORD: zabbix
      MYSQL_DATABASE: zabbix
      ZBX_SERVER_HOST: server
      PHP_TZ: "Asia/Ho_Chi_Minh"
    depends_on:
      - server
    ports:
      - "80:80"
      - "8080:8080"
    networks:
      - zabbix_network

networks:
  zabbix_network:
    driver: bridge

OEF

Lưu ý: Thay thế “your_password” bằng mật khẩu mong muốn của bạn trong các biến môi trường.

Với tập tin này, bạn có thể bắt đầu quá trình cài đặt Zabbix bằng cách chạy lệnh docker-compose up -d trong cùng một thư mục với tập tin docker-compose.yml.

Hãy xóa các container đã tạo ở phần trước bằng lệnh dưới.

for i in mysql-server zabbix-java-gateway zabbix-server-mysql zabbix-web-nginx-mysql; do
  docker rm -f $i
done

Khởi chạy Docker Compose.

$ docker-compose up -d
[+] Running 1/1
 ⠿ zabbix-server-mysql Pulled                                                                                                                                                                                         2.7s
[+] Running 5/5
 ⠿ Network root_zbx_net                     Created                                                                                                                                                                   0.1s
 ⠿ Container root-mysql-server-1            Started                                                                                                                                                                   2.3s
 ⠿ Container root-zabbix-java-gateway-1     Started                                                                                                                                                                   1.3s
 ⠿ Container root-zabbix-server-mysql-1     Started                                                                                                                                                                   3.1s
 ⠿ Container root-zabbix-web-nginx-mysql-1  Started 

Xác nhận các container đã chạy.

$ docker-compose ps
NAME                            COMMAND                  SERVICE                  STATUS              PORTS
root-mysql-server-1             "docker-entrypoint.s…"   mysql-server             running             3306/tcp
root-zabbix-java-gateway-1      "docker-entrypoint.s…"   zabbix-java-gateway      running             0.0.0.0:10052->10052/tcp, :::10052->10052/tcp
root-zabbix-server-mysql-1      "/sbin/tini -- /usr/…"   zabbix-server-mysql      running             0.0.0.0:10051->10051/tcp, :::10051->10051/tcp
root-zabbix-web-nginx-mysql-1   "docker-entrypoint.sh"   zabbix-web-nginx-mysql   running             0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp, :::80->8080/tcp, :::443->8443/tcp

4. Bạn cần cho phép các dịch vụ thông qua tường lửa.

##For firewalld
sudo firewall-cmd --permanent --add-port=10051/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --reload

##For UFW
sudo ufw allow 80/tcp
sudo ufw allow 10051/tcp 

5. Truy cập Zabbix 6.0 LTS web UI.

Zabbix 6.0 LTS web UI được hiển thị trên cổng 80 và có thể được truy cập bằng URL http://IP_address hoặc http://domain_name

Đăng nhập bằng thông tin đăng nhập mặc định:

Username: Admin
Password: zabbix

Khi đăng nhập thành công, bạn sẽ có thể xem bảng điều khiển bên dưới:

Chúc các bạn thành công.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories