基于Docker部署Zabbix6.2
文章目录
- 基于Docker部署Zabbix6.2
- 资源列表
- 基础环境
- 一、首先安装Docker
- 1.1、部署Docker
- 1.2、配置Docker加速器
- 二、部署Zabbix组件介绍
- 三、部署Zabbix
- 3.1、安装数据库容器
- 3.2、安装zabbix-java-gateway
- 3.3、安装zabbix-server
- 3.4、安装zabbix-web界面
- 3.5、查看所有容器状态
- 四、登录zabbix
- 五、部署被监控端(Agent)
- 5.1、安装Agent
- 5.2、编辑Zabbix Agent配置文件
- 5.3、启动Zabbix Agent
- 六、Zabbix Web前端监控Agent主机
- 6.1、添加主机
资源列表
操作系统 | 配置 | 主机名 | IP |
---|---|---|---|
CentOS 7.9 | 2C4G | zabbix | 192.168.93.101 |
CentOS 7.9 | 2C4g | agent | 192.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
两种数据库,本示例使用支持mysql
的zabbix
版本。 -
拉取镜像,
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
参数,实现mysql
和java-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界面上依次选择:配置>主机>创建主机
- 状态过一会如果变成绿色证明监控成功