Zabbix简介及部署
目录
一、Zabbix 核心介绍
Zabbix 是一款开源、企业级、分布式监控系统,用于实时监控网络设备、服务器、虚拟机、数据库、应用服务及云资源的性能、可用性与故障,支持数据采集、告警、可视化、自动化运维,是运维领域最主流的监控方案之一。
1. 核心特性
开源免费:基于 GPL 协议,无授权费用,社区活跃、文档完善;
多维度监控:支持 CPU、内存、磁盘、网络、进程、端口、日志、SNMP、IPMI、JMX、HTTP/HTTPS、数据库(MySQL、PostgreSQL、Oracle)、云平台(AWS、阿里云、腾讯云)等;
分布式架构:Server + Proxy + Agent 三层,Proxy 实现跨区域 / 跨网络数据汇聚,减轻 Server 压力,支持大规模集群(上万台主机);
灵活告警:支持邮件、短信、企业微信、钉钉、飞书、电话、Webhook 等多渠道,可自定义告警阈值、升级策略、静默规则;
可视化:内置 Grafana 集成、自定义仪表盘、图表、拓扑图,支持数据导出与报表;
自动发现:自动扫描网络、发现主机 / 接口 / 服务,自动添加监控项,降低运维成本;
数据存储:支持 MySQL、PostgreSQL、TimescaleDB、Elasticsearch,历史数据可分区 / 压缩,支持长期存储;
自动化:支持远程命令执行、配置下发、故障自愈(如重启服务、清理磁盘)。
2.核心组件(架构)
Zabbix Server:核心服务,负责数据接收、处理、存储、告警计算、配置管理,是整个系统的大脑;
Zabbix Agent:部署在被监控主机(Linux/Windows),主动采集本地指标(CPU、内存等),被动接收 Server 指令,轻量高效;
Zabbix Proxy:可选组件,用于分布式场景,代理 Agent 数据上报、缓存数据,解决跨网络 / 跨地域监控,减轻 Server 负载;
Zabbix Web:基于 PHP 的 Web 管理界面,用于配置、查看监控、管理告警、生成报表;
Database:存储配置、历史数据、事件、告警信息(主流 MySQL);
Zabbix Sender:命令行工具,用于主动推送自定义数据到 Server;
Zabbix Get:命令行工具,用于测试从 Agent 获取数据。
二、Zabbix 部署
环境准备
操作系统:ubuntu 22.04
zabbix-server版本:7.0LTS
架构:LNMP
步骤 1:系统初始化
# 关闭防火墙
ufw disable
步骤 2:服务器上部署zabbix-server
2.1 安装Zabbix软件库 安装Zabbix的官方软件库(替换为阿里源)
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb --no-check-certificate
dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
sed -i 's/https:\/\/repo.zabbix.com/https:\/\/mirrors.aliyun.com\/zabbix/' /etc/apt/sources.list.d/zabbix.list
apt update
2.2 安装Zabbix Server + Web + Agent
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent -y
2.3 安装mariadb数据库
apt install mariadb-server -y
systemctl enable --now mariadb
2.4 创建并初始化数据库
# 登录数据库并创建Zabbix专属库和用户
mysql -u root -p
# 输入上面设置的root密码,进入数据库命令行后执行以下SQL
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user 'zabbix'@'localhost' identified by 'Zabbix@123';
grant all privileges on zabbix.* to 'zabbix'@'localhost';
flush privileges;
exit;
#在Zabbix服务器主机上导入初始数据
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p'Zabbix@123' zabbix
2.5 配置 Zabbix Server
vi /etc/zabbix/zabbix_server.conf
# 修改以下参数(取消注释并修改)
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=Zabbix@123 # 与创建的数据库密码一致
# 保存退出
2.6 配置 PHP 参数(适配 Zabbix)
#请使用下面命令完成
sed -i '2,3s/^# //' /etc/zabbix/nginx.conf
sed -i 's/8080/8088/g' /etc/zabbix/nginx.conf
sed -i 's/example.com/localhost/g' /etc/zabbix/nginx.conf
sed -i '21,71s/^/#/' /etc/nginx/sites-enabled/default
2.7 启动 Zabbix 服务并开机自启
systemctl restart mariadb zabbix-server zabbix-agent nginx php8.1-fpm
systemctl enable mariadb zabbix-server zabbix-agent nginx php8.1-fpm
步骤 3:系统安装中文语言包
#安装中文语言包
sudo apt install language-pack-zh-hans
#配置系统语言
sudo update-locale LANG=zh_CN.UTF-8
#重启
reboot
步骤 4:Web 界面初始化
1.访问:http://服务器IP:8088
2.欢迎页 → 下一步
3.检查依赖(确保所有项为 OK,否则补装缺失 PHP 扩展)→ 下一步
4.配置数据库连接:
- 数据库类型:MySQL
- 数据库主机:localhost
- 数据库端口:3306
- 数据库名称:zabbix
- 用户:zabbix
- 密码:Zabbix123
- → 下一步
5.Zabbix Server 详情(默认即可)→ 下一步
6.预安装检查 → 下一步
7.完成初始化
8.登录:默认账号 Admin,密码 zabbix(首次登录建议修改)
步骤 5:添加被监控主机(Agent 方式)
5.1 被监控端安装 Zabbix Agent(Linux)
1.安装Zabbix Agent(同Server端源)
# Centos系统
rpm -Uvh https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/7.0/rhel/$VER/x86_64/zabbix-release-7.0-1.el$VER.noarch.rpm
dnf clean all >/dev/null 2>&1 || yum clean all >/dev/null 2>&1
dnf install -y zabbix-agent2
# Ubuntu系统
wget https://mirror.tuna.tsinghua.edu.cn/zabbix/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+$(lsb_release -cs)_all.deb
dpkg -i zabbix-release_7.0-1+ubuntu${VERSION_ID}_all.deb
apt update -y
apt install -y zabbix-agent2
2.编辑配置文件(vim /etc/zabbix/zabbix_agentd.conf)
# 被动模式:允许Zabbix Server/Proxy IP访问(必填)
Server=192.168.1.100 # 替换为你的Zabbix Server IP
# 主动模式:Agent主动上报数据的Server IP(建议配置)
ServerActive=192.168.1.100
# 主机名,必须与Web界面添加的Host name完全一致(必填)
Hostname=web-server-01
# 监听端口(默认10050,被动模式用)
ListenPort=10050
# 开启被动模式(默认3,0=关闭被动仅主动)
StartAgents=3
3.启动 Agent 并开机自启
systemctl start zabbix-agent
systemctl enable zabbix-agent
5.2 Web 界面添加主机
1. 登录Zabbix Web界面(Admin/zabbix)
2. 进入【配置】→【主机】→【创建主机】
3. 基本信息配置:
- 主机名称:与Agent配置文件中Hostname一致(Web-Server-01)
- 可见名称:自定义(如“北京机房-Web服务器01”)
- 群组:选择“Linux servers”(或自定义群组)
4. 接口配置:
- 类型:Zabbix agent
- IP地址:被控端实际IP(如192.168.1.101)
- 端口:10050(默认)
5. 模板关联:
- 点击【模板】→【选择】,搜索“Template OS Linux by Zabbix agent”
- 选中模板后点击“添加”,关联基础监控项(CPU、内存、磁盘等)
6. 点击页面底部【添加】,完成主机添加
7. 验证:进入【监测】→【最新数据】,选择被控端主机,能看到数据则部署成功
三、通用脚本安装
1.监控端服务安装
#!/bin/bash
#==================================================================
# Install Zabbix 7.0 LTS on CentOS, Rocky Linux, Debian, or Ubuntu
#==================================================================
MYSQL_ZABBIX_USER=zabbix
MYSQL_ZABBIX_PASS=Zabbix@123
MYSQL_ROOT_PASSWORD=Asdf1234!
ZABBIX_VER=7.0
# 修复:修改为可用的 MariaDB 版本 11.4
MARIADB_VER=11.4
USE_NGINX=true
DATABASE=mariadb
echo -e "\e[32m------------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m Zabbix 7.0 LTS 一键安装脚本 "
echo -e "\e[32m "
echo -e "\e[32m centos 9 / rockylinux 9 / ubuntu 22 / debian 12 "
echo -e "\e[32m "
echo -e "\e[32m------------------------------------------------------------------------\e[0m"
# 检查当前用户是否是root用户
if [ "$(id -u)" -ne 0 ]; then
echo "请使用root用户运行本脚本..."
exit 1
fi
install_zabbix_release_on_centos_or_rocky() {
# echo -e "\e[32m为CentOS或Rocky Linux安装zabbix源...\e[0m"
echo -e "\e[32m------------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 为CentOS或Rocky Linux安装zabbix源... "
echo -e "\e[32m "
echo -e "\e[32m------------------------------------------------------------------------\e[0m"
dnf -y install epel-release
VERSION_ID=$(echo "$VERSION_ID" | cut -d'.' -f1)
if [ "$VERSION_ID" == "9" ]; then
# https://repo.zabbix.com/zabbix/7.0/rocky/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpm
curl -O https://mirrors.aliyun.com/zabbix/zabbix/7.0/${ID}/${VERSION_ID}/x86_64/zabbix-release-7.0-2.el${VERSION_ID}.noarch.rpm
rpm -ivh zabbix-release-7.0-2.el${VERSION_ID}.noarch.rpm
elif [ "$VERSION_ID" == "8" ]; then
curl -O https://mirrors.aliyun.com/zabbix/zabbix/7.0/${ID}/${VERSION_ID}/x86_64/zabbix-release-7.0-1.el${VERSION_ID}.noarch.rpm
rpm -ivh zabbix-release-7.0-1.el${VERSION_ID}.noarch.rpm
else
echo -e "\e[91m不支持的操作系统版本,脚本停止运行。\e[0m"
exit 1
fi
sed -i 's/repo\.zabbix\.com/mirrors\.aliyun\.com\/zabbix/' /etc/yum.repos.d/zabbix.repo
sed -i 's/repo\.zabbix\.com/mirrors\.aliyun\.com\/zabbix/' /etc/yum.repos.d/zabbix-agent2-plugins.repo > /dev/null 2>&1
sed -i '/^\[epel\]/a excludepkgs=zabbix*' /etc/yum.repos.d/epel.repo
dnf makecache
if [ "$USE_NGINX" == "true" ]; then
echo -e "\n\e[32m使用nginx\n\e[0m"
dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent langpacks-zh_CN
else
echo -e "\n\e[32m使用apache\n\e[0m"
dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent langpacks-zh_CN
fi
# 安装glibc-common实现对语言包的识别
dnf -y install glibc-common
[ $? -ne 0 ] && echo -e "\e[91m安装zabbix失败,请检查错误信息.\e[0m" && exit 1
}
config_rocky(){
# echo '为Rocky Linux配置阿里云源...'
echo -e "\e[32m------------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 为Rocky Linux配置阿里云源... "
echo -e "\e[32m "
echo -e "\e[32m------------------------------------------------------------------------\e[0m"
for file in /etc/yum.repos.d/rocky-*.repo /etc/yum.repos.d/Rocky-*.repo; do
[ -e "$file" ] && cp "$file" "$file.bak" && sed -i -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/\$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' "$file"
done
dnf module reset mariadb -y
}
config_firewalld_on_centos_or_rocky() {
# echo -e "\e[32m为CentOS或Rocky Linux配置防火墙...\e[0m"
echo -e "\e[32m------------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 为CentOS或Rocky Linux配置防火墙... "
echo -e "\e[32m "
echo -e "\e[32m------------------------------------------------------------------------\e[0m"
# 如果防火墙正在运行,配置防火墙
if systemctl status firewalld | grep -q "active (running)"; then
echo '配置防火墙...'
firewall-cmd --permanent --add-port={80/tcp,10051/tcp,443/tcp}
firewall-cmd --reload
fi
# 关闭selinux
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
}
config_ufw_on_ubuntu_or_debian() {
# echo -e "\e[32m为Ubuntu或Debian配置防火墙...\e[0m"
echo -e "\e[32m------------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 为Ubuntu或Debian配置防火墙... "
echo -e "\e[32m "
echo -e "\e[32m------------------------------------------------------------------------\e[0m"
if command -v ufw &>/dev/null; then
echo "ufw已安装在系统中."
# 检查ufw是否已启用
if ufw status | grep -q "Status: active"; then
echo "ufw已启用,配置防火墙..."
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 10051/tcp
ufw reload
else
echo "ufw未启用."
fi
else
echo "ufw未安装在系统中."
fi
}
install_zabbix_release_on_debian() {
# echo -e "\e[32m为Debian安装zabbix源...\e[0m"
echo -e "\e[32m------------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 为Debian安装zabbix源... "
echo -e "\e[32m "
echo -e "\e[32m------------------------------------------------------------------------\e[0m"
apt install curl wget -y
if [ "$VERSION_ID" == "12" ]; then
# https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-1+debian12_all.deb
curl -O https://mirrors.aliyun.com/zabbix/zabbix/7.0/${ID}/pool/main/z/zabbix-release/zabbix-release_7.0-1+${ID}${VERSION_ID}_all.deb
dpkg -i "zabbix-release_7.0-1+${ID}${VERSION_ID}_all.deb"
else
echo -e "\e[91m不支持的系统版本,脚本停止运行.\e[0m"
exit 1
fi
sed -i 's/repo\.zabbix\.com/mirrors\.aliyun\.com\/zabbix/' /etc/apt/sources.list.d/zabbix.list
apt update -y
if [ "$USE_NGINX" == "true" ];then
echo -e "\n\e[32m使用nginx\n\e[0m"
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
sed -i '/^\s*include \/etc\/nginx\/sites-enabled\// s/^/#/' /etc/nginx/nginx.conf
# [可选]开启80端口
sed -i 's/^#\( \+\)listen\( \+\)8080;/\1listen\280;/' /etc/nginx/conf.d/zabbix.conf
else
echo -e "\n\e[32m使用apache\n\e[0m"
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
fi
[ $? -ne 0 ] && echo -e "\e[91m安装zabbix失败,请检查错误信息.\e[0m" && exit 1
}
install_zabbix_release_on_ubuntu() {
# echo -e "\e[32m为Ubuntu安装zabbix源...\e[0m"
echo -e "\e[32m------------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 为Ubuntu安装zabbix源... "
echo -e "\e[32m "
echo -e "\e[32m------------------------------------------------------------------------\e[0m"
apt install -y curl wget
VERSION_ID_BIG=$(echo "$VERSION_ID" | cut -d'.' -f1)
if ( [ "$VERSION_ID_BIG" == "22" ] || [ "$VERSION_ID_BIG" == "24" ] ); then
# https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
# https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu24.04_all.deb
curl -O https://mirrors.aliyun.com/zabbix/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu${VERSION_ID}_all.deb
dpkg -i zabbix-release_7.0-1+ubuntu${VERSION_ID}_all.deb
else
echo -e "\e[91m不支持的操作系统版本,脚本停止运行。\e[0m"
exit 1
fi
sed -i 's/repo\.zabbix\.com/mirrors\.aliyun\.com\/zabbix/' /etc/apt/sources.list.d/zabbix.list
sed -i 's/repo\.zabbix\.com/mirrors\.aliyun\.com\/zabbix/' /etc/apt/sources.list.d/zabbix-agent2-plugins.list > /dev/null 2>&1
apt update -y
if [ "$USE_NGINX" == "true" ]; then
echo -e "\n\e[32m使用nginx\n\e[0m"
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent language-pack-zh-hans
sed -i '/^\s*include \/etc\/nginx\/sites-enabled\// s/^/#/' /etc/nginx/nginx.conf
# [可选]开启80端口
sed -i 's/^#\( \+\)listen\( \+\)8080;/\1listen\280;/' /etc/nginx/conf.d/zabbix.conf
else
echo -e "\n\e[32m使用apache\n\e[0m"
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent language-pack-zh-hans
fi
[ $? -ne 0 ] && echo -e "\e[91m安装zabbix失败,请检查错误信息.\e[0m" && exit 1
}
install_mariadb_centos() {
# echo -e "\e[32m安装mariadb源...\e[0m"
echo -e "\e[32m------------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 安装mariadb源... "
echo -e "\e[32m "
echo -e "\e[32m------------------------------------------------------------------------\e[0m"
cat > /etc/yum.repos.d/mariadb.repo <<EOF
[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/${MARIADB_VER}/rhel/\$releasever/\$basearch
gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
EOF
dnf install -y MariaDB-server MariaDB-client MariaDB-backup MariaDB-devel
systemctl enable mariadb --now
if systemctl is-active mariadb; then
echo -e "\e[32mMariaDB 安装成功\e[0m"
else
echo -e "\e[91mMariaDB 安装失败\e[0m"
exit 1
fi
}
install_mariadb_debian(){
# echo -e "\e[32m安装mariadb源...\e[0m"
echo -e "\e[32m------------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 安装mariadb源... "
echo -e "\e[32m "
echo -e "\e[32m------------------------------------------------------------------------\e[0m"
apt-get install -y apt-transport-https curl
VERSION_ID_BIG=$(echo "$VERSION_ID" | cut -d'.' -f1)
if [ "$VERSION_ID_BIG" == "24" ]; then
apt install -y mariadb-server mariadb-client
else
mkdir -p /etc/apt/keyrings
curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
cat > /etc/apt/sources.list.d/mariadb.sources <<EOF
# MariaDB ${MARIADB_VER} repository list
X-Repolib-Name: MariaDB
Types: deb
URIs: https://mirrors.aliyun.com/mariadb/repo/${MARIADB_VER}/$ID
Suites: ${VERSION_CODENAME}
Components: main
Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp
EOF
apt update
apt install -y mariadb-server mariadb-client
fi
systemctl enable mariadb --now
if systemctl is-active mariadb; then
echo -e "\e[32mMariaDB 安装成功\e[0m"
else
echo -e "\e[91mMariaDB 安装失败\e[0m"
exit 1
fi
}
init_database() {
# echo -e "\e[32m初始化数据库...\e[0m"
echo -e "\e[32m-----------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 初始化数据库... "
echo -e "\e[32m "
echo -e "\e[32m-----------------------------------------------------------------------\e[0m"
if [ "$DATABASE" == "mariadb" ]; then
SQL_EXEC=mariadb
else
SQL_EXEC=mysql
fi
${SQL_EXEC} -uroot -s mysql <<EOF
create database zabbix character set utf8mb4 collate utf8mb4_bin;
CREATE USER ${MYSQL_ZABBIX_USER}@'localhost' IDENTIFIED BY "${MYSQL_ZABBIX_PASS}";
GRANT ALL PRIVILEGES on zabbix.* TO ${MYSQL_ZABBIX_USER}@'localhost';
set global log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
EOF
# echo -e "\e[32m导入初始化数据...\e[0m"
echo -e "\e[32m-----------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 导入初始化数据... "
echo -e "\e[32m "
echo -e "\e[32m-----------------------------------------------------------------------\e[0m"
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | ${SQL_EXEC} --default-character-set=utf8mb4 -u${MYSQL_ZABBIX_USER} -p${MYSQL_ZABBIX_PASS} zabbix
sed -i "s/# DBPassword=/DBPassword=${MYSQL_ZABBIX_PASS}/g" /etc/zabbix/zabbix_server.conf
echo "set global log_bin_trust_function_creators = 0;" | ${SQL_EXEC} -uroot
# 修改root密码
${SQL_EXEC} -uroot -s mysql <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY "${MYSQL_ROOT_PASSWORD}";
FLUSH PRIVILEGES;
EOF
}
centos_or_rocky_finsh() {
# echo -e "\e[32m安装完成,启动服务...\e[0m"
echo -e "\e[32m-----------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 安装完成,启动服务... "
echo -e "\e[32m "
echo -e "\e[32m-----------------------------------------------------------------------\e[0m"
if [ "$USE_NGINX" == "true" ]; then
# 重启服务nginx
echo -e "\e[32m重启服务nginx\e[0m"
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php-fpm
else
# 启动服务apahce
echo -e "\e[32m重启服务apahce\e[0m"
systemctl restart zabbix-server zabbix-agent httpd php-fpm
systemctl enable zabbix-server zabbix-agent httpd php-fpm
fi
notification
}
ubuntu_or_debian_finsh() {
# echo -e "\e[32m安装完成,启动服务...\e[0m"
echo -e "\e[32m-----------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 安装完成,启动服务... "
echo -e "\e[32m "
echo -e "\e[32m-----------------------------------------------------------------------\e[0m"
if [ "$USE_NGINX" == "true" ]; then
echo -e "\e[32m重启服务nginx\e[0m"
php_fpm=$(systemctl list-unit-files | grep 'php.*-fpm\.service' | awk '{print $1}')
systemctl disable apache2 > /dev/null 2>&1
systemctl stop apache2 > /dev/null 2>&1
systemctl daemon-reload
systemctl restart zabbix-server zabbix-agent nginx ${php_fpm}
systemctl enable zabbix-server zabbix-agent nginx ${php_fpm}
else
echo -e "\e[32m重启服务apahce\e[0m"
systemctl restart zabbix-server apache2 zabbix-agent
systemctl enable zabbix-server apache2 zabbix-agent
fi
notification
}
change_font_to_chinese() {
# echo -e "\e[32m解决zabbix图表中文乱码问题\e[0m"
echo -e "\e[32m-----------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 解决zabbix图表中文乱码问题 "
echo -e "\e[32m "
echo -e "\e[32m-----------------------------------------------------------------------\e[0m"
wget -P /usr/share/zabbix/assets/fonts https://www.xxshell.com/download/sh/zabbix/ttf/simkai.ttf
cd /usr/share/zabbix/assets/fonts/
if [ -e "simkai.ttf" ]; then
mv graphfont.ttf graphfont.ttf.bak
mv simkai.ttf graphfont.ttf
else
echo -e "\e[31m中文字体simkai.ttf不存在,请重新下载!\e[0m"
fi
}
notification() {
echo
# echo -e "\e[32m全部安装完成\e[0m"
# echo -e "\e[31m数据库 root 用户初始密码:${MYSQL_ROOT_PASSWORD}\e[0m"
# echo -e "\e[31m数据库 zabbix 用户初始密码:${MYSQL_ZABBIX_PASS}\e[0m"
echo -e "\e[32m-----------------------------------------------------------------------"
echo -e "\e[32m "
echo -e "\e[32m 全部安装完成 "
echo -e "\n\e[32m 数据库 root 用户初始密码:${MYSQL_ROOT_PASSWORD} "
echo -e "\n\e[32m 数据库 zabbix 用户初始密码:${MYSQL_ZABBIX_PASS} "
echo -e "\e[32m "
echo -e "\e[32m-----------------------------------------------------------------------\e[0m"
# 获取ip
if command -v ip &> /dev/null; then
# 使用ip命令获取IP地址并存储到ip变量
ip=$(ip addr | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1 | grep -v "^127.")
else
# 使用ifconfig命令获取IP地址并存储到ip变量
ip=$(ifconfig | grep -oP 'inet\s+\K[\d.]+' | grep -v "^127.")
fi
# 使用for循环打印IP地址,并在每次打印后输出 "ok"
# echo -e "\e[32m访问继续下一步操作:\e[0m"
echo -e "\e[32m-----------------------------------------------------------------------"
echo -e "\e[32m"
echo -e "\e[32m 访问 WEB 继续下一步操作:"
for i in $ip; do
if [ "$USE_NGINX" == "true" ]; then
# echo -e "\e[32m使用Nginx,访问: http://$i\e[0m"
echo -e "\n\e[32m 使用Nginx,访问: http://$i "
else
# echo -e "\e[32m使用Apache,访问: http://$i/zabbix\e[0m"
echo -e "\n\e[32m 使用Apache,访问: http://$i/zabbix "
fi
done
# echo -e "\e[32m网页登陆,用户名密码: Admin / zabbix\e[0m"
echo -e "\n\e[32m 网页登陆,用户名密码: Admin / zabbix "
echo -e "\n\e[32m-----------------------------------------------------------------------\e[0m"
if [ "$ID" == "debian" ]; then
echo -e "\n\e[31m请手动执行 dpkg-reconfigure locales 安装中文语言包!!!\e[0m"
echo -e "\e[31m执行后勾选 zh_CN.UTF-8!!!\e[0m"
echo -e "\e[31m安装结束后,重启服务: \e[0m"
echo -e "\e[31msystemctl restart apache2 or systemctl restart nginx php*-fpm.service\e[0m"
fi
}
main() {
# 获取操作系统信息
if [ -f /etc/os-release ]; then
. /etc/os-release
echo -e "\e[32m操作系统版本为: $ID linux ${VERSION_ID}\e[0m"
case "$ID" in
centos|rocky)
# CentOS 或 Rocky Linux 的安装步骤
VERSION_ID=$(echo "$VERSION_ID" | cut -d'.' -f1)
if ( [ "$VERSION_ID" == "8" ] || [ "$VERSION_ID" == "9" ]); then
install_zabbix_release_on_centos_or_rocky
install_mariadb_centos
change_font_to_chinese
init_database
config_firewalld_on_centos_or_rocky
centos_or_rocky_finsh
else
echo -e "\e[91m不支持的操作系统版本,脚本停止运行。\e[0m"
exit 1
fi
;;
debian|ubuntu)
# Debian 或 Ubuntu 的安装步骤
if [ "$ID" == "debian" ]; then
install_zabbix_release_on_debian
elif [ "$ID" == "ubuntu" ]; then
install_zabbix_release_on_ubuntu
apt -y install language-pack-zh-hans
else
echo -e "\e[91m不支持的操作系统版本,脚本停止运行。\e[0m"
exit 1
fi
install_mariadb_debian
change_font_to_chinese
init_database
config_ufw_on_ubuntu_or_debian
ubuntu_or_debian_finsh
;;
esac
fi
}
# 主函数
main
2.被监控端服务安装
#!/bin/bash
# Zabbix 7.0 Agent2 被监控端自动安装脚本
# 适用:CentOS/RHEL/Ubuntu/Debian
# 使用方法:chmod +x zabbix_agent2_install.sh && ./zabbix_agent2_install.sh
# ====================== 配置项(请修改) ======================
# ZABBIX服务端IP地址(必填)
ZABBIX_SERVER="192.168.1.100"
# 本机主机名(建议和Zabbix前端添加的主机名一致,留空则自动获取本机hostname)
AGENT_HOSTNAME=""
# ==============================================================
# 自动获取本机主机名
if [ -z "$AGENT_HOSTNAME" ]; then
AGENT_HOSTNAME=$(hostname)
fi
echo "============================================="
echo "Zabbix 7.0 Agent2 自动安装脚本"
echo "服务端IP: $ZABBIX_SERVER"
echo "本机主机名: $AGENT_HOSTNAME"
echo "============================================="
# 检查root权限
if [ $UID -ne 0 ]; then
echo "错误:请使用root权限运行脚本!"
exit 1
fi
# 识别系统类型
if [ -f /etc/redhat-release ]; then
OS="rhel"
OS_VER=$(rpm -E %rhel)
elif [ -f /etc/lsb-release ]; then
OS="debian"
. /etc/lsb-release
DISTRO=$DISTRIB_CODENAME
elif [ -f /etc/debian_version ]; then
OS="debian"
DISTRO=$(cat /etc/debian_version | cut -d'.' -f1)
case $DISTRO in
10) DISTRO="buster" ;;
11) DISTRO="bullseye" ;;
12) DISTRO="bookworm" ;;
*) echo "不支持的Debian版本"; exit 1 ;;
esac
else
echo "不支持的操作系统!"
exit 1
fi
# 安装Zabbix 7.0官方源
echo "正在配置Zabbix 7.0官方源..."
if [ "$OS" = "rhel" ]; then
rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/${OS_VER}/x86_64/zabbix-release-7.0-1.el${OS_VER}.noarch.rpm
# 清空并生成yum缓存
yum clean all && yum makecache
# 安装Agent2
yum install -y zabbix-agent2 zabbix-agent2-plugin-*
else
# 安装依赖
apt update && apt install -y wget gnupg2
# 添加Zabbix GPG密钥
wget -O - https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb | dpkg -i
# 更新源
apt update
# 安装Agent2
apt install -y zabbix-agent2 zabbix-agent2-plugin-*
fi
# 备份原始配置文件
echo "正在备份原始配置文件..."
cp /etc/zabbix/zabbix_agent2.conf /etc/zabbix/zabbix_agent2.conf.bak
# 自动修改配置文件
echo "正在配置Agent2..."
sed -i "s/^Server=127.0.0.1/Server=$ZABBIX_SERVER/g" /etc/zabbix/zabbix_agent2.conf
sed -i "s/^ServerActive=127.0.0.1/ServerActive=$ZABBIX_SERVER/g" /etc/zabbix/zabbix_agent2.conf
sed -i "s/^Hostname=.*$/Hostname=$AGENT_HOSTNAME/g" /etc/zabbix/zabbix_agent2.conf
# 开启防火墙端口(10050)
echo "正在配置防火墙放行10050端口..."
if systemctl status firewalld >/dev/null 2>&1; then
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --reload
elif command -v ufw >/dev/null 2>&1; then
ufw allow 10050/tcp
ufw reload
fi
# 启动并设置开机自启
echo "正在启动Zabbix Agent2并设置开机自启..."
systemctl restart zabbix-agent2
systemctl enable zabbix-agent2
# 检查运行状态
echo "============================================="
echo "安装完成!检查Agent2状态:"
systemctl status zabbix-agent2 --no-pager
echo "============================================="
echo "✅ Zabbix 7.0 Agent2 安装配置完成!"
echo "服务端IP:$ZABBIX_SERVER"
echo "本机主机名:$AGENT_HOSTNAME"
echo "监听端口:10050"
echo "============================================="
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)