百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Zabbix 6 系列学习 04:容器方式安装

nanshan 2024-10-08 05:24 6 浏览 0 评论

本文会以两种环境介绍此安装方式,一种是基于 Docker 的方式,第二种是基于 Podman 的方式。

Docker

本文环境

  • 系统:Ubuntu 22.04
  • 容器:Docker

安装 Docker

sudo apt install docker docker.io -y

Ubuntu 安装完成后自动启动服务,无需再次启动,如果存在服务异常可以使用下面命令启动

systemctl start docker

创建容器子网

创建一个桥接的网络子网

sudo docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

启动 Mysql 容器

sudo 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 \
      --restart unless-stopped \
      -d mysql:8.0 \
      --character-set-server=utf8 --collation-server=utf8_bin \
      --default-authentication-plugin=mysql_native_password

启动 Zabbix Server 容器

sudo 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-6.0-latest



启动 Zabbix 前端容器

sudo 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-6.0-latest

查看各容器状态

仅关注状态都是 UP 即可

访问前端

访问服务器的 IP 地址即可,用户名密码为 Admin/zabbix

效果图

问题

由于没有安装 Zabbix Agent ,导致没有监控到任何数据,那么是不是应该装一个 agent 的容器呢?其实不是,容器的 agent 只监控容器本身,而无法体现出宿主机的详细状态,所以需要在服务器原生安装一个 Agent

安装 Agent

1.下载 Zabbix 仓库文件

sudo wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4%2Bubuntu22.04_all.deb2

2.安装 Zabbix 仓库文件

sudo dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb

3.更新仓库文件

sudo apt update -y

4.安装 Zabbix Agent

sudo apt install zabbix-agent -y

5.查看容器 IP

需要切换 root 用户,不切换会提示权限不足问题。

sudo -i
docker inspect -f '{{.Name}} =>{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

6.修改 Zabbix Agent 配置文件

可以看到是 Zabbix Server 的 IP 是172.20.240.2,那么需要修改 Zabbix agent 的配置文件。

vim /etc/zabbix/zabbix_agentd.conf

需要修改两个地方,将 Server 和 ServerActive 的 127.0.0.1 改成 Zabbix Server 容器的 IP

7.重启服务

systemctl restart zabbix-agent

8.前端修改

路径为 Configuration(配置)-》Hosts(主机),点击 Zabbix Server,弹出的界面找到 Agent 填写 IP 处,改为服务器的 IP 地址

9.效果

Podman 方式

Podman 是 RHEL 提供的一种开源的容器编排工具,类似 K8S,目前类 CentOS 自带(8版本后放弃了 Docker ),具体可以参考 Podman 的一些资料。

本文环境

  • CentOS 8 Stream
  • Podman 2.4

安装 Podman

dnf -y install podman

启动服务

systemctl start podman && systemctl enable podman

Podman 配置

1.创建 名称为 Zabbix 的 POD,并暴露 Server 和 WEB 的的端口

podman pod create --name zabbix -p 80:8080 -p 10051:10051

2.创建 mysql 的容器

需要创建./mysql/ 目录

mkdir /data && cd /data
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 mysql:8.0 \
      --character-set-server=utf8 --collation-server=utf8_bin \
      --default-authentication-plugin=mysql_native_password

3.创建 Zabbix Server 的容器

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 zabbix/zabbix-server-mysql:alpine-6.0-latest

4.创建 Zabbix 前端的容器

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 zabbix/zabbix-web-apache-mysql:alpine-6.0-latest

5.创建 Zabbix Agent 容器

podman run --name zabbix-agent \
    -e ZBX_SERVER_HOST="127.0.0.1,localhost" \
    --restart=always \
    --pod=zabbix \
    -d zabbix/zabbix-agent:alpine-6.0-latest

6.查看容器状态

都为 UP 即为正常。

效果

和 docker 的方式基本一样,用户名密码一样 Admin/zabbix

首页

主机页

最新数据


最后

容器部分基本都结束了,除了没有在 K8S 里运行,后续在附加篇幅会提到,安装起来相对简单,但是封装的镜像是个黑盒,对于新人而言,修改配置和优化配置难度较大,适合体验,感谢大家关注我的文章,如果觉得写的对您有帮助,希望帮忙关注与点赞,有任何问题可以留言或者私信我,我会及时回复大家,其次如果存在问题,也可以及时提出指正。

相关推荐

HTTP 和 HTTPS 有何不同?一文带你全面了解

随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...

HTTP和HTTPS的区别?

本文主要讲解http和https的关系与区别,分辨不清区别的同学要注意朝下看完,Web面试中最常问的已到面试题~~一.HTTP和HTTPS的相同点:大多数情况下,HTTP和HTTPS是相同的,...

详解HTTP协议与RESTFUL

1.HTTP简介http协议是一种超文本传输协议,主要应用在浏览器与服务器之间的通信,可以传输文本,图片,视频等。它是一种应用层协议,也是基于TCP协议,当然现在流行的Https协议是在TLS或SSL...

http与https的区别,读完之后,大部分程序员收藏了...

在URL前加https://前缀表明是用SSL加密的。你的电脑与服务器之间收发的信息传输将更加安全。Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。http和ht...

JMeter测试HTTP GET请求(附实例)

一、HTTPRequest配置项解析●WebServer:1.Protocol[http]:○若为HTTP协议可以不填写(默认为HTTP);○若为HTTPS协议可以填写“https”;还可...

2019山东高考分数线公布:本科文503 理443

刚刚,2019年山东高考各批次录取最低分数线公布了!6月24日下午,山东省教育厅举行2019年山东高考第二场新闻发布会。山东省教育招生考试院在发布会上公布了山东今年高招各批次录取控制分数线。其中,本科...

Linux系统网站出现503错误提示怎么解决?

当Linux系统上的网站出现503ServiceUnavailable错误时,通常表示服务器暂时无法处理请求,可能由后端服务崩溃、资源耗尽或配置错误导致。以下是系统化的排查和解决方案:一、...

三石说:一文带你了解Https

今天我们继续深入http,本篇将介绍Https的内容,相信你看过之后对https有一定的了解。HTTPSHTTPS(全称:HyperTextTransferProtocoloverSecu...

HTTP与HTTPS的区别

首先,需要知道HTTP和HTTPS是什么。HTTP是超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,是互联网上应用最为广泛的一种网络协议。也...

Caddy服务器开启HTTP/3:如何让你的网站快如闪电?

Caddy服务器开启HTTP/3:如何让你的网站快如闪电?在互联网技术飞速迭代的今天,HTTP/3正以革命性的姿态颠覆传统网络传输模式。作为首个基于QUIC协议的HTTP标准,它不仅能大幅提升网站加载...

HTTP/1.1、HTTP/2、HTTP/3 演变

HTTP基本概念HTTP是超文本传输协议,也就是HyperTextTransferProtocol。HTTP常见的状态码有哪些?1xx类状态码属于提示信息,是协议处理中的一种中间状态,实际...

HTTP/3 黑科技:三次握手如何进阶 QUIC?30 年通信细节揭秘

大家好,我是“极客运维社”的飞哥,点击右上方“关注”,每天和大家分享关于网络设备及系统和企业组网方面干货。码字不易,如果您觉得文章还可以,就点赞+关注+收藏吧,也许在以后某个时间能够用得到。H...

总结HTTP/HTTPS协议基础的有那些漏洞,怎么检查,怎么防范

以下是基于黑盒测试、白盒测试和灰盒测试视角对HTTP/HTTPS协议漏洞检查与防范的分类整理:一、黑盒测试(外部视角,无内部权限)定义:模拟攻击者视角,仅通过外部网络接口进行测试,不依赖系...

什么是HTTP? HTTP 和 HTTPS 的区别?

HTTP(HyperTextTransferProtocol),即超文本运输协议,是实现网络通信的一种规范。HTTP是一个传输协议,即将数据由A传到B或将B传输到A,并且A与B之间能够存...

一篇文章搞懂HTTP和HTTPS的的本质区别

http协议是基于tcp协议,默认是80端口。它的特点是什么?它是基于请求和响应的,大家抓个包能看到http协议有一个请求报文有一个响应报文,还有它是一个无状态的协议,还有一个无连接的协议。无连接是指...

取消回复欢迎 发表评论: