如果觉得 Packages 方式安装比较复杂,可以尝试 Docker 版本的安装方式,相比 Docker 方式其实还有更简单的,就是 Appliance 方式,这个方式的原理其实就是下载一个集成 Zabbix 的镜像,大家可以自行尝试。
Docker环境
环境处理
如果您的环境为自己装的系统,需要去掉SELINUX和防火墙的因素干扰,由于为测试环境,所以做如下处理(如果为生产环境,谨慎关闭)
代码语言:javascript复制sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld && systemctl disable firewalld
环境
- 系统版本:CentOS 7
- Docker 版本:1.13
- Zabbix 版本:6.0 beta2
安装 Docker
代码语言:javascript复制yum -y install docker
启动 Docker 并设置为开机启动
代码语言:javascript复制systemctl start docker && systemctl enable docker
创建 Zabbix 所需子网
网段需要自行规划
代码语言:javascript复制docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
创建 Mysql docker 容器
代码语言:javascript复制docker run --name mysql-server -t
-e MYSQL_DATABASE="zabbix"
-e MYSQL_USER="zabbix"
-e MYSQL_PASSWORD="xiaoyu123"
-e MYSQL_ROOT_PASSWORD="xiaoyu123"
--network=zabbix-net
-d mysql:8.0
--character-set-server=utf8 --collation-server=utf8_bin
--default-authentication-plugin=mysql_native_password
创建 Zabbix Server 容器
代码语言:javascript复制docker run --name zabbix-server-mysql -t
-e DB_SERVER_HOST="mysql-server"
-e MYSQL_DATABASE="zabbix"
-e MYSQL_USER="zabbix"
-e MYSQL_PASSWORD="xiaoyu123"
-e MYSQL_ROOT_PASSWORD="xiaoyu123"
--network=zabbix-net
-p 10051:10051
--restart unless-stopped
-d zabbix/zabbix-server-mysql:alpine-trunk
下面为 tags 字段,不同 tag 对应不同的的版本
创建 Zabbix 前端容器
代码语言:javascript复制docker run --name zabbix-web-nginx-mysql -t
-e ZBX_SERVER_HOST="zabbix-server-mysql"
-e DB_SERVER_HOST="mysql-server"
-e MYSQL_DATABASE="zabbix"
-e MYSQL_USER="zabbix"
-e MYSQL_PASSWORD="xiaoyu123"
-e MYSQL_ROOT_PASSWORD="xiaoyu123"
--network=zabbix-net
-p 80:8080
--restart unless-stopped
-d zabbix/zabbix-web-nginx-mysql:alpine-trunk
效果
这里会出现 Zabbix agent未运行,由于采用的是 docker 环境,如果单启动一个 agent 容器仅仅是监控容器,所以需要对宿主机进行安装 agent。
安装 Zabbix 源
代码语言:javascript复制cat <<EOF > /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.5/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
EOF
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl https://mirrors.tuna.tsinghua.edu.cn/zabbix/RPM-GPG-KEY-ZABBIX
-o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
安装 Zabbix agent
代码语言:javascript复制yum -y install zabbix-agent2
查看 Zabbix Server 容器 IP
记住 Zabbix Server 容器 IP 的地址。
代码语言:javascript复制docker inspect b9d115428089 | grep IPAddress
编辑 Zabbix agent 配置文件
代码语言:javascript复制vim /etc/zabbix/zabbix_agentd2.conf
grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
(通过该命令查看有效配置)
启动 Zabbix agent 及开机自启
代码语言:javascript复制systemctl start zabbix-agent2 && systemctl enable zabbix-agent2
前端配置文件修改
由于前端的 Zabbix server 的配置里为 127.0.0.1,而环境为Docker,所以默认会报如下的错,此时需要修改为主机的 IP 地址
通过 ipconfig 查找本机IP,并将前端里的 127.0.0.1 修改为主机地址
最终效果
Podman 环境
环境处理
如果您的环境为自己装的系统,需要去掉SELINUX和防火墙的因素干扰,由于为测试环境,所以做如下处理(如果为生产环境,谨慎关闭)
代码语言:javascript复制sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl stop firewalld && systemctl disable firewalld
环境
- 系统版本:CentOS 8
- 容器:podman 3.2.3
- Zabbix 版本:6.0 beta2
安装 podman
CentOS 8 默认去除掉了 Docker,取而代之的为podman,有兴趣的朋友可以了解下。
代码语言:javascript复制dnf -y install docker
启动容器
代码语言:javascript复制systectl start podman && systemctl enable podman
创建 Zabbix Pod 并暴露相对应的接口(前端和 Server 端口)
代码语言:javascript复制podman pod create --name zabbix -p 80:8080 -p 10051:10051
创建 Zabbix agent
代码语言:javascript复制podman run --name zabbix-agent
-e ZBX_SERVER_HOST="127.0.0.1,localhost"
--restart=always
--pod=zabbix
-d docker.io/zabbix/zabbix-agent:alpine-trunk
创建 Mysql
创建 mysql 目录,这里是在当前目录下创建
代码语言:javascript复制mkdir mysql
podman run --name mysql-server -t
-e MYSQL_DATABASE="zabbix"
-e MYSQL_USER="zabbix"
-e MYSQL_PASSWORD="xiaoyu123"
-e MYSQL_ROOT_PASSWORD="xiaoyu123"
-v ./mysql/:/var/lib/mysql/:Z
--restart=always
--pod=zabbix
-d docker.io/library/mysql:8.0
--character-set-server=utf8 --collation-server=utf8_bin
--default-authentication-plugin=mysql_native_password
创建 Zabbix Server
代码语言:javascript复制podman run --name zabbix-server-mysql -t
-e DB_SERVER_HOST="127.0.0.1"
-e MYSQL_DATABASE="zabbix"
-e MYSQL_USER="zabbix"
-e MYSQL_PASSWORD="xiaoyu123"
-e MYSQL_ROOT_PASSWORD="xiaoyu123"
--restart=always
--pod=zabbix
-d docker.io/zabbix/zabbix-server-mysql
创建 Zabbix 前端
代码语言:javascript复制podman run --name zabbix-web-mysql -t
-e ZBX_SERVER_HOST="127.0.0.1"
-e DB_SERVER_HOST="127.0.0.1"
-e MYSQL_DATABASE="zabbix"
-e MYSQL_USER="zabbix"
-e MYSQL_PASSWORD="xiaoyu123"
-e MYSQL_ROOT_PASSWORD="xiaoyu123"
--restart=always
--pod=zabbix
-d docker.io/zabbix/zabbix-web-nginx-mysql
访问前端
写在最后
看到这里大家会发现 CentOS 8 相比 7 少了一个本地 agent 安装的步骤,大家可以自行思考下,为什么会是这个情况,另外呢官方提供了 docker-compose 方式,但实际来看要求比较高,需要部分修改,所以就不写出来了,同时官方也提供 K8S 的安装方式,大家可以自行尝试.