当前位置: 首页 > news >正文

如何在OpenEuler 上快速部署一套Zabbix7.0监控系统

如何在OpenEuler 上快速部署一套Zabbix监控系统

一、环境信息

用途机器IP操作系统备注
zabbix-server172.22.33.180openeuler 22.03 LTS SP37.0 LTS 版本,容器部署
zabbix-agent172.16.10.182openeuler 22.03 LTS SP37.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/dockertee /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 映像都配置为在基础映像更新时重建最新映像。

image-20240629235906602

此外还需要 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-alpinecontainer_name: zabbix-postgresenvironment:POSTGRES_DB: zabbixPOSTGRES_USER: zabbixPOSTGRES_PASSWORD: srebro.cncommand: -c max_connections=2000restart: alwaysvolumes:- ./postgres_data:/var/lib/postgresql/datanetwork_mode: hostzabbix-server:image: zabbix/zabbix-server-pgsql:7.0-alpine-latest#image: zabbix/zabbix-server-pgsql:7.0-ubuntu-latest-newcontainer_name: zabbix-serverenvironment:DB_SERVER_HOST: 127.0.0.1POSTGRES_USER: zabbixPOSTGRES_PASSWORD: srebro.cnPOSTGRES_DB: zabbixTZ: Asia/Shanghaivolumes:- ./zabbix_alertscripts:/usr/lib/zabbix/alertscriptsnetwork_mode: hostrestart: alwaysdepends_on:- postgreszabbix-web-nginx:image: zabbix/zabbix-web-nginx-pgsql:7.0-alpine-latestcontainer_name: zabbix-web-nginxenvironment:DB_SERVER_HOST: 127.0.0.1POSTGRES_USER: zabbixPOSTGRES_PASSWORD: srebro.cnPOSTGRES_DB: zabbixZBX_SERVER_HOST: 127.0.0.1PHP_TZ: Asia/Shanghainetwork_mode: hostrestart: alwaysdepends_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

image-20240630001648914

image-20240630001717356

五、安装部署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)

image-20240630002407072

尝试着去解决,最终还是放弃了,需要修改系统上的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 参数【ServerServerActiveHostnameUnsafeUserParameters,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 控制台/数据采集/主机/右上角,创建主机

image-20240630005106815

  • 填写主机名称,【注意必须和zabbix-agent.conf 中的Hostname 保持一致】
  • 添加模板,勾选 Linux by Zabbix agent
  • 主机群组,Linux servers 【也可以自己创建主机群组】
  • 添加接口,类型为Agent,填写zabbix-agent 客户端IP,端口

image-20240630010024138

等看到zabbix 可用性,变成绿色 就表示,已经成功添加zabbix-agent

image-20240630010107722

查看最新数据, 监测/最新数据

image-20240630011451105

六、总结

关于使用容器化的方式部署zabbix-server ,采用宿主机网络的问题

当部署zabbix-server 的时候,单独创建一个容器网络bridge,zabbix-server 那台主机的zabbix-agent【注意说是zabbix-server 本机】 想要和zabbix-server 通讯的时候,zabbix-agent 的配置文件中的ServerServerActive 配置成宿主机的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 环境,一套部署下来也需要不少精力和时间,只能说容器真的太方便了

来源于srebro.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。

相关文章:

  • 性能测试方法与工具比较
  • 云计算 | 期末梳理(上)
  • 零知识证明技术:隐私保护的利器
  • 【原创教程】一次搞定伺服原点问题(进阶篇)
  • 【图片知识】现在各种平台为什么开始使用 webp格式的图片 而不是传统的jpg或者png
  • python 笔试面试八股(自用版~)
  • git基本使用(二):git分支的操作命令
  • 【PYG】Cora数据集分析argmax(dim=1)输出
  • 初学51单片机之简易电子密码锁及PWM应用扩展
  • 二维码登录的原理
  • vue根据文字长短展示跑马灯效果
  • Kafka-服务端-副本同步-源码流程
  • 编程入门:从零开始学习编程的方法与步骤
  • Java List操作详解及常用方法
  • 【Llama 2的使用方法】
  • docker python 配置
  • If…else
  • JAVA多线程机制解析-volatilesynchronized
  • jQuery(一)
  • leetcode讲解--894. All Possible Full Binary Trees
  • markdown编辑器简评
  • mysql innodb 索引使用指南
  • Netty源码解析1-Buffer
  • python_bomb----数据类型总结
  • 阿里云应用高可用服务公测发布
  • 关于使用markdown的方法(引自CSDN教程)
  • 如何胜任知名企业的商业数据分析师?
  • 项目实战-Api的解决方案
  • 延迟脚本的方式
  • 在Docker Swarm上部署Apache Storm:第1部分
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 积累各种好的链接
  • ​卜东波研究员:高观点下的少儿计算思维
  • #NOIP 2014#Day.2 T3 解方程
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $nextTick的使用场景介绍
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (四)JPA - JQPL 实现增删改查
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • ***利用Ms05002溢出找“肉鸡
  • **CI中自动类加载的用法总结
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .md即markdown文件的基本常用编写语法
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net 提取注释生成API文档 帮助文档
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .Net多线程Threading相关详解
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .net网站发布-允许更新此预编译站点
  • /var/log/cvslog 太大
  • @Transient注解
  • [<事务专题>]
  • [Android]使用Retrofit进行网络请求