【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
首先前一篇文章我们介绍了docker安装,本次我们需要常规搭建,以下是docker和非docker的区别,由于优雅草的zabbix是要进行深度二开的,因此选择非docker,此前看了各种教程和视频,卓伊凡失败了不下3次,联合同事solution一起开始做,最终在这次整理了可行的方案,简化 方案,很多教程里面有些混乱,导致搭建各种报错,当然此方案你们也要践行
以下为你详细对比 Docker 容器搭建和非 Docker 搭建的优劣势:
### Docker 容器搭建
#### 优势
- **环境一致性**:Docker 可以将应用及其依赖打包成一个独立的容器,确保应用在不同的环境中都能以相同的方式运行。例如,开发环境、测试环境和生产环境可以保持高度一致,减少因环境差异导致的问题。
- **快速部署**:由于 Docker 容器的轻量级特性,启动和停止容器非常迅速。相比传统的部署方式,大大缩短了应用的部署时间。比如,一个复杂的微服务应用,使用 Docker 可以在几分钟内完成部署,而传统方式可能需要数小时甚至数天。
- **资源利用率高**:多个 Docker 容器可以共享宿主机的操作系统内核,减少了系统资源的开销。与传统的虚拟机相比,Docker 容器占用的资源更少,能够在相同的硬件资源下运行更多的应用实例。
- **可移植性强**:Docker 容器可以在任何支持 Docker 的平台上运行,无论是物理机、虚拟机还是云服务器。这使得应用的迁移和扩展变得更加容易,例如可以方便地将应用从本地开发环境迁移到云端生产环境。
- **隔离性好**:每个 Docker 容器都是相互隔离的,一个容器的故障不会影响其他容器的正常运行。这种隔离性提高了应用的稳定性和安全性,例如不同的业务系统可以分别运行在不同的容器中,互不干扰。
#### 劣势
- **安全风险**:虽然 Docker 提供了一定的隔离机制,但由于容器共享宿主机的内核,存在一定的安全风险。如果一个容器被攻击,攻击者可能会利用内核漏洞影响其他容器或宿主机。
- **学习成本**:对于不熟悉 Docker 技术的开发人员和运维人员来说,需要花费一定的时间来学习 Docker 的基本概念、命令和操作流程。
- **性能开销**:尽管 Docker 容器的性能开销相对较小,但在某些情况下,如大量的 I/O 操作或对内核资源的频繁访问,仍然会存在一定的性能损失。
- **管理复杂性**:当容器数量较多时,容器的管理和编排会变得复杂。需要使用专门的工具(如 Kubernetes)来进行容器的调度、监控和管理。
### 非 Docker 搭建
#### 优势
- **技术成熟度高**:非 Docker 搭建方式已经存在了很长时间,技术非常成熟。开发人员和运维人员对传统的部署方式比较熟悉,有丰富的经验和技术支持。
- **系统控制权强**:在非 Docker 搭建中,用户可以直接对操作系统进行配置和管理,拥有更高的系统控制权。对于一些对系统资源有特殊要求的应用,这种方式可以更好地满足需求。
- **安全性相对容易控制**:由于没有容器隔离带来的额外复杂性,传统部署方式的安全策略可以更加直接和明确。用户可以根据自己的需求对操作系统进行安全加固,减少安全漏洞。
- **无需额外依赖**:非 Docker 搭建不需要安装 Docker 引擎等额外的软件,减少了因依赖问题导致的故障和维护成本。
#### 劣势
- **环境配置复杂**:在不同的环境中部署应用时,需要手动配置各种依赖和环境变量,容易出现配置不一致的问题。例如,在不同的服务器上安装相同的应用,可能会因为操作系统版本、软件库版本等差异导致应用无法正常运行。
- **部署效率低**:传统的部署方式通常需要手动安装和配置应用的各个组件,过程繁琐,部署效率低下。特别是在大规模部署时,这种效率问题会更加明显。
- **资源利用率低**:每个应用都需要独立的操作系统环境,会占用大量的系统资源。例如,多个应用分别安装在不同的虚拟机上,会造成硬件资源的浪费。
- **可移植性差**:非 Docker 搭建的应用在不同的环境中迁移和部署比较困难,需要重新配置环境和安装依赖,增加了迁移的成本和风险。
CentOS8 安装zabbix7
教程
- 强制创建目录/usr/local/zabbix7/
mkdir -p /usr/local/zabbix7/
- 配置阿里源
sudo mkdir -p /etc/yum.repos.d/back && sudo mv /etc/yum.repos.d/CentOS* /etc/yum.repos.d/back && cat <<EOF | sudo tee /etc/yum.repos.d/Centos8.repo[BaseOS]name=CentOS-\$releasever - Basebaseurl=http://mirrors.aliyun.com/centos/\$releasever/BaseOS/\$basearch/os/gpgcheck=1gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official[AppStream]name=CentOS-\$releasever - AppStreambaseurl=http://mirrors.aliyun.com/centos/\$releasever/AppStream/\$basearch/os/gpgcheck=1gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official[extras]name=CentOS-\$releasever - Extrasbaseurl=http://mirrors.aliyun.com/centos/\$releasever/extras/\$basearch/os/gpgcheck=1gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-OfficialEOFsudo dnf clean allsudo dnf makecache
- 安装zabbix源
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/centos/8/x86_64/zabbix-release-latest-7.0.el8.noarch.rpm
- 更新源
dnf clean all && sudo dnf makecache
- 创建下载目录/usr/local/zabbix7/
mkdir -p /usr/local/zabbix7/zabbix-{server-mysql,web-mysql,nginx-conf,sql-scripts,selinux-policy,agent,mariadb,php,fonts,stress}
- 下载zabbix组件
dnf download --resolve --destdir=/usr/local/zabbix7/zabbix-server-mysql zabbix-server-mysqldnf download --resolve --destdir=/usr/local/zabbix7/zabbix-web-mysql zabbix-web-mysqldnf download --resolve --destdir=/usr/local/zabbix7/zabbix-nginx-conf zabbix-nginx-confdnf download --resolve --destdir=/usr/local/zabbix7/zabbix-sql-scripts zabbix-sql-scriptsdnf download --resolve --destdir=/usr/local/zabbix7/zabbix-selinux-policy zabbix-selinux-policydnf download --resolve --destdir=/usr/local/zabbix7/zabbix-agent zabbix-agent
- 下载PHP
sudo dnf install -y epel-releasesudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.0.rpmyum remove php*dnf module reset phpsudo dnf module enable php:remi-8.0dnf download --resolve --destdir=/usr/local/zabbix7/zabbix-php/ php php-fpm php-mysqlnd php-gd php-xml php-bcmath php-mbstring
- 下载mariadb10.5
curl -LsS -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setupsudo bash mariadb_repo_setup --mariadb-server-version=10.5dnf module reset mariadb -ydnf module enable mariadb:10.5 -ydnf download --resolve --destdir=/usr/local/zabbix7/zabbix-mariadb mariadb mariadb-server
- 下载字体包解决乱码问题
dnf download --resolve --destdir=/usr/local/zabbix7/zabbix-fonts wqy-microhei-fonts
- 下载打高CPU测试命令便于后期测试告警
sudo dnf install -y epel-releasednf download --resolve --destdir=/usr/local/zabbix7/zabbix-stress stress
- 离线安装(上面都是下载rpm,从这里开始安装这些rpm)
- 安装mariadb(这里还依赖python3相关包)
cd /usr/local/zabbix7/zabbix-mariadbrpm -Uvh *.rpm
- 安装zabbix-server-mysql
cd /usr/local/zabbix7/zabbix-server-mysql rpm -Uvh *.rpmrpm -Uvh fping-5.1-1.el8.x86_64.rpm OpenIPMI-libs-2.0.31-3.el8.x86_64.rpm unixODBC-2.3.7-1.el8.x86_64.rpm zabbix-server-mysql-7.0.0-release1.el8.x86_64.rpm
- 安装zabbix-erbmysql
cd /usr/local/zabbix7/zabbix-web-mysql rpm -Uvh *.rpm
- 安装zabbix-nginx-conf
cd /usr/local/zabbix7/zabbix-nginx-conf rpm -Uvh *.rpmrpm -ivh httpd-filesystem-2.4.37-43.module_el8.5.0+1022+b541f3b1.noarch.rpmrpm -ivh nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm nginx-all-modules-1.14.1-9.module_el8.0.0+184+e34fea82.noarch.rpm nginx-mod-http-image-filter-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm nginx-mod-http-perl-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm nginx-mod-http-xslt-filter-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm nginx-mod-mail-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm nginx-mod-stream-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpmrpm -ivh zabbix-nginx-conf-7.0.0-release1.el8.noarch.rpm
- 安装zabbix-sql-scripts
cd /usr/local/zabbix7/zabbix-sql-scriptsrpm -Uvh *.rpm
- 安装zabbix-selinux-policy
cd /usr/local/zabbix7/zabbix-selinux-policyrpm -Uvh *.rpm
- 安装升级zabbix-php
cd /usr/local/zabbix7/zabbix-php rpm -Uvh *.rpm
- 安装zabbix-fonts
cd /usr/local/zabbix7/zabbix-fontsrpm -ivh *.rpm
- 安装zabbix-stress
cd /usr/local/zabbix7/zabbix-stress rpm -ivh *.rpm
- 安装zabbix-agent
cd /usr/local/zabbix7/zabbix-agentrpm -Uvh *.rpm
- 数据初始化
systemctl start mariadb.service systemctl enable mariadb.service systemctl status mariadb.servicemysql_secure_installation
- zabbix数据库密码:hXHDKsp2CzhzMrKb
- 登入数据库(root用户登陆,root密码在宝塔面板上查看)
mysql -uroot -pPASSWORD
- 要删除之前创建的zabbix数据库
- 创建一个名为zabbix的数据库,并设置字符集为utf8mb4,排序规则为utf8mb4_bin
create database zabbix character set utf8mb4 collate utf8mb4_bin;
- 创建一个名为zabbix的数据库用户,并设置密码为’password’
create user zabbix@localhost identified by 'hXHDKsp2CzhzMrKb';
- 授予zabbix用户对zabbix数据库的所有权限
grant all privileges on zabbix.* to zabbix@localhost;
- 允许没有超级权限的用户创建或修改带有二进制日志功能的存储函数
set global log_bin_trust_function_creators = 1;
- 退出
quit;
- 查询sql文件位置
find /usr/ -name "server.sql.gz"
- 导入数据库信息,server.sql.gz实际路径,输入数据库zabbix用户的密码 password
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
- 修改Zabbix server配置文件,修改数据库密码其中password为你的真实数据库zabbix用户的密码
sudo sed -i '/^# DBPassword=/a DBPassword=password' /etc/zabbix/zabbix_server.conf
- 修改Nginx配置文件(这个是什么意思)
sudo sed -i '/^server {/a listen 80;' /etc/nginx/conf.d/zabbix.confsudo sed -i '/^listen 80;/a server_name 192.168.121.250;' /etc/nginx/conf.d/zabbix.conf
- 修复图形数据标识乱码问题
cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
- 重启服务,开启自启,查看状态
systemctl enable zabbix-server zabbix-agent nginx php-fpm mariadb.servicesystemctl restart zabbix-server zabbix-agent nginx php-fpm mariadb.servicesystemctl status zabbix-server zabbix-agent nginx php-fpm mariadb.service
- 访问zabbixweb
业务限制
- 🙅🏻♀️不能使用docker
- 🙅🏻♀️不能使用服务器打包编译,性能很弱,要使用二进制包
服务器环境信息
- 服务器配置
- 2C4G
- 操作系统版本
- CentOS Stream release 8
- Mysql 版本
- mysql Ver 8.0.24 for Linux on x86_64 (Source distribution)
- PHP 版本
- yum源备份
# yum源配置都在这个目录下 repo是个文本文件,可以使用cat查看配置内容cd /etc/yum.repos.d/# 文件备份命令,就是文件重命名sudo mv /etc/yum.repos.d/CentOS-Stream-Extras-common.repo /etc/yum.repos.d/CentOS-Stream-Extras-common.repo.backup
- CentOS-Base.repo切换到阿里源
# CentOS-Base.repo## The mirror system uses the connecting IP address of the client and the# update status of each mirror to pick mirrors that are updated to and# geographically close to the client. You should use this for CentOS updates# unless you are manually picking other mirrors.## If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead.## [base]name=CentOS-8.5.2111 - Base - mirrors.aliyun.combaseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/gpgcheck=0gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official #additional packages that may be useful[extras]name=CentOS-8.5.2111 - Extras - mirrors.aliyun.combaseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/extras/$basearch/os/gpgcheck=0gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official #additional packages that extend functionality of existing packages[centosplus]name=CentOS-8.5.2111 - Plus - mirrors.aliyun.combaseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/centosplus/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/centosplus/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/centosplus/$basearch/os/gpgcheck=0enabled=0gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official [PowerTools]name=CentOS-8.5.2111 - PowerTools - mirrors.aliyun.combaseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/PowerTools/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/PowerTools/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/PowerTools/$basearch/os/gpgcheck=0enabled=0gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
[AppStream]name=CentOS-8.5.2111 - AppStream - mirrors.aliyun.combaseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/$basearch/os/ http://mirrors.aliyuncs.com/centos-vault/8.5.2111/AppStream/$basearch/os/ http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/AppStream/$basearch/os/gpgcheck=0gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official
- CentOS-Stream-Extras-common.repo切换到阿里源
# CentOS-Stream-Extras-common.repo## The mirrorlist system uses the connecting IP address of the client and the# update status of each mirror to pick current mirrors that are geographically# close to the client. You should use this for CentOS updates unless you are# manually picking other mirrors.## If the mirrorlist does not work for you, you can try the commented out# baseurl line instead.
[extras-common]name=CentOS Stream $releasever - Extras common packagesbaseurl=https://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/enabled=1gpgcheck=0gpgkey=https://mirrors.aliyun.com/centos-stream/8-stream/Extras/x86_64/os/RPM-GPG-KEY-CentOS-Official
zabbix 官方rpm
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/centos/8/x86_64/zabbix-release-latest-7.0.el8.noarch.rpmdnf clean all# php版本8.2dnf module switch-to php:8.2