如何在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
© 版权声明
文章版权归作者所有,未经允许请勿转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/38693.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Anti-Canine Heartworm Antibody (Chicken) - HRP Conjugated

犬心丝虫&#xff08;学名Dirofilaria immitis&#xff09;是一种寄生丝虫&#xff0c;通过蚊子叮咬而传播。感染犬在早期阶段&#xff0c;大多不会出现症状。随着病情发展&#xff0c;将出现咳嗽、呼吸困难等症状&#xff0c;并伴有右心功能衰竭&#xff0c;最终全身衰弱或虚脱…

检索增强生成RAG系列3--RAG优化之文档处理

在上一章中罗列了对RAG准确度的几个重要关键点&#xff0c;主要包括2方面&#xff0c;这一章就针对其中一方面&#xff0c;来做详细的讲解以及其解决方案。 目录 1 文档解析1.1 文档解析工具1.2 实战经验1.3 代码演示 2 文档分块2.1 分块算法2.2 实战经验2.3 代码演示 3 文档e…

python自动化办公之shutil

目录 1复制文件&#xff0c;此时存在2份相同文件 2移动文件&#xff0c;此时仅有1份文件 3删除文件&#xff0c;此时0份文件 用到的库&#xff1a;shutil&#xff0c;os 实现的效果&#xff1a;复制文件&#xff0c;移动文件&#xff0c;删除文件 代码&#xff1a; 1复制…

使用Colly库进行高效的网络爬虫开发

引言 随着互联网技术的飞速发展&#xff0c;网络数据已成为信息获取的重要来源。网络爬虫作为自动获取网页内容的工具&#xff0c;在数据分析、市场研究、信息聚合等领域发挥着重要作用。本文将介绍如何使用Go语言中的Colly库来开发高效的网络爬虫。 什么是Colly库&#xff1…

超声波清洗机怎么选?极力推荐四款口碑大牌超声波清洗机

相信大家都知道超声波清洗机&#xff0c;每次眼镜脏的时候&#xff0c;去眼镜店里让老板帮忙清洗&#xff0c;她们用的就是超声波清洗机&#xff0c;通过超声波的原理深入物品深处清洁&#xff0c;清洁效果非常好。相对手洗的方式&#xff0c;超声波清洗机能够保护镜片在清洗过…

【开放词汇分割】Side Adapter Network for Open-Vocabulary Semantic Segmentation

论文链接&#xff1a;Side Adapter Network for Open-Vocabulary Semantic Segmentation 代码链接&#xff1a;https://github.com/MendelXu/SAN 作者&#xff1a;Mengde Xu,Zheng Zhang,Fangyun Wei,Han Hu,Xiang Bai 发表单位&#xff1a;华中科技大学、微软亚洲研究院 会…

Vue 快速入门案例

步骤一&#xff1a;引入vue.js文件 添加<script>标签并标明路径 步骤二&#xff1a;定义Vue对象 el Vue接管区域 data 定义数据模型 步骤三&#xff1a;编写视图层的展示 v-model 绑定数据模型 {{要展示的数据模型}} 运行效果 总结 文本框里的值&a…

雪花算法的原理以及实现

文章目录 一、简介二、算法优缺点三、算法实现 一、简介 有这么一种说法&#xff0c;自然界中并不存在两片完全一样的雪花的。每一片雪花都拥有自己漂亮独特的形状、独一无二。雪花算法也表示生成的ID如雪花般独一无二。 雪花算法 &#xff08;SnowFlake &#xff09;算法&am…

几度互联网站群管理系统全媒体解决方案

随着高考的结束&#xff0c;各高校开启了紧张的招生宣传工作&#xff0c;几度互联网站群系统助力各高校招生宣传。 学校官方网站是互联网时代学校对外交流的重要途径和信息公开的主要载体&#xff0c;是展示学校形象、密切联系师生的重要窗口&#xff0c;是加强校园宣传思想工…

【MySQL备份】Percona XtraBackup篇

目录 1.关于Percona XtraBackup 2. Percona XtraBackup有哪些特点&#xff1f; 3.安装Percona XtraBackup 3.1.环境信息 3.2.安装步骤 4.实战演练 4.1.全量备份与恢复 4.2.总结 1.关于Percona XtraBackup Percona XtraBackup是世界上唯一的开源、免费的MySQL热备份 为…

品牌推广方案怎么写?策划书模板与实战技巧分享

品牌想要快速得到市场的认可&#xff0c;一个精心策划的品牌推广方案是脱颖而出的关键。 作为一名手工酸奶品牌创始人&#xff0c;目前全国也复制了100多家门店&#xff0c;这篇文章&#xff0c;我和大家分享下&#xff0c;如何做一个清晰的结构框架、策划书模板以及实战技巧&…

【论文阅读】-- TimeNotes:时间序列数据的有效图表可视化和交互技术研究

TimeNotes: A Study on Effective Chart Visualization and Interaction Techniques for Time-Series Data 摘要1 介绍和动机2 文献2.1 时间序列数据探索2.1.1 数据聚合2.1.2 基于透镜2.1.3 基于布局 3 任务和设计3.1 数据3.2 领域表征3.3 探索、分析和呈现 4 TimeNotes4.1 布局…

Kaggle竞赛——房价预测

目录 1. 特征分析1.1 数据集导入1.2 统计缺失值1.3 可视化缺失值1.4 缺失值相关性分析1.5 训练集和测试集缺失数据对比1.6 统计特征的数据类型1.7 数值型特征分布直方图1.8 数值型特征与房价的线性关系1.9 非数值型特征的分布直方图1.10 非数值型特征箱线图1.11 数值型特征填充…

JAVA:常用的算法指南

请关注微信公众号&#xff1a;拾荒的小海螺 博客地址&#xff1a;http://lsk-ww.cn/ 1、简述 在软件开发过程中&#xff0c;算法扮演着关键的角色。它们用于解决各种问题&#xff0c;从数据处理到搜索、排序等。本文将介绍几种常见的算法及其 Java 实现&#xff0c;包括排序算…

基于java+springboot+vue实现的农产品直卖平台(文末源码+Lw)266

摘 要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除了&#xff0c;让整个世界都可以即时通…

Python从0到100(三十三):xpath和lxml类库

1. 为什么要学习xpath和lxml lxml是一款高性能的 Python HTML/XML 解析器&#xff0c;我们可以利用XPath&#xff0c;来快速的定位特定元素以及获取节点信息 2. 什么是xpath XPath&#xff0c;全称为XML Path Language&#xff0c;是一种用于在XML文档中进行导航和数据提取的…

Python基础之多进程

文章目录 1 多进程1.1 简介1.2 Linux下多进程1.3 multiprocessing1.4 Pool1.5 进程间通信1.6 分布式进程 1 多进程 1.1 简介 要让Python程序实现多进程&#xff08;multiprocessing&#xff09;&#xff0c;我们先了解操作系统的相关知识。 Unix/Linux操作系统提供了一个fork…

豆包文科成绩超了一本线,为什么理科不行?

卡奥斯智能交互引擎是卡奥斯基于海尔近40年工业生产经验积累和卡奥斯7年工业互联网平台建设的最佳实践&#xff0c;基于大语言模型和RAG技术&#xff0c;集合海量工业领域生态资源方优质产品和知识服务&#xff0c;旨在通过智能搜索、连续交互&#xff0c;实时生成个性化的内容…

Java - 程序员面试笔记记录 实现 - Part2

2.1 输入输出流 流可以被看作一组有序的字节集合&#xff0c;即数据在两个设备间的传输。 字节流&#xff1a;以字节作为单位&#xff0c;读到一个字节就返回一个字节&#xff1b;InputStream & OutputStream。 字符流&#xff1a;使用字节流读到一个到多个字节先查询码…

基于RabbitMQ的异步消息传递:发送与消费

引言 RabbitMQ是一个流行的开源消息代理&#xff0c;用于在分布式系统中实现异步消息传递。它基于Erlang语言编写&#xff0c;具有高可用性和可伸缩性。在本文中&#xff0c;我们将探讨如何在Python中使用RabbitMQ进行消息发送和消费。 安装RabbitMQ 在 Ubuntu 上安装 Rabbi…