Zabbix 随笔:安装篇(四)

2022-02-16 18:40:17 浏览数 (1)

如果觉得 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 的安装方式,大家可以自行尝试.

0 人点赞