您现在的位置是:首页 >技术教程 >Linux云计算SRE-第十三周网站首页技术教程

Linux云计算SRE-第十三周

晨曦启明711 2025-12-30 00:01:02
简介Linux云计算SRE-第十三周

1. 总结zabbix 手动部署过程。

Zabbix的手动部署过程可以分为以下步骤:

一、准备环境
系统要求:确保服务器满足Zabbix的安装要求,通常建议使用Linux系统,如CentOS或ROCKYLINUX。
安装依赖:安装必要的依赖包,如yum、gcc、make等。
二、添加Zabbix软件仓库
下载仓库配置包:从Zabbix官方网站下载对应版本的仓库配置包。
安装仓库配置包:使用rpm命令安装下载的配置包。
验证仓库:确认/etc/yum.repos.d/目录下已生成zabbix.repo文件,并检查其内容是否正确。
三、安装Zabbix Server、Proxy和前端
安装Zabbix Server:使用yum命令安装Zabbix Server软件包。
安装Zabbix Proxy(可选):如果需要分布式监控,可以安装Zabbix Proxy。
安装Zabbix前端:使用yum命令安装Zabbix前端软件包,如zabbix-web-mysql。
四、配置数据库
安装数据库:可以选择MySQL、MariaDB等数据库。
创建Zabbix数据库和用户:登录数据库,创建名为zabbix的数据库和对应的用户,并授权。
导入初始架构和数据:将Zabbix提供的初始架构和数据导入到数据库中。
五、配置Zabbix Server
编辑配置文件:修改Zabbix Server的配置文件,如/etc/zabbix/zabbix_server.conf,设置数据库连接信息。
配置PHP(如果使用Apache或Nginx作为前端服务器):根据前端服务器的不同,配置PHP以支持Zabbix前端。
六、配置前端服务器(如Nginx)
安装Nginx:如果未安装Nginx,需要先进行安装。
配置Nginx:修改Nginx的配置文件,如/etc/nginx/conf.d/zabbix.conf,设置Zabbix前端的虚拟主机。
测试Nginx配置:使用nginx -t命令测试配置文件是否正确。
启动Nginx:使用systemctl命令启动Nginx服务。
七、安装和配置Zabbix Agent
安装Zabbix Agent:在需要监控的服务器上安装Zabbix Agent。
配置Zabbix Agent:修改Zabbix Agent的配置文件,如/etc/zabbix/zabbix_agentd.conf,设置服务器地址和主机名等信息。
启动Zabbix Agent:使用systemctl命令启动Zabbix Agent服务。
八、配置防火墙和SELinux
配置防火墙:确保防火墙允许Zabbix Server、Agent和前端服务器的通信端口。
配置SELinux:如果系统启用了SELinux,需要配置SELinux策略以允许Zabbix的运行。
九、访问Zabbix前端并进行配置
访问Zabbix前端:在浏览器中访问Zabbix前端的URL,如http://your_server_ip/zabbix/。
登录Zabbix前端:使用默认的admin用户和密码登录。
进行初始化配置:根据提示进行语言选择、时区设置等初始化配置。
添加监控项和触发器:根据需要添加监控项、触发器和动作等。
十、验证和优化
验证监控:确保Zabbix能够正常监控目标服务器,并检查监控数据是否准确。
优化性能:根据实际需求对Zabbix进行优化,如调整监控频率、优化数据库性能等。
请注意,以上步骤可能因Zabbix版本和操作系统的不同而有所差异。因此,在实际部署过程中,建议参考Zabbix官方文档或相关教程进行操作。

2. 总结 zabbix主动模式和被动模式简介及实现

        Zabbix 提供了两种数据收集与监控的工作方式:主动模式(Active Mode)被动模式(Passive Mode)。这两种模式在数据收集方式、配置方法、优缺点以及适用场景上有所不同,以下是它们的简要总结:

一、被动模式(Passive Mode)

1. 工作原理

  • Zabbix Server 主动向 Zabbix Agent 发送请求,获取监控数据。

  • Zabbix Agent 在 TCP 10050 端口 监听,等待 Zabbix Server 的请求,收到请求后收集数据并返回。

2. 配置与设置

  • 在 Zabbix Agent 的配置文件 zabbix_agentd.conf 中,设置 Server 参数,指定 Zabbix Server 的地址。

  • Zabbix Server 会周期性地向 Agent 请求数据。

3. 优缺点

  • 优点

    • 配置简单,安装后即可使用,是 Zabbix 的默认工作模式。

    • 减少被监控设备的负载,适合小规模环境或客户端资源有限的情况(如低配置设备)。

  • 缺点

    • 增加 Zabbix Server 的负荷,尤其是在监控大量 Agent 节点时。

    • 可能出现数据延迟,时间开销和数据发送量较大,对 Zabbix Server 的性能开销较高。

4. 适用场景

  • 小规模监控环境。

  • 客户端资源有限,需要减少客户端负载的场景。

二、主动模式(Active Mode)

1. 工作原理

  • Zabbix Agent 主动采集数据并发送给 Zabbix Server。

  • Zabbix Agent 不再监听端口,而是定期向 Zabbix Server 的 TCP 10051 端口 发送数据。

2. 配置与设置

  • 在 Zabbix Agent 的配置文件 zabbix_agentd.conf 中,设置 ServerActive 参数,指定 Zabbix Server 的地址。

  • 设置 RefreshActiveChecks 参数,决定 Agent 推送数据的频率(默认 120 秒)。

3. 优缺点

  • 优点

    • 减轻 Zabbix Server 的压力,特别适合监控大量主机。

    • 可以监控不可达的远程设备或网络不稳定区域。

    • 简化分布式监控的维护。

    • 客户端主动发送数据,能更快获取监控信息。

  • 缺点

    • 对客户端资源占用较高。

    • 每个 Agent 只能有一个主动检查进程,无法增加检查进程数量。

4. 适用场景

  • 大规模监控环境。

  • 需要减轻 Zabbix Server 压力或监控不可达设备的场景。

三、总结
  • 被动模式:由 Zabbix Server 主动请求数据,适合小规模环境或客户端资源有限的情况,配置简单,但对 Server 压力较大。

  • 主动模式:由 Zabbix Agent 主动发送数据,适合大规模环境、需要减轻 Zabbix Server 压力或监控不可达设备的情况,但对客户端资源占用较高。

  • 在实际应用中,可以根据监控需求、服务器资源、网络状况等因素灵活选择和配置这两种模式。

 1、环境准备

确保所有服务器之间的网络通信正常,并且能够互相访问。以下是各服务器的角色和IP地址:

IP地址角色    操作系统
10.0.0.108Zabbix Server, MySQLUbuntu 22.04
10.0.0.110Zabbix Proxy(主动模式), MySQLUbuntu 22.04
10.0.0.120Zabbix Proxy(被动模式), MySQLUbuntu 22.04
10.0.0.130Zabbix Agent1Ubuntu 22.04
10.0.0.140Zabbix Agent2Ubuntu 22.04

2、配置Zabbix Server。之后,在Zabbix Server安装mysql数据库,启用Zabbix Server作为默认监控端。

#在 10.0.0.108 上安装 Zabbix Server 和 MySQL。

2.1 安装 MySQL
apt update
apt install mysql-server -y
systemctl enable mysql
systemctl start mysql

2.2 创建 Zabbix 数据库
mysql -u root -p
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;

2.3 安装 Zabbix Server
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_6.0+ubuntu22.04_all.deb
apt update
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent -y

2.4 导入初始数据
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;

2.5 配置 Zabbix Server
编辑配置文件 /etc/zabbix/zabbix_server.conf:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password

2.6 启动 Zabbix Server
systemctl restart zabbix-server apache2.service
systemctl enable zabbix-server apache2.service

2.7 访问 Zabbix Web 界面
打开浏览器,访问 http://10.0.0.108/zabbix,完成初始配置(可把页面修改成中文)。

 3、安装 Zabbix Proxy(主动模式)

在 10.0.0.110 上安装 Zabbix Proxy(主动模式)。

3.1 安装 MySQL
apt update
apt install mysql-server -y
systemctl enable mysql
systemctl start mysql

3.2 创建 Zabbix Proxy 数据库
mysql -u root -p
create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix_proxy.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;

3.3 安装 Zabbix Proxy
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_6.0+ubuntu22.04_all.deb
apt update
apt install zabbix-proxy-mysql zabbix-sql-scripts -y

3.4 导入初始数据
cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;

3.5 配置 Zabbix Proxy
编辑配置文件 /etc/zabbix/zabbix_proxy.conf:
Server=10.0.0.108
Hostname=Zabbix Proxy Active
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=password
ProxyMode=0  # 0 表示主动模式

3.6 启动 Zabbix Proxy
systemctl restart zabbix-proxy
systemctl enable zabbix-proxy

 4、安装 Zabbix Proxy(被动模式)

在 10.0.0.120 上安装 Zabbix Proxy(被动模式)。

4.1 安装 MySQL
apt update
apt install mysql-server -y
systemctl enable mysql
systemctl start mysql

4.2 创建 Zabbix Proxy 数据库
mysql -u root -p
create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix_proxy.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;

4.3 安装 Zabbix Proxy
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_6.0+ubuntu22.04_all.deb
apt update
apt install zabbix-proxy-mysql zabbix-sql-scripts -y

4.4 导入初始数据
cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;

4.5 配置 Zabbix Proxy
编辑配置文件 /etc/zabbix/zabbix_proxy.conf:
Server=10.0.0.108
Hostname=Zabbix Proxy Passive
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=password
ProxyMode=1  # 1 表示被动模式

4.6 启动 Zabbix Proxy
systemctl restart zabbix-proxy
systemctl enable zabbix-proxy

 5、安装 Zabbix Agent

在 10.0.0.130 和 10.0.0.140 上安装 Zabbix Agent。

5.1 安装 Zabbix Agent
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_6.0+ubuntu22.04_all.deb
apt update
apt install zabbix-agent -y

5.2 配置 Zabbix Agent
编辑配置文件 /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.110,10.0.0.120  # 允许主动和被动 Proxy 连接
ServerActive=10.0.0.110        # 主动模式 Proxy
Hostname=Zabbix Agent1         # 主机名(根据实际情况修改)

5.3 启动 Zabbix Agent
systemctl restart zabbix-agent
systemctl enable zabbix-agent

 6、在 Zabbix Web 界面配置
登录 Zabbix Web 界面(http://10.0.0.108/zabbix)。
添加 Proxy:
进入 Administration > Proxies。
添加 Zabbix Proxy Active 和 Zabbix Proxy Passive。
添加主机:
进入 Configuration > Hosts。
添加 Zabbix Agent1 和 Zabbix Agent2,并选择对应的 Proxy。

7、验证
检查 Zabbix Server 和 Proxy 的日志,确保没有错误。
在 Zabbix Web 界面查看主机状态,确保所有主机都显示为“已监控”。

3. 总结 zabbix proxy主动及被动案例

见题2
1. 环境准备
确保所有服务器之间的网络通信正常,并且能够互相访问。以下是各服务器的角色和IP地址:
IP地址		角色								操作系统
10.0.0.108	Zabbix Server, MySQL			Ubuntu 22.04
10.0.0.110	Zabbix Proxy(主动模式), MySQL	Ubuntu 22.04
10.0.0.120	Zabbix Proxy(被动模式), MySQL	Ubuntu 22.04
10.0.0.130	Zabbix Agent1					Ubuntu 22.04
10.0.0.140	Zabbix Agent2					Ubuntu 22.04


2. 配置Zabbix Server。之后,在Zabbix Server安装mysql数据库,启用Zabbix Server作为默认监控端。
在 10.0.0.108 上安装 Zabbix Server 和 MySQL。

2.1 安装 MySQL
apt update
apt install mysql-server -y
systemctl enable mysql
systemctl start mysql

2.2 创建 Zabbix 数据库
mysql -u root -p
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;

2.3 安装 Zabbix Server
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_6.0+ubuntu22.04_all.deb
apt update
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent -y

2.4 导入初始数据
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -u zabbix -p zabbix
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;

2.5 配置 Zabbix Server
编辑配置文件 /etc/zabbix/zabbix_server.conf:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password

2.6 启动 Zabbix Server
systemctl restart zabbix-server apache2.service
systemctl enable zabbix-server apache2.service

2.7 访问 Zabbix Web 界面
打开浏览器,访问 http://10.0.0.108/zabbix,完成初始配置(可把页面修改成中文)。


3、安装 Zabbix Proxy(主动模式)
在 10.0.0.110 上安装 Zabbix Proxy(主动模式)。

3.1 安装 MySQL
apt update
apt install mysql-server -y
systemctl enable mysql
systemctl start mysql

3.2 创建 Zabbix Proxy 数据库
mysql -u root -p
create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix_proxy.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;

3.3 安装 Zabbix Proxy
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_6.0+ubuntu22.04_all.deb
apt update
apt install zabbix-proxy-mysql zabbix-sql-scripts -y

3.4 导入初始数据
cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;

3.5 配置 Zabbix Proxy
编辑配置文件 /etc/zabbix/zabbix_proxy.conf:
Server=10.0.0.108
Hostname=Zabbix Proxy Active
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=password
ProxyMode=0  # 0 表示主动模式

3.6 启动 Zabbix Proxy
systemctl restart zabbix-proxy
systemctl enable zabbix-proxy


4、安装 Zabbix Proxy(被动模式)
在 10.0.0.120 上安装 Zabbix Proxy(被动模式)。

4.1 安装 MySQL
apt update
apt install mysql-server -y
systemctl enable mysql
systemctl start mysql

4.2 创建 Zabbix Proxy 数据库
mysql -u root -p
create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix_proxy.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;

4.3 安装 Zabbix Proxy
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_6.0+ubuntu22.04_all.deb
apt update
apt install zabbix-proxy-mysql zabbix-sql-scripts -y

4.4 导入初始数据
cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy
mysql -uroot -p
set global log_bin_trust_function_creators = 0;
quit;

4.5 配置 Zabbix Proxy
编辑配置文件 /etc/zabbix/zabbix_proxy.conf:
Server=10.0.0.108
Hostname=Zabbix Proxy Passive
DBHost=localhost
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=password
ProxyMode=1  # 1 表示被动模式

4.6 启动 Zabbix Proxy
systemctl restart zabbix-proxy
systemctl enable zabbix-proxy


5、安装 Zabbix Agent
在 10.0.0.130 和 10.0.0.140 上安装 Zabbix Agent。

5.1 安装 Zabbix Agent
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_6.0+ubuntu22.04_all.deb
dpkg -i zabbix-release_latest_6.0+ubuntu22.04_all.deb
apt update
apt install zabbix-agent -y

5.2 配置 Zabbix Agent
编辑配置文件 /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.110,10.0.0.120  # 允许主动和被动 Proxy 连接
ServerActive=10.0.0.110        # 主动模式 Proxy
Hostname=Zabbix Agent1         # 主机名(根据实际情况修改)

5.3 启动 Zabbix Agent
systemctl restart zabbix-agent
systemctl enable zabbix-agent


6、在 Zabbix Web 界面配置
登录 Zabbix Web 界面(http://10.0.0.108/zabbix)。
添加 Proxy:
进入 Administration > Proxies。
添加 Zabbix Proxy Active 和 Zabbix Proxy Passive。
添加主机:
进入 Configuration > Hosts。
添加 Zabbix Agent1 和 Zabbix Agent2,并选择对应的 Proxy。


7、验证
检查 Zabbix Server 和 Proxy 的日志,确保没有错误。
在 Zabbix Web 界面查看主机状态,确保所有主机都显示为“已监控”。


4. 总结自定义监控,监控win, nginx, 并基于短信/微信报警。

Zabbix自定义监控是一个强大且灵活的功能,允许用户根据特定需求创建自定义的监控项、触发器和图形,以便更全面地监控系统。以下是对Zabbix自定义监控的总结:

一、自定义监控项
明确需求:
在开始自定义监控之前,首先要明确需要监控的指标或事件。
创建监控项配置文件:
在被监控主机的Zabbix agent配置子目录(如/etc/zabbix/zabbix_agentd/)中,创建以.conf为后缀的监控项配置文件。
在配置文件中,使用UserParameter指令定义自定义的键值(key)和对应的命令或脚本。例如:UserParameter=my.custom.key,my_custom_script.sh。
重启Zabbix agent:
修改配置文件后,需要重启Zabbix agent以使更改生效。
服务端验证:
使用zabbix_get命令在服务端验证新建的监控项是否能正确获取数据。
二、在Zabbix Web界面创建自定义监控模板
创建模板:
在Zabbix Web界面的配置菜单中,点击模板,然后创建新的模板。
创建监控项:
在模板中创建新的监控项,设置名称、键值(与自定义监控项配置文件中设置的保持一致)、更新间隔等参数。
创建触发器:
触发器用于定义当监控项获取到的值满足特定条件时触发报警。例如,可以设置当某个监控项的值超过某个阈值时触发报警。
创建图形:
可以为监控项创建图形,以便直观地展示监控数据的变化趋势。
关联主机与模板:
将创建的模板关联到需要监控的主机上,这样主机就会继承模板中的监控项、触发器和图形。
三、报警配置
设置报警媒介类型:
在Zabbix Web界面的管理菜单中,设置报警媒介类型,如邮件、短信等。
配置用户报警媒介:
为用户配置报警媒介,以便在触发报警时能够接收到通知。
配置动作:
在配置菜单的动作中,设置触发动作的条件和操作内容,如发送邮件、触发脚本等。
四、注意事项
键值唯一性:
自定义的键值在整个Zabbix系统中必须是唯一的,不能与已有的键值冲突。
命令或脚本安全性:
确保自定义命令或脚本的安全性,避免执行危险操作或泄露敏感信息。
性能影响:
自定义监控项可能会增加Zabbix agent和server的负担,因此需要合理控制监控项的数量和更新频率。
数据准确性:
确保自定义监控项能够准确获取和反映所需监控的指标或事件的数据。
综上所述,Zabbix自定义监控为用户提供了极大的灵活性和可扩展性,使得用户能够根据自己的需求创建符合业务逻辑的监控项、触发器和图形。同时,也需要注意键值唯一性、命令或脚本安全性、性能影响以及数据准确性等方面的问题。

5. 完成1键安装zabbix agent脚本,可以用于ubuntu系统。

#!/bin/bash
# 设置 Zabbix 版本号
ZABBIX_VER=7.0
# 定义安装包文件名
FILE=zabbix-${ZABBIX_VER}.tar.gz
# 安装目录
INSTALL_DIR=/apps/zabbix_agent
# Zabbix 服务器 IP 地址
SERVER=10.0.0.8
# 获取本机 IP 地址
HOST=`hostname -I`
# 读取操作系统版本信息
. /etc/os-release
 
# 定义颜色输出函数
color () {
    RES_COL=60  # 设定重置位置的列号
    MOVE_TO_COL="echo -en \033[${RES_COL}G"  # 移动光标到指定位置
    SETCOLOR_SUCCESS="echo -en \033[1;32m"  # 设置成功颜色
    SETCOLOR_FAILURE="echo -en \033[1;31m"  # 设置失败颜色
    SETCOLOR_WARNING="echo -en \033[1;33m"  # 设置警告颜色
    SETCOLOR_NORMAL="echo -en E[0m"  # 重置颜色
    echo -n "$1" && $MOVE_TO_COL  # 输出消息并移动光标
    echo -n "["  # 输出左方括号
    # 根据状态码设置颜色并输出状态
    if [ $2 = "success" -o $2 = "0" ]; then
        ${SETCOLOR_SUCCESS}
        echo -n $" OK "    
    elif [ $2 = "failure" -o $2 = "1" ]; then 
        ${SETCOLOR_FAILURE}
        echo -n $"FAILED"
    else
        ${SETCOLOR_WARNING}
        echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}  # 重置颜色
    echo -n "]"
    echo  # 换行
}
 
# 检查下载文件是否存在
check(){
    wget https://cdn.zabbix.com/zabbix/sources/stable/${ZABBIX_VER%.*}/zabbix-$ZABBIX_VER.tar.gz
    [ -e ${FILE} ] || { color "$FILE 文件不存在,请检查" 1 ; exit 1; }
}
 
# 准备安装环境
prepare (){
    # 根据系统类型安装必要的软件包
    if [ $ID = "centos" ] || [ $ID = "rocky" ]; then 
        yum -y install gcc make pcre-devel || { color "zabbix agent 相关包安装失败,请检查" 1 ;exit; }
    else
        apt -y install gcc make || { color "zabbix agent 相关包安装失败,请检查" 1 ;exit; }
    fi
    # 检查是否存在 zabbix 用户,不存在则创建
    id zabbix &> /dev/null || useradd -r zabbix
}
 
# 安装 Zabbix Agent
install() {
    tar xf $FILE  # 解压安装包
    cd zabbix-$ZABBIX_VER  # 进入解压目录
    ./configure --prefix=${INSTALL_DIR} --enable-agent  # 配置安装选项
    make && make install  # 编译并安装
}
 
# 配置 Zabbix Agent
config () {
    # 修改配置文件中的 Server 和 Hostname
    sed -i.bak -e "s/Server=127.0.0.1/Server=$SERVER/" -e "s/Hostname=Zabbix server/Hostname=$HOST/" ${INSTALL_DIR}/etc/zabbix_agentd.conf
    # 添加 Zabbix Agent 的可执行路径到环境变量
    echo 'PATH=${INSTALL_DIR}/bin/:${INSTALL_DIR}/sbin/:$PATH' > /etc/profile.d/zabbix_agent.sh
}
 
# 配置并启动 Zabbix Agent 服务
service (){
    # 创建 systemd 服务文件
    cat > /lib/systemd/system/zabbix-agent.service <<EOF
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=${INSTALL_DIR}/sbin/zabbix_agentd -c ${INSTALL_DIR}/etc/zabbix_agentd.conf 
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
EOF
    # 重新加载 systemd 配置并启用服务
    systemctl daemon-reload 
    systemctl enable --now zabbix-agent.service 
    # 检查服务是否启动成功并输出状态
    systemctl is-active zabbix-agent.service && color "Zabbix Agent 安装完成并启动" 0
}
 
# 执行脚本的各个部分
check
prepare
install
config
service

6. 完成1键脚本,可以基于zabbix api添加zabbix agent到zabbix web。

#!/bin/bash
# 设置Zabbix服务器的IP地址
ZABBIX_SERVER=10.0.0.8
# 通过执行zabbix-api-token.sh脚本并解析输出,获取Zabbix API的token
TOKEN=$(./zabbix-api-token.sh | awk -F'"' '{print $8}')
# 设置要添加到Zabbix的主机IP地址
HOST=10.0.0.104
# 使用curl命令通过JSON-RPC协议向Zabbix API发送创建主机的请求
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "'web-api-$HOST'",  # 创建主机名称,使用变量$HOST动态生成
        "name": "'web-api-$HOST'",  # 可见的名称,同样使用$HOST动态生成
        "interfaces": [
            {
                "type": 1,  # 接口类型:1表示agent,2是SNMP,3是IPMI,4是JMX
                "main": 1,  # 标记为主要接口
                "useip": 1,  # 使用IP地址而不是DNS
                "ip": "'$HOST'",  # Zabbix agent的IP地址,使用变量$HOST
                "dns": "",
                "port": "10050"  # agent使用的端口号
            }
        ],
        "groups": [ 
            {
                "groupid": "2"  # 指定主机所属的组ID
            }
        ],
        "templates": [ 
            {
                "templateid": "10001"  # 指定主机关联的模板ID
            } 
        ]
    },
    "id": 1,
    "auth": "'$TOKEN'"  # 使用前面获取的token进行认证
}' http://${ZABBIX_SERVER}/zabbix/api_jsonrpc.php | python3 -m json.tool  # 发送请求并格式化输出JSON响应

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。