如何在OpenEuler 上快速部署一套Zabbix7.0监控系统
本文最后更新于 2024-07-05,文章内容可能已经过时。
如何在OpenEuler 上快速部署一套Zabbix监控系统
一、环境信息
用途 | 机器IP | 操作系统 | 备注 |
---|---|---|---|
zabbix-server | 172.22.33.180 | openeuler 22.03 LTS SP3 | 7.0 LTS 版本,容器部署 |
zabbix-agent | 172.16.10.182 | openeuler 22.03 LTS SP3 | 7.0 源码编译部署 |
二、Docker 部署
2.1 二进制包下载
wget https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz
2.2 解压,拷贝至/usr/bin 下
tar -xf docker-19.03.9.tgz
cp docker/* /usr/bin
which docker
2.3 编写docker.service文件
vim /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
备注: 如果想要修改 docker
默认 存储路径
,不推荐此方式,建议保留 /var/lib/docker
,使用 软连接
的方式
2.4 添加可执行权限
chmod +x /etc/systemd/system/docker
2.5 启动,加载,开机自启动
systemctl daemon-reload
systemctl start docker
systemctl enable docker
2.6 配置镜像加速器
请自行准备加速地址[2024年6月]
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxxxxx/"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
三、docker-compose 部署
3.1 docker 和 docker-compose 的版本对应关系
- https://docs.docker.com/compose/compose-file/compose-versioning/#version-1-to-2x
3.2 安装docker-compose
#从GitHub上 下载docker-compose 二进制包
root@manager:~# wget https://github.com/docker/compose/releases/download/1.29.0/docker-compose-Linux-x86_64
#把下载下来的软件包上传到/root 路径下
root@manager:~# mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
root@manager:~# chmod +x /usr/bin/docker-compose
#安装后查看下版本
root@manager:~# docker-compose version
docker-compose version 1.29.0, build 07737305
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
四、安装部署zabbix-server
4.1 zabbix7.0新功能描述
更多内容源于zabbix官网,更多详情:
https://www.zabbix.com/documentation/current/zh/manual/introduction/whatsnew700
4.2 zabbix7.0安装要求
更多内容源于zabbix官网,更多详情:
https://www.zabbix.com/documentation/current/en/manual/installation/requirements
4.3 zabbix7.0容器化安装方式
更多内容源于zabbix官网,更多详情:
https://www.zabbix.com/documentation/current/en/manual/installation/containers
Zabbix 提供基于各种操作系统基础映像的映像。要获取特定 Zabbix 组件支持的基础操作系统映像列表,请参阅Docker Hub中的组件描述。所有 Zabbix 映像都配置为在基础映像更新时重建最新映像。
此外还需要 PostgreSQL 数据库支持的 Zabbix serve 运行
4.3.1 使用docker-compose运行zabbix-server
这里我没用创建单独的容器网络,直接使用宿主机网络通信,注意宿主机上的端口,切莫端口冲突
- 创建zabbix工作目录
mkdir -p /home/application/zabbix
- 创建docker-compose.yaml 文件 **
vim /home/application/zabbix/docker-compose.yaml
**- 注意自定义修改pg数据库的密码
- postgres_data 数据库的数据目录,单独挂载在zabbix 的工作目录的postgres_data 下,也就是,
/home/application/zabbix/postgres_data
- zabbix 的 zabbix_alertscripts 自定义警报脚本,单独挂载在zabbix 的工作目录的zabbix_alertscripts 下,也就是,
/home/application/zabbix/zabbix_alertscripts
- 网络模式,宿主机模式
version: "3"
services:
postgres:
image: postgres:15.7-alpine
container_name: zabbix-postgres
environment:
POSTGRES_DB: zabbix
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: srebro.cn
command: -c max_connections=2000
restart: always
volumes:
- ./postgres_data:/var/lib/postgresql/data
network_mode: host
zabbix-server:
image: zabbix/zabbix-server-pgsql:7.0-alpine-latest
#image: zabbix/zabbix-server-pgsql:7.0-ubuntu-latest-new
container_name: zabbix-server
environment:
DB_SERVER_HOST: 127.0.0.1
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: srebro.cn
POSTGRES_DB: zabbix
TZ: Asia/Shanghai
volumes:
- ./zabbix_alertscripts:/usr/lib/zabbix/alertscripts
network_mode: host
restart: always
depends_on:
- postgres
zabbix-web-nginx:
image: zabbix/zabbix-web-nginx-pgsql:7.0-alpine-latest
container_name: zabbix-web-nginx
environment:
DB_SERVER_HOST: 127.0.0.1
POSTGRES_USER: zabbix
POSTGRES_PASSWORD: srebro.cn
POSTGRES_DB: zabbix
ZBX_SERVER_HOST: 127.0.0.1
PHP_TZ: Asia/Shanghai
network_mode: host
restart: always
depends_on:
- zabbix-server
- 运行docker-compose
[root@localhost zabbix]# cd /home/application/zabbix
[root@localhost zabbix]# docker-compose up -d
[root@localhost zabbix]# docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
zabbix-postgres "docker-entrypoint.s…" postgres running
zabbix-server "/usr/bin/docker-ent…" zabbix-server running
zabbix-web-nginx "docker-entrypoint.sh" zabbix-web-nginx running
4.3.3 登录zabbix-server web控制台
WEB登录地址: http://172.22.33.180:8080
默认密码: Admin/zabbix
五、安装部署zabbix-agent
5.1 zabbix7.0 源码包下载
wget https://cdn.zabbix.com/zabbix/sources/stable/7.0/zabbix-7.0.0.tar.gz
5.2 编译及依赖包环境准备
我这里是openeuler 系统,尝试使用zabbix 官网提供的7.0 的rpm 包。但是在安装的时候,总是提示环境有问题,报错如下:
[root@localhost ~]# yum install ./zabbix-agent-7.0.0-release1.el7.x86_64.rpm
- 没有东西可提供 libcrypto.so.10()(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)
- 没有东西可提供 libcrypto.so.10(OPENSSL_1.0.1_EC)(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)
- 没有东西可提供 libcrypto.so.10(OPENSSL_1.0.2)(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)
- 没有东西可提供 libcrypto.so.10(libcrypto.so.10)(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)
- 没有东西可提供 liblber-2.4.so.2()(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)
- 没有东西可提供 libldap-2.4.so.2()(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)
- 没有东西可提供 libssl.so.10()(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)
- 没有东西可提供 libssl.so.10(libssl.so.10)(64bit)(zabbix-agent-7.0.0-release1.el7.x86_64 需要)
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
尝试着去解决,最终还是放弃了,需要修改系统上的lib库,太过于复杂,还是索性采用源码编译的方式部署zabbix-agent
- openeuler 编译及依赖包安装【跟着我安装下面的软件包,编译分分钟丝毫没有问题】
yum groupinstall -y "Development Tools"
yum install -y net-snmp net-snmp-devel libevent libevent-devel openssl openssl-devel curl curl-devel fping pcre pcre-devel pkgconfig
- 添加zabbix用户,用户组
groupadd --system zabbix
useradd --system -g zabbix -d /usr/local/zabbix -s /sbin/nologin/ zabbix
- 开始编译zabbix-agent 包
tar -xf zabbix-7.0.0.tar.gz
cd zabbix-7.0.0/
./configure --prefix=/usr/local/zabbix --enable-agent --with-libcurl --with-net-snmp --with-libevent --with-openssl --enable-ipv6
make
make install
5.3 配置zabbix-agent并启动
- 创建zabbix-agent 日志目录
mkdir -p /usr/local/zabbix/logs
- 修改zabbix工作目录权限
chown -Rf zabbix:zabbix /usr/local/zabbix
- 使用systemd管理配置zabbix-agent
[root@localhost home]# vim /etc/systemd/system/zabbix-agent.service
[Unit]
Description = Zabbix Agent
After = syslog.target network.target
[Service]
Type = forking
Restart = on-failure
KillMode = control-group
ExecStart = /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
RestartSec = 10s
TimeoutSec = 0
User = zabbix
Group = zabbix
[Install]
WantedBy = multi-user.target
- 修改配置文件
/usr/local/zabbix/etc/zabbix_agentd.conf
参数【Server
,ServerActive
,Hostname
,UnsafeUserParameters
,LogFile
】
# 被动模式下的 Zabbix-Server/Proxy 地址
Server=172.22.33.180
# 主动模式下的 Zabbix-Server/Proxy 地址
ServerActive=172.22.33.180
#主机名,设定 Zabbix-Agent 主机名,确保唯一且在 Zabbix-Server web 中一致
Hostname=172.16.10.182_agent-1
# 允许使用不安全的用户参数,允许创建自定义监控项
UnsafeUserParameters=1
# 指定 Zabbix-Agent 的日志文件路径
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
- reload 并启动zabbix-agent
[root@k8s-node1 etc]# systemctl daemon-reload
[root@k8s-node1 etc]# systemctl enable zabbix-agent
[root@k8s-node1 etc]# systemctl start zabbix-agent
[root@k8s-node1 etc]# ps -ef | grep zabbix_agent
zabbix 478193 1 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/etc/zabbix_agentd.conf
zabbix 478194 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix 478195 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix 478196 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix 478197 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix 478198 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #4 [waiting for connection]
zabbix 478199 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #5 [waiting for connection]
zabbix 478200 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #6 [waiting for connection]
zabbix 478201 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #7 [waiting for connection]
zabbix 478202 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #8 [waiting for connection]
zabbix 478203 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #9 [waiting for connection]
zabbix 478204 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #10 [waiting for connection]
zabbix 478205 478193 0 00:48 ? 00:00:00 /usr/local/zabbix/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root 478329 439035 0 00:48 pts/0 00:00:00 grep --color=auto zabbix_agent
[root@k8s-node1 etc]# netstat -ntlup | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 478193/zabbix_agent
tcp6 0 0 :::10050 :::* LISTEN 478193/zabbix_agent
5.4 配置zabbix-server 添加客户端监控
登录zabbix-server 控制台/数据采集/主机/右上角,创建主机
- 填写主机名称,【注意必须和zabbix-agent.conf 中的Hostname 保持一致】
- 添加模板,勾选 Linux by Zabbix agent
- 主机群组,Linux servers 【也可以自己创建主机群组】
- 添加接口,类型为Agent,填写zabbix-agent 客户端IP,端口
等看到zabbix 可用性,变成绿色 就表示,已经成功添加zabbix-agent
查看最新数据, 监测/最新数据
六、总结
关于使用容器化的方式部署zabbix-server ,采用宿主机网络的问题
当部署zabbix-server 的时候,单独创建一个容器网络bridge,zabbix-server 那台主机的zabbix-agent【注意说是zabbix-server 本机】 想要和zabbix-server 通讯的时候,zabbix-agent 的配置文件中的 Server
,ServerActive
配置成宿主机的IP,发现zabbix-agent 日志一直在报错,提示 需要连接zabbix-server 的容器IP,比如 10.114.0.2 ; 当然也可以解决,直接写成容器IP也行,但是我们不能保证容器内的IP不发生变化; 为了解决这个问题,我直接采用了宿主机的通讯方式,在端口不冲突的情况下,完成agent和server 的通讯。
openeuler 系统上,使用zabbix 官网的RPM 包不兼容问题
还是手动编译安装吧,zabbix 没有去做设配openeuler 的RPM包,当然您也可以编译贡献RPM 包给社区,哈哈
此文章,讲的是如何快速部署一套zabbix环境
抛开我们以往的传统部署方式,安装前端环境,apache或者nginx,再去安装数据库,mysql 或者 pg;再就是php 环境,一套部署下来也需要不少精力和时间,只能说容器真的太方便了
- 感谢你赐予我前进的力量