一、Zabbix架构信息
  1. zabbix-server zabbix 的server 端,负责接收agent发送过来的监控数据,并且提供zabbix的所有核心功能。
  2. database 用于存储监控数据和配置信息的数据库,目前常用的有mysql和postgresql两种数据库。
  3. zabbix-web zabbix的UI端,提供操作控制台和监控展示等功能。
  4. zabbix-java-gateway 用于监控Java程序的JVM状态,zabbix本身无法直接从jvm获取监控指标,需使用该网关来实现。
  5. zabbbix-agent zabbix的代理端,部署在目标主机上,用于收集主机的监控数据,并提供给到zabbix server。
二、安装Docker

1. 配置官方yum源

$ sudo yum install-y yum-utils
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  • 1.
  • 2.
  • 3.
  • 4.

2. 安装Docker

$ sudo yum install docker-ce docker-ce-cli containerd.io
  • 1.

3. 启动Docker

$ sudo systemctl start docker
  • 1.

4. 查看Docker版本号,确认安装正确。

$ docker version
  • 1.
三、部署zabbix组件

zabbix支持mysql/postgresql两种数据库,本示例使用支持mysql的zabbix版本。

1. 安装数据库

下载镜像,zabbix 6.x版本要求使用mysql 8.4.0

$ docker pull mysql:8.4.0
  • 1.

创建存储卷,用于持久化mysql数据。

$ docker volume create-d local  mysql_data #存放mysql数据
$ docker volume create -d local  mysql_logs #存放mysql日志
$ docker volume create -d local  mysql_conf #存放mysql配置文件
  • 1.
  • 2.
  • 3.

注释:存储卷默认存储位置路径为:/var/lib/docker/volume/${volume_name}。

启动容器

docker run--name mysql-server -t \
   -v mysql_data:/var/lib/docker/volumes/mysql_data \
      -v mysql_logs:/var/lib/docker/volumes/mysql_logs \
      -v mysql_conf:/var/lib/docker/volumes/mysql_conf \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="XXXXXXX" \
      -e MYSQL_ROOT_PASSWORD="XXXXXXX" \
      --restart=unless-stopped \
      -d mysql:8.4.0 \
      --character-set-server=utf8 --collation-server=utf8_bin \
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
2. 安装zabbix-java-gateway
$ docker pull zabbix/zabbix-java-gateway:alpine-6.2-latest
  • 1.

启动容器

$ docker run--name zabbix-java-gateway -t \
   --restart=unless-stopped \
      -d zabbix/zabbix-java-gateway:alpine-6.2-latest
  • 1.
  • 2.
  • 3.
3. 安装zabbix-server

下载镜像

$ docker pull zabbix/zabbix-server-mysql:6.2-alpine-latest
  • 1.

创建存储卷,用于存储zabbix配置文件。

$ docker volume create-d local  zabbix_server
  • 1.

启动server容器,开放10051/TCP端口,用于接收监控数据。添加--link参数,实现mysql和java-gateway容器间的互相通信。

$ docker run--name zabbix-server-mysql -t \
    -v zabbix_server:/etc/zabbix \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="XXXXXX" \
      -e MYSQL_ROOT_PASSWORD="XXXXXX" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql-server \
      --link zabbix-java-gateway:zabbix-java-gateway \
      --restart=unless-stopped \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:6.2-alpine-latest
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.

注释:此方式适合所有容器部署在同一台主机上,如果是分开部署,则在前面的步骤需要开放相关端口,并通过局域网进行连接。

4. 安装Zabbix Web 界面

下载镜像

$ docker pull zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest
  • 1.

启动web容器

$ docker run--name zabbix-web-nginx-mysql -t \
   -e PHP_TZ="Asia/Shanghai" \
   -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="XXXXXX" \
      -e MYSQL_ROOT_PASSWORD="XXXXXX" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
5. 登录zabbix

部署完成后,打开浏览器访问主机地址,即可访问zabbix。

登录账号:Admin

密码:zabbix

登录后显示界面,部署完成。

四、安装agent

zabbix agent部署较为简单,你可以使用docker,也可以使用Yum、二进制包等方式安装,此处演示基于docker的安装方式。

下载镜像

$ docker pull zabbix/zabbix-agent:alpine-6.2-latest
  • 1.

创建存储卷,用于存储agent配置文件。

$ docker volume create-d local  zabbix_agent
  • 1.

启动agent容器

$ docker run--name zabbix-agent -t \
      -v zabbix_agent:/etc/zabbix \
      -e ZBX_HOSTNAME="host-01" \
      -e ZBX_SERVER_HOST="192.168.188.158" \ 
      -e ZBX_SERVER_PORT=10051 \
      -p 10050:10050 \
      --restart=unless-stopped \
      --privileged \
      -d zabbix/zabbix-agent:alpine-6.2-latest
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

注释:如果是部署在zabbix Server主机上的监控agent,此时的ZBX_SERVER_HOST需改为zabbix server的容器IP,而不能用主机IP。

五、添加主机

在目标主机安装好agnt后,即可以在zabbix server端配置相关的主机监控。

  1. 点击"Create host”,创建新的主机配置。

基于docker快速搭建zabbix 6.2监控平台_mysql

  1. 配置完成后,静待一会可看到监控目标生效。

基于docker快速搭建zabbix 6.2监控平台_java_02

  1. 查看监控数据,可看到已正常获取。

基于docker快速搭建zabbix 6.2监控平台_docker_03

总结:

相比传统的部署方式,容器化安装无疑是更加方便快捷的选择,学会使用容器来进行部署是一项非常有用的技能。这有利于我们快速地搭建好需要的系统环境,也可以解放技术人员的时间。