基于Docker部署Zabbix6.2

资源列表

操作系统配置主机名IP
CentOS 7.92C4Gzabbix192.168.93.101
CentOS 7.92C4gagent192.168.93.102

基础环境

  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
  • 修改主机名
hostnamectl set-hostname zabbix
hostnamectl set-hostname agent

一、首先安装Docker

1.1、部署Docker

# 安装依赖环境
[root@zabbix ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加CentOS阿里云官方镜像站
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 快速建立Yum缓存
[root@zabbix ~]# yum makecache fast

# 安装最新版Docker
[root@zabbix ~]# yum -y install docker-ce docker-ce-cli containerd.io

# 启动Docker
[root@zabbix ~]# systemctl start docker
[root@zabbix ~]# systemctl enable docker

1.2、配置Docker加速器

[root@zabbix ~]# cd /etc/docker/
[root@zabbix docker]# cat >> daemon.json << EOF
{  
"registry-mirrors": ["https://8xpk5wnt.mirror.aliyuncs.com"]  
}
EOF
[root@zabbix docker]# systemctl restart docker

二、部署Zabbix组件介绍

  • zabbix-server:zabbix的server段,负责接收agent发送过来的监控数据,并且提供zabbix的所有核心功能。

  • database:用于存储监控数据和配置信息的数据库,目前常用的有mysql和postgresql两种数据库。

  • zabbix-web:zabbix的UI端口,提供操作控制台和监控展示等功能。

  • zabbix-java-gateway:用于监控Java程序的JVM状态,zabbix本身无法直接从jvm获取监控指标,需要使用该网关来实现。

  • zabbix-agent:zabbix的代理段,部署在目标的主机上,用于收集主机的监控数据,并提交给到zabbix-server。

三、部署Zabbix

3.1、安装数据库容器

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

  • 拉取镜像,zabbix 6.x版本要求使用mysql:8.0

docker pull mysql:8.0
  • 创建存储卷,用于持久化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容器
docker run --name mysql-server -t \
   -v mysql_data:/var/lib/mysql \
      -v mysql_logs:/var/log/mysql \
      -v mysql_conf:/etc/mysql \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      --restart=unless-stopped \
      -d mysql:8.0 \
      --character-set-server=utf8 --collation-server=utf8_bin \
      --default-authentication-plugin=mysql_native_password

3.2、安装zabbix-java-gateway

  • 拉取镜像
docker pull zabbix/zabbix-java-gateway:alpine-6.2-latest
  • 启动容器
[root@zabbix ~]# docker run --name zabbix-java-gateway -t \
   --restart=unless-stopped \
   -d zabbix/zabbix-java-gateway:alpine-6.2-latest

3.3、安装zabbix-server

  • 拉取镜像
docker pull zabbix/zabbix-server-mysql:6.2-alpine-latest
  • 创建数据卷,用于存储zabbix配置文件
docker volume create -d local zabbix_server
  • 启动server容器,开放10051/TCP端口,用于接收监控数据。添加--link参数,实现mysqljava-gateway容器间的相互通信。
[root@zabbix ~]# 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="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      --restart=unless-stopped \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:6.2-alpine-latest

3.4、安装zabbix-web界面

  • 拉取镜像
docker pull zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest
  • 启动web容器
[root@zabbix ~]# 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="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      --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

3.5、查看所有容器状态

[root@zabbix ~]# docker ps -a
CONTAINER ID   IMAGE                                             COMMAND                   CREATED              STATUS              PORTS                                             NAMES
e2ebae0cba95   zabbix/zabbix-web-nginx-mysql:alpine-6.2-latest   "docker-entrypoint.sh"    About a minute ago   Up About a minute   8443/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp   zabbix-web-nginx-mysql
93e0e12a394d   zabbix/zabbix-server-mysql:6.2-alpine-latest      "/sbin/tini -- /usr/…"   3 minutes ago        Up 3 minutes        0.0.0.0:10051->10051/tcp, :::10051->10051/tcp     zabbix-server-mysql
f29030f6ec30   zabbix/zabbix-java-gateway:alpine-6.2-latest      "docker-entrypoint.s…"   13 minutes ago       Up 13 minutes       10052/tcp                                         zabbix-java-gateway
16b08808f20b   mysql:8.0                                         "docker-entrypoint.s…"   15 minutes ago       Up 15 minutes       3306/tcp, 33060/tcp                               mysql-server

四、登录zabbix

  • 访问地址:http://192.168.93.101

  • 登录账号:Admin

  • 登录密码:zabbix
    在这里插入图片描述
    在这里插入图片描述

五、部署被监控端(Agent)

  • 被监控端必须要安装Agent组件,这个组件是用来收集数据提交上监控端的.

5.1、安装Agent

[root@agent ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@agent ~]# yum makecache fast
[root@agent ~]# rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
[root@agent ~]# sed -ie 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#g' /etc/yum.repos.d/zabbix.repo
[root@agent ~]# yum makecache fast
[root@agent ~]# yum -y install zabbix-agent

5.2、编辑Zabbix Agent配置文件

[root@agent ~]# vim /etc/zabbix/zabbix_agentd.conf
# 默认97行,指定server的IP,开启被动模式
Server=192.168.93.101
# 默认138行,指定server的IP,开启主动模式
ServerActive=192.168.93.101
# 默认149行,此名称需要与等会server端的web界面监控的名称一致,这个名称是可以自定义的,但是等会web端如果监控这个主机,那么就需要是使用agent名称进行监控
Hostname=agent

5.3、启动Zabbix Agent

[root@agent ~]# systemctl start zabbix-agent.service 
[root@agent ~]# systemctl enable zabbix-agent.service
[root@agent ~]# netstat -anpt | grep 10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      8444/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      8444/zabbix_agentd  

六、Zabbix Web前端监控Agent主机

6.1、添加主机

  • 在Web界面上依次选择:配置>主机>创建主机
    在这里插入图片描述

在这里插入图片描述

  • 状态过一会如果变成绿色证明监控成功
    在这里插入图片描述
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐