参考
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秒
在这里插入图片描述

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐