Zabbix7.0服务器+ubuntu20.04客户端安装
参考
Ubuntu Zabbix 安装部署及简单使用
ubuntu22.04.4华为镜像源下载
Zabbix 7.0邮箱告警配置指南:三大步骤轻松搞定邮件告警通知
尽量在root用户下操作,权限大不容易报错
sudo su - //临时且成root用户
华为路由器对于zabbix的配置,已经安装好zabbix了
1.在路由器里配置
snmp-agent sys-info version v2c \指定版本
snmp-agent community read public \团体名需要一致,只读模式
snmp-agent target-host trap-hostname public 192.168.18.6 udp-port 162 trap-paramsname public \主机名和zabbix的地址等
snmp-agent target-host trap-paramsname public v2c secu public
snmp-agent trap enable
Y
snmp-agent
[Huaweilsnmp-agent trap enable feature-name ifnet trap-name linkdown
[Huawei]snmp-agent trap enable feature-name ifnet trap-name linkup
\主动上报端口状态
一、安装zabbix
在官方网站https://www.zabbix.com/cn/download选择相关选项,会给出一些安装命令,比如
https://www.zabbix.com/cn/download?zabbix=7.0&os_distribution=ubuntu&os_version=24.04&components=server_frontend_agent_2&db=mysql&ws=nginx
root4@zabbix2:~$ sudo su \切换成root用户
1.更新zaibbix源
zabbix主机ip 192.168.66.139
##查看ubuntu版本
root3@ubuntu3:/$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy
#使用zabbix7.0和Ubuntu22.4,后面的5是补丁版本不用写
root3@ubuntu3:/$ cd /tmp
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_all.deb
--2026-04-09 11:22:09-- https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_all.deb
Resolving repo.zabbix.com (repo.zabbix.com)... 178.128.6.101, 2604:a880:2:d0::2062:d001
Connecting to repo.zabbix.com (repo.zabbix.com)|178.128.6.101|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8288 (8.1K) [application/octet-stream]
Saving to: ‘zabbix-release_latest_7.0+ubuntu22.04_all.deb’
zabbix-release_latest_7.0+ubuntu22.04_all.deb 100%[===================================================================================================================>] 8.09K --.-KB/s in 0s
2026-04-09 11:22:10 (75.0 MB/s) - ‘zabbix-release_latest_7.0+ubuntu22.04_all.deb’ saved [8288/8288]
root3@ubuntu3:/tmp$
定制软件源-2
获取最新版本的 zabbix 软件源
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
apt update
2、安装服务端
Install Zabbix server, frontend, agent2
apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
c. Install Zabbix agent 2 plugins you may want to install Zabbix agent 2 plugins.
apt install zabbix-agent2-plugin-mongodb zabbix-agent2-plugin-mssql zabbix-agent2-plugin-postgresql
3、MySQL 数据库环境配置
安装 mysql 数据库(这一步官方网站没有)
apt install mysql-server -y
进入数据库并配置
mysql -uroot -p
//输入管理员账户密码 password
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
----------------------------------------------------
create database zabbix character set utf8mb4 collate utf8mb4_bin;
创建一个名为zabbix的空数据库,指定用utf8mb4字符集、utf8mb4_bin排序规则:
字符集选utf8mb4:支持所有Unicode字符(包括生僻字、emoji),避免Zabbix存中文/特殊字符乱码
排序规则选utf8mb4_bin:二进制排序,区分大小写,完全符合Zabbix的要求,避免索引异常
create user zabbix@localhost identified by 'zabbix';
创建一个名为zabbix的数据库用户,限制只能从localhost(本机)连接这个数据库,密码设置为zabbix:
@localhost是安全限制:只允许Zabbix服务本身(本地)连接,不允许远程登录,避免数据库被外网访问
你可以把'zabbix'改成自己的复杂密码,后面配置Zabbix连接数据库的时候用对应的密码就行
grant all privileges on zabbix.* to zabbix@localhost;
给zabbix用户授权:允许这个用户对zabbix数据库里的所有表、所有操作(增删改查、建表删表)有全部权限,Zabbix需要这个权限来自动维护自己的数据,权限不够会运行异常。
set global log_bin_trust_function_creators = 1;
开启全局参数log_bin_trust_function_creators:
MySQL开启二进制日志(binlog,默认开启,用于主从复制/数据恢复)后,默认不允许创建存储函数/触发器,而Zabbix初始化的时候需要创建大量存储函数,所以必须先开这个参数,不然导入初始SQL的时候会直接报错。
----------------------------------------------
官方出于安全考虑要求把参数改回来
# mysql -uroot -p
password
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;
使用默认的 sql 文件,创建 zabbix 的数据库环境
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p'zabbix' zabbix
这个跟官网的不太一样
mysql -uzabbix -p'zabbix' -e "use zabbix;show tables"
查表检测一下正不正常

4、Zabbix 数据源配置
为 Zabbix server 配置数据库
在/etc/zabbix/zabbix_server.conf中,去掉#并填写数据库密码
DBPassword= zabbix
查看
root@zabbix2:~# cat /etc/zabbix/zabbix_server.conf | grep -vE "^#|^$"
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
EnableGlobalScripts=0
Include=/etc/zabbix/zabbix_server.d/*.conf
重启zabbix生效
sudo systemctl restart zabbix-server
5.Nginx 环境定制
查看 nginx 配置
egrep -v ‘#|^$’ /etc/nginx/nginx.conf 
root4@zabbix2:~$
root4@zabbix2:~$ ls -l /etc/nginx/conf.d/
total 0
lrwxrwxrwx 1 root root 22 Apr 14 14:18 zabbix.conf -> /etc/zabbix/nginx.conf
删除默认的 nginx 首页配置文件(加sudo否则会无权限报错)
root4@zabbix2:/etc/nginx/sites-enabled$ sudo rm -f /etc/nginx/sites-enabled/default
[sudo] password for root4:
root4@zabbix2:/etc/nginx/sites-enabled$ ll
total 8
drwxr-xr-x 2 root root 4096 Apr 16 12:17 ./
drwxr-xr-x 8 root root 4096 Apr 14 14:18 ../
修改监听80端口
i插入,删除#并修改端口,:wq保存退出
6、PHP 环境定制
修改 php 配置,添加时区
添加
php_value[date.timezone] = Asia/Shanghai
root@zabbix2:~# vim /etc/zabbix/php-fpm.conf
root@zabbix2:~# cat /etc/zabbix/php-fpm.conf
[zabbix]
user = www-data
group = www-data
listen = /var/run/php/zabbix.sock
listen.owner = www-data
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 200
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/sessions/
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = Asia/Shanghai
7.重启相关服务
重启相关服务,并设置为开机自启动
systemctl restart zabbix-server zabbix-agent nginx php8.3-fpm
systemctl enable zabbix-server zabbix-agent nginx php8.3-fpm

检测效果
root@zabbix2:~# apt install net-tool
root@zabbix2:~# netstat -tnulp | egrep 'resol|nginx|php|zabbix'

root@zabbix2:/etc/nginx/sites-available# php --version
PHP 8.3.6 (cli) (built: Mar 20 2026 02:32:55) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies
root@zabbix2:/etc/nginx/sites-available# ls /run/php/php*.sock
/run/php/php8.3-fpm.sock /run/php/php-fpm.sock
root@zabbix2:/etc/nginx/sites-available#
root@zabbix2:/etc/nginx/sites-available# nginx -t
systemctl reload nginx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@zabbix2:/etc/nginx/sites-available# chown -R www-data:www-data /usr/share/zabbix/
chmod -R 755 /usr/share/zabbix/
root@zabbix2:/etc/nginx/sites-available#
7配置完不好用。,web无法访问 又做了如下配置
编辑默认配置文件:
nano /etc/nginx/sites-available/default
找到这几行,修改成Zabbix的路径:
root /var/www/html; # ← 这一行改成
root /usr/share/zabbix;
index index.html index.htm index.nginx-debian.html; # ← 这一行改成
index index.php index.html index.htm;
先检查一下你的PHP版本和sock路径:
ls /run/php/php*.sock
会输出类似/run/php/php8.3-fpm.sock,根据实际版本修改上面配置里的fastcgi_pass路径
再找到location ~ .php$ {这个区块(目前是注释状态),把它改成这样(注意去掉注释#):
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock; # 注意确认PHP版本
}
3重启Nginx
保存配置文件后,测试语法并重启:
nginx -t
systemctl reload nginx
给Zabbix目录权限
确保Nginx用户能访问Zabbix目录:
chown -R www-data:www-data /usr/share/zabbix/
chmod -R 755 /usr/share/zabbix/
创建软链接,启用这个站点配置:
#创建软链接
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
#验证
ls -la /etc/nginx/sites-enabled/
如果模版不对就全重新配置
# 备份旧配置
mv /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
# 创建新的Zabbix专用配置
cat > /etc/nginx/sites-available/default << 'EOF'
server {
listen 80;
server_name _;
root /usr/share/zabbix;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_param PHP_VALUE "max_execution_time=300 \n max_input_time=300 \n memory_limit=128M \n post_max_size=16M \n upload_max_filesize=2M";
}
location ~ /\.ht {
deny all;
}
}
EOF
8.web界面配置
机安装中文语言包,重启 zabbix 相关服务后重新打开 web 页面,才能修改语言为中文,否则无法选择,,安装完重启系统,让填什么填什么,不停下一步就好了
apt -y install language-pack-zh-hans

输入默认的用户名"Admin"及默认密码"zabbix",点击登录 有大小写区别
9.中文显示异常解决
图形界里的中文字体显示异常,需要修改字符集,查看默认字符集
root4@zabbix2:~$ grep -ni ZBX_FONT_NAME /usr/share/zabbix/include/defines.inc.php
188:define('ZBX_FONT_NAME', 'graphfont');

在本地C:\Windows\Fonts下找中文字体,把文件传到/tmp文件夹,把之前的文件重命名后,再用mv命令移动并重命名
sudo su -
root@zabbix2:~# cd /usr/share/zabbix/assets/fonts/
root@zabbix2:/usr/share/zabbix/assets/fonts# sudo mv graphfont.ttf graphfont.ttf.bak
## msyhl.ttc字体文件文件通过xftp传到/tmp目录
sudo mv /tmp/msyhl.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf
10.地图显示异常解决
仪表盘地理地图无法正常显示
点击管理-常规-地理地图,修改成高德地图
https://webrd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}
点首页的地图右上角小齿轮,可以更改初始地图位置,下位北京
39.908692,116.397477,11
二、Zabbix Agent 安装部署
分两种一种是在被监控的主机上安装客户端主动上报zabbix,一种是Agent 监控采样更丰富更及时,一种是SNMP只获取一些基本信息
客户端方式
1、定制软件源
在另一台ubuntu上 192.168.66.131
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
apt update
该脚本针对zabbix 7.0.25和ubuntu20.04
#!/bin/bash
# Zabbix Agent 7.0.25 安装脚本 - 修复版
# 作者:AI Assistant
# 日期:$(date +%Y-%m-%d)
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 配置参数
ZBX_SERVER="192.168.66.139"
ZBX_VERSION="7.0.25"
UBUNTU_VERSION="focal" # 20.04代号
ZBX_AGENT_PKG_NAME="zabbix-agent2" # 使用zabbix-agent2(推荐)
LOCAL_IP="192.168.66.131"
HOSTNAME=$(hostname -s)
DOWNLOAD_DIR="/tmp/zabbix_download"
# 日志函数
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查是否为root用户
check_root() {
if [[ $EUID -ne 0 ]]; then
log_error "此脚本必须以root用户运行"
exit 1
fi
}
# 清理APT源并修复
fix_apt_sources() {
log_info "备份并修复APT源..."
# 备份当前源
cp /etc/apt/sources.list /etc/apt/sources.list.backup.$(date +%Y%m%d)
# 创建新的sources.list(使用清华源,速度快且稳定)
cat > /etc/apt/sources.list << 'EOF'
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
EOF
log_success "APT源已更新为清华源"
}
# 更新系统包列表(不更新软件)
update_package_list() {
log_info "更新APT包列表..."
apt-get update
if [ $? -eq 0 ]; then
log_success "包列表更新成功"
else
log_error "包列表更新失败,继续尝试..."
# 尝试清理缓存
apt-get clean
apt-get update --fix-missing
fi
}
# 安装必要依赖
install_dependencies() {
log_info "安装必要依赖..."
apt-get install -y wget curl gnupg lsb-release ca-certificates
if [ $? -eq 0 ]; then
log_success "依赖安装成功"
else
log_error "依赖安装失败"
return 1
fi
}
# 从Zabbix官方源下载deb包到本地
download_zabbix_deb() {
log_info "创建下载目录..."
mkdir -p $DOWNLOAD_DIR
cd $DOWNLOAD_DIR
log_info "下载Zabbix GPG密钥..."
wget -q https://repo.zabbix.com/zabbix-official-repo.key -O zabbix-official-repo.key
log_info "下载Zabbix Agent deb包..."
# Zabbix官方deb包URL
ZBX_DEB_URL="https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix/${ZBX_AGENT_PKG_NAME}_${ZBX_VERSION}-1+ubuntu${UBUNTU_VERSION}_amd64.deb"
log_info "下载地址: $ZBX_DEB_URL"
# 下载deb包
if wget -q --show-progress "$ZBX_DEB_URL" -O ${ZBX_AGENT_PKG_NAME}_${ZBX_VERSION}.deb; then
log_success "Zabbix Agent deb包下载成功"
echo "文件位置: $DOWNLOAD_DIR/${ZBX_AGENT_PKG_NAME}_${ZBX_VERSION}.deb"
ls -lh ${ZBX_AGENT_PKG_NAME}_${ZBX_VERSION}.deb
else
log_error "deb包下载失败"
log_info "尝试备用下载地址..."
# 备用下载地址(使用不同的URL格式)
ALTERNATE_URL="https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix/${ZBX_AGENT_PKG_NAME}_${ZBX_VERSION}-1+ubuntu20.04_amd64.deb"
if wget -q --show-progress "$ALTERNATE_URL" -O ${ZBX_AGENT_PKG_NAME}_${ZBX_VERSION}.deb; then
log_success "Zabbix Agent deb包下载成功(备用地址)"
else
log_error "备用地址也失败,请手动下载"
log_info "手动下载命令:"
echo "wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix/${ZBX_AGENT_PKG_NAME}_${ZBX_VERSION}-1+ubuntu${UBUNTU_VERSION}_amd64.deb"
return 1
fi
fi
}
# 安装本地deb包
install_local_deb() {
log_info "安装本地deb包..."
cd $DOWNLOAD_DIR
# 检查文件是否存在
if [ ! -f "${ZBX_AGENT_PKG_NAME}_${ZBX_VERSION}.deb" ]; then
log_error "未找到deb包文件"
return 1
fi
# 安装deb包
dpkg -i ${ZBX_AGENT_PKG_NAME}_${ZBX_VERSION}.deb 2>/dev/null
# 修复依赖问题
apt-get install -f -y
if [ $? -eq 0 ]; then
log_success "Zabbix Agent安装成功"
else
log_error "安装失败,尝试使用apt安装..."
apt-get install -y ./${ZBX_AGENT_PKG_NAME}_${ZBX_VERSION}.deb
fi
}
# 配置Zabbix Agent
configure_zabbix_agent() {
log_info "配置Zabbix Agent..."
# 备份原始配置
cp /etc/zabbix/zabbix_agent2.conf /etc/zabbix/zabbix_agent2.conf.backup.$(date +%Y%m%d)
# 创建新的配置
cat > /etc/zabbix/zabbix_agent2.conf << EOF
# Zabbix Agent 配置
# 生成时间: $(date)
# 服务器: $ZBX_SERVER
# 客户端: $LOCAL_IP
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=$ZBX_SERVER
ServerActive=$ZBX_SERVER
Hostname=$HOSTNAME
HostMetadata=linux
#HostInterface=eth0
ListenPort=10050
ListenIP=0.0.0.0
Include=/etc/zabbix/zabbix_agent2.d/*.conf
#ControlSocket=/tmp/agent.sock
# TLS配置(如果需要)
# TLSConnect=psk
# TLSAccept=psk
# TLSPSKIdentity=PSK001
# TLSPSKFile=/etc/zabbix/zabbix_agent2.psk
# 用户参数目录
#UserParameter=/etc/zabbix/zabbix_agent2.d/userparams.conf
# 主动检查
#主动检查刷新间隔s,设置过短可能导致频繁连接尝试
#RefreshActiveChecks=120
#
#缓冲区发送间隔
BufferSend=5
#
#如果设置过小,可能导致缓冲区满而拒绝连接
#BufferSize=100m
#
#限制每秒日志行数,可能导致某些检查失败
#MaxLinesPerSecond=100
# 安全设置
AllowKey=system.run[*]
UnsafeUserParameters=1
# 超时设置 由3可以改到10
Timeout=3
EOF
log_success "Zabbix Agent配置完成"
# 显示关键配置
log_info "关键配置:"
echo "Server=$ZBX_SERVER"
echo "Hostname=$HOSTNAME"
echo "ListenIP=0.0.0.0"
echo "ListenPort=10050"
}
# 启动Zabbix Agent服务
start_zabbix_service() {
log_info "启动Zabbix Agent服务..."
# 启用服务自启动
systemctl enable zabbix-agent2
# 启动服务
systemctl start zabbix-agent2
# 检查服务状态
sleep 2
systemctl status zabbix-agent2 --no-pager | head -20
if systemctl is-active --quiet zabbix-agent2; then
log_success "Zabbix Agent服务启动成功"
else
log_error "服务启动失败"
log_info "尝试查看日志..."
journalctl -u zabbix-agent2 -n 20 --no-pager
return 1
fi
}
# 配置防火墙
configure_firewall() {
log_info "配置防火墙允许Zabbix端口..."
# 检查ufw是否安装
if command -v ufw > /dev/null 2>&1; then
if ufw status | grep -q "Status: active"; then
ufw allow 10050/tcp comment 'Zabbix Agent'
log_success "防火墙已配置允许端口10050"
else
log_info "UFW防火墙未激活"
fi
else
log_info "UFW未安装,跳过防火墙配置"
fi
}
# 测试连接
test_connection() {
log_info "测试连接到Zabbix Server..."
# 检查端口是否监听
if ss -tlnp | grep -q ":10050"; then
log_success "Zabbix Agent正在监听端口10050"
else
log_warning "Zabbix Agent未监听端口10050"
fi
# 测试网络连通性
if timeout 5 bash -c "echo > /dev/tcp/$ZBX_SERVER/10051" 2>/dev/null; then
log_success "可以连接到Zabbix Server端口10051"
else
log_warning "无法连接到Zabbix Server端口10051"
fi
# 显示本地连接测试
log_info "本地连接测试:"
zabbix_agent2 -t "system.hostname"
log_info "使用以下命令测试:"
echo "zabbix_get -s $LOCAL_IP -p 10050 -k 'system.hostname'"
}
# 清理下载文件(可选)
cleanup() {
log_info "清理临时文件..."
if [ -d "$DOWNLOAD_DIR" ]; then
# 可选:保留deb包
# rm -rf $DOWNLOAD_DIR
log_info "下载的文件保存在: $DOWNLOAD_DIR"
fi
}
# 显示安装摘要
show_summary() {
echo ""
echo "==============================================="
echo " Zabbix Agent 安装完成摘要"
echo "==============================================="
echo "主机名: $HOSTNAME"
echo "客户端IP: $LOCAL_IP"
echo "Zabbix Server: $ZBX_SERVER"
echo "Zabbix版本: $ZBX_VERSION"
echo "安装包: $ZBX_AGENT_PKG_NAME"
echo "配置文件: /etc/zabbix/zabbix_agent2.conf"
echo "日志文件: /var/log/zabbix/zabbix_agent2.log"
echo ""
echo "服务状态:"
systemctl status zabbix-agent2 --no-pager | grep "Active:"
echo ""
echo "测试命令:"
echo " sudo systemctl status zabbix-agent2"
echo " sudo journalctl -u zabbix-agent2 -f"
echo " zabbix_get -s $LOCAL_IP -p 10050 -k 'system.hostname'"
echo ""
echo "管理命令:"
echo " 启动: sudo systemctl start zabbix-agent2"
echo " 停止: sudo systemctl stop zabbix-agent2"
echo " 重启: sudo systemctl restart zabbix-agent2"
echo " 查看日志: sudo journalctl -u zabbix-agent2 -f"
echo "==============================================="
# 1. 停止并重启服务
systemctl stop zabbix-agent2
systemctl start zabbix-agent2
systemctl enable zabbix-agent2
}
# 主函数
main() {
echo ""
echo "==============================================="
echo " Zabbix Agent 7.0.25 安装脚本 - 修复版"
echo "==============================================="
echo "开始时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "主机名: $HOSTNAME"
echo "本机IP: $LOCAL_IP"
echo "Zabbix Server: $ZBX_SERVER"
echo "Zabbix版本: $ZBX_VERSION"
echo "Ubuntu版本: Ubuntu 20.04.6"
echo "==============================================="
# 执行安装步骤
check_root
fix_apt_sources
update_package_list
install_dependencies
download_zabbix_deb
install_local_deb
configure_zabbix_agent
configure_firewall
start_zabbix_service
test_connection
cleanup
show_summary
echo ""
log_success "Zabbix Agent 安装完成!"
}
# 执行主函数
main "$@"
snmp方式
客户端的配置–Ubuntu20.04
安装SNMP服务
sudo apt update
sudo apt install snmp snmpd -y
编辑 /etc/snmp/snmpd.conf
rocommunity public default -V systemonly
rocommunity6 public default -V systemonly
改为下面,其中yanheng666为团体名
rocommunity yanheng666 default -V systemonly
rocommunity6 yanheng666 default -V systemonly
-----
# 确保视图包含基础系统信息(取消注释或添加)
view systemonly included .1.3.6.1.2.1.1
view systemonly included .1.3.6.1.2.1.25.1
-----
注释掉原来的行
agentaddress 127.0.0.1,[::1]
添加新的配置,允许所有外部访问
agentaddress 0.0.0.0:161,[::]:161
-----
安全可选项目,在团体名配置后面加ip
rocommunity neusoftt 192.168.66.0/24 -V systemonly # 仅允许192.168.66.0/24网段
rocommunity6 neusoftt fd00::/64 -V systemonly # IPv6示例
重启SNMP服务
sudo systemctl restart snmpd
sudo systemctl enable snmpd
开放防火墙(如果启用)
sudo ufw allow from 10.1.168.111 to any port 161 proto udp
sudo ufw reload
本地测试SNMP
snmpwalk -v 2c -c yanheng666 localhost .1.3.6.1.2.1.1.1
成功会返回类似:
iso.3.6.1.2.1.1.1.0 = STRING: “Linux ubuntu5 5.15.0-139-generic #149~20.04.1-Ubuntu SMP Wed Apr 16 08:29:56 UTC 2025 x86_64”
在zabbix上测试访问被监控主机
root@zabbix2:~# snmpwalk -v 2c -c yanheng666 192.168.66.131 .1.3.6.1.2.1.1.1
输出
iso.3.6.1.2.1.1.1.0 = STRING: “Linux ubuntu5 5.15.0-139-generic #149~20.04.1-Ubuntu SMP Wed Apr 16 08:29:56 UTC 2025 x86_64”
2zabbix配置
数据采集-主机-创建主机
主机信息:
主机名称:Ubuntu20.04-SNMP
可见名称:自定义(如Production Server)
群组:Linux servers
SNMP接口:
IP地址:Ubuntu服务器的IP(非127.0.0.1)
端口:161
SNMP版本:SNMPv2c
模板关联:
添加:Template OS Linux by SNMP
宏设置:
添加宏:{KaTeX parse error: Expected 'EOF', got '}' at position 15: SNMP_COMMUNITY}̲ → 值:yanheng666…SNMP_COMMUNITY}字段并更改为设定的团体名
三、报警
1、配置报警媒介
1申请qq邮箱的地址和授权码
主菜单告警-媒介-创建媒介
2.1填写媒介信息,下图是163的,我用qq邮箱各种试用过不去,最后用py脚本发邮件
2.2脚本配置
测试授权码能否正常登录
# 使用完整邮箱测试
python3 -c "
import smtplib
try:
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
server.login('635161812@qq.com', '这里粘贴新授权码')
print('成功!')
server.quit()
except Exception as e:
print('失败:', e)
"
# 创建脚本目录(如果不存在)
mkdir -p /usr/lib/zabbix/alertscripts
cd /usr/lib/zabbix/alertscripts
# 创建Python发送脚本
cat > send_qq_mail.py << 'EOF'
#!/usr/bin/env python3
import smtplib
import sys
from email.mime.text import MIMEText
# 配置
SMTP_SERVER = 'smtp.qq.com'
SMTP_PORT = 465
USERNAME = '635161812@qq.com'
PASSWORD = '你的16位授权码'
def send_email(to_email, subject, body):
msg = MIMEText(body, 'plain', 'utf-8')
msg['Subject'] = subject
msg['From'] = USERNAME
msg['To'] = to_email
try:
with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as server:
server.login(USERNAME, PASSWORD)
server.sendmail(USERNAME, [to_email], msg.as_string())
return "Success"
except Exception as e:
return f"Error: {e}"
if __name__ == '__main__':
# Zabbix会传递参数:send_qq_mail.py <收件人> <主题> <消息>
if len(sys.argv) < 4:
print("Usage: send_qq_mail.py <to> <subject> <message>")
sys.exit(1)
to_email = sys.argv[1]
subject = sys.argv[2]
message = sys.argv[3]
result = send_email(to_email, subject, message)
print(result)
EOF
# 给脚本执行权限
chmod 777 send_qq_mail.py
2.3创建媒介类型按下图填写
类型选脚本,脚本名称和创建的脚本相同,安顺序增加三个脚本参数并保存更新
{ALERT.SENDTO} # 参数1,对应脚本中的收件人
{ALERT.SUBJECT} # 参数2,主题
{ALERT.MESSAGE} # 参数3,消息正文
添加消息模版
随后点击更新进行保存,返回上一页,可以看到媒介已经启用
2.4测试脚本发送测试消息,如果想用web界面的对应触发器的测试,把第一个换成邮箱,第二个换成标题,四三项换成内容
# 使用zabbix用户执行脚本
sudo -u zabbix /usr/lib/zabbix/alertscripts/send_qq_mail.py \
"你的接收邮箱@example.com" \
"测试动作配置" \
"这是一条测试消息,用于验证动作和脚本配置是否正常工作"
# 查看执行结果
echo $?
# 返回0表示成功,非0表示失败
2、配置触发器的动作
主菜单的告警-动作-触发器动作-创建动作

条件里可以指定特定主机或者组,不添加则表示全部主机
添加问题触发动作,回复通不通知都可
可以自定义邮件主题和内容
[Zabbix监控告警] 来自{HOST.NAME}
以下是来自Zabbix监控系统的告警信息:
触发器动作
告警时间: {EVENT.DATE} {EVENT.TIME}
告警主机: {HOST.NAME}
主机IP: {HOST.IP}
当前状态: {TRIGGER.STATUS}
告警信息: {TRIGGER.NAME}
问题详情: {ITEM.NAME}:{ITEM.VALUE}
告警等级: {TRIGGER.SEVERITY}
事件ID: {EVENT.ID}

3.触发等级
进入用户设置-配置-找到Admin—报警媒介
添加收件人邮箱、报警类型如灾难、严重、一般严重等等,需要点两次更新,改完回来看看保存上没有

4、增加触发器
发现模版(Linux by Zabbix agent)没有ping相关的触发器,增加一个
查找该模版-触发器-增加触发器,测试用时间设置的6秒
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)