zabbix监控

发布于:2025-07-25 ⋅ 阅读:(24) ⋅ 点赞:(0)

1. 总结zabbix6.0部署过程。

1.1、编译安装相关zabbix-server相关包

CentOS 安装相关包

yum -y install gcc pcre-devel libxml2-devel php-bcmath
php-mbstring net-snmp net-snmp-devel curl-devel php php-gd php-xml libevent-devel
java-1.8.0-openjdk-devel mariadb mariadb-devel
 

ubuntu相关包

apt -y install apache2 apache2-bin apache2-data apache2-
utils fontconfig-config fonts-dejavu-core fping libapache2-mod-php libapache2-
mod-php7.2 libapr1 libapruti11 1ibaprutil1-dbd-sq7ite3 libaprutil1-ldap
1ibfontconfig1 libgd3 libikseme13 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.2-0
libodbc1 libopenipmi0 libsensors4 libsnmp-base libsnmp30 libsodium23 1ibssh2-1
1ibtiff5 7ibwebp6 1ibxpm4 php-bcmath php-common php-gd php7.2-common php7.2-gd
php7.2-json php7.2-1dap php7.2-mbstring php7.2-mysq1 php7.2-opcache php7.2-
read1ine libxm12-dev libxm12 snmp libsnmp-dev libevent-dev openjdk-8-jdk
libcurl4-openss1-dev php7.2-xm7 snmpd ss1-cert ttf-dejavu-core libmysqlclientdev
 

1.2、创建用户和组

[root@zabbix-server ~]#groupadd zabbix
[root@zabbix-server ~]#useradd -g zabbix zabbix
 

1.3、下载源码包

[root@zabbix-server ~]#cd /usr/local/src
[root@zabbix-server src]#wget  https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.4.tar.gz

1.4、编译安装

解压源码包:tar xf zabbix-6.0.0.tar.gz
进入路径,编译安装

[root@zabbix-server zabbix-6.0.0]#./configure --prefix=/apps/zabbix_server --
enable-server --enable-agent --enable-java --with-mysql --with-net-snmp --
with-libcurl --with-libxml
 

[root@zabbix-server zabbix-4.0.24]#make -j 2
[root@zabbix-server zabbix-4.0.24]#make install
[root@zabbix-server ~]#ls /apps/zabbix_server/
bin etc lib sbin share
#创建软链接
[root@zabbix-server ~]#ln -s /apps/zabbix_server/sbin/* /usr/sbin/
[root@zabbix-server ~]#ln -s /apps/zabbix_server/bin/* /usr/bin/
[root@zabbix-server ~]#zabbix_<TAB><TAB>
zabbix_agentd zabbix_get zabbix_sender zabbix_server
#或者
[root@zabbix-server ~]#echo 'PATH=/apps/zabbix_server/bin:$PATH' >
/etc/profile.d/zabbix.sh
[root@zabbix-server ~]#. /etc/profile.d/zabbix.sh
 

1.5、准备数据库和相关表

#安装MySQL8.0
[root@zabbix-mysql-master ~]##yum -y install mysql-server
[root@zabbix-mysql-master ~]#systemctl enable --now mysqld
[root@zabbix-mysql-server ~]#mysql -uroot -p
Enter password:
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'10.0.0.%' identified by '123456';
mysql> grant all privileges on zabbix.* to 'zabbix'@'10.0.0.%';
#注意: 如果使用MySQL8.0和Zabbix不在同一主机,还需要执行下面
mysql>ALTER USER zabbix@'10.0.0.%' IDENTIFIED WITH mysql_native_password BY
'123456';
#或者执行下面
[root@zabbix-mysql-master ~]#echo 'default-authenticationplugin=mysql_native_password' >> /etc/my.cnf.d/mysql-server.cnf
[root@zabbix-mysql-master ~]#systemctl restart mysqld
 

1.6、初始化数据库
[root@zabbix-server ~]#ls /usr/local/src/zabbix-4.0.24/database/mysql/*.sql -1
/usr/local/src/zabbix-4.0.24/database/mysql/data.sql
/usr/local/src/zabbix-4.0.24/database/mysql/images.sql
/usr/local/src/zabbix-4.0.24/database/mysql/schema.sql
[root@zabbix-server ~]#mysql -uzabbix -p123456 -h10.0.0.101 zabbix <
/usr/local/src/zabbix-4.0.24/database/mysql/schema.sql
[root@zabbix-server ~]#mysql -uzabbix -p123456 -h10.0.0.101 zabbix <
/usr/local/src/zabbix-4.0.24/database/mysql/images.sql
[root@zabbix-server ~]#mysql -uzabbix -p123456 -h10.0.0.101 zabbix <
/usr/local/src/zabbix-4.0.24/database/mysql/data.sql


1.7、验证数据库和相关表

[root@zabbix-server ~]#mysql -uzabbix -p123456 -h10.0.0.101 zabbix -e 'show
tables;'
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
| alerts |
| application_discovery |
| application_prototype |
| application_template |
 

1.8、修改 Zabbix Server 配置文件

[root@zabbix-server ~]#vim /apps/zabbix-server/etc/zabbix_server.conf
[root@zabbix-server ~]#grep '^[^#]' /apps/zabbix-server/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBHost=10.0.0.101
DBName=zabbix
DBUser=zabbix
DBPassword=123456
DBPort=3306
#Timeout=4
#LogSlowQueries=3000
 

1.9、启动相关服务
[root@zabbix-server ~]#zabbix_server -c /apps/zabbixserver/etc/zabbix_server.conf
[root@zabbix-server ~]#ss -ntl

[root@zabbix-server ~]#tail /tmp/zabbix_server.log

启动httpd服务
[root@zabbix-server ~]#systemctl enable --now httpd
 

1.10、配置php和初始化登录WEB页面
[root@zabbix-server ~]#mkdir /var/www/html/zabbix
[root@zabbix-server ~]#cp -a /usr/local/src/zabbix-4.0.24/frontends/php/.
/var/www/html/zabbix/
[root@zabbix-server ~]#ls /var/www/html/zabbix/
actionconf.php assets correlation.php
image.php overview.php srv_status.php
.......
 

安装配置后再访问
[root@zabbix-server ~]#yum -y install php-gd php-xml php-json php-mysqlnd
[root@zabbix-server ~]#vim /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
[root@zabbix-server ~]#systemctl restart httpd
 

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

被动模式描述:

Server打开一个TCP连接 Server发送请求agent.ping Agent接收到请求并且响应<HEADER><DATALEN> Server处理接收到的数据 关闭TCP连接 被动模式每获取一个监控项都需要打开一个tcp连接,这样当监控项越来越多时,Zabbix Server会打开很多 端口,就会出现server端性能瓶颈问题。

主动模式描述:

zabbix agent 首先向ServerActive配置的IP请求获取active items,获取并提交active items数据 值给server或者proxy。 zabbix多久获取一次active items? 它会根据agent的配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重 试。


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

主动模式:

ubuntu安装zabbix-proxy
[root@ubuntu2204 ~]#wget
https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbixrelease_6.0-4%2Bubuntu22.04_all.deb
[root@ubuntu2204 ~]#dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
[root@ubuntu2204 ~]#sed -i.bak
's/repo.zabbix.com/mirrors.tuna.tsinghua.edu.cn\/zabbix/'
/etc/apt/sources.list.d/zabbix.list
[root@ubuntu2204 ~]#apt update
[root@ubuntu2204 ~]#apt -y install zabbix-proxy-mysql zabbix-sql-scripts

centos安装zabbix-proxy
[root@zabbix-proxy-active ~]#rpm -Uvh
https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-
1.el8.noarch.rpm
[root@zabbix-proxy-active ~]#rpm -Uvh
https://repo.zabbix.com/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-
2.el8.noarch.rpm
#修改为阿里云源
[root@zabbix-proxy-active ~]#vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/8/x86_64/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
#或者sed修改
[root@zabbix-proxy-active ~]#sed -i.bak
's/repo.zabbix.com/mirrors.aliyun.com\/zabbix/' /etc/yum.repos.d/zabbix.repo
[root@zabbix-proxy-active ~]#yum -y install zabbix-proxy-mysql zabbix-agent
[root@zabbix-proxy-active ~]#rpm -ql zabbix-proxy-mysql
/etc/logrotate.d/zabbix-proxy
/etc/zabbix/zabbix_proxy.conf
/usr/lib/.build-id
/usr/lib/.build-id/a1
/usr/lib/.build-id/a1/03f07446a72d32dcfc88cbff0f5d8317b65fac
/usr/lib/systemd/system/zabbix-proxy.service
/usr/lib/tmpfiles.d/zabbix-proxy.conf
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_proxy_mysql
/usr/share/doc/zabbix-proxy-mysql
/usr/share/doc/zabbix-proxy-mysql/AUTHORS
/usr/share/doc/zabbix-proxy-mysql/COPYING
/usr/share/doc/zabbix-proxy-mysql/ChangeLog
/usr/share/doc/zabbix-proxy-mysql/NEWS
/usr/share/doc/zabbix-proxy-mysql/README
/usr/share/doc/zabbix-proxy-mysql/schema.sql.gz
/usr/share/man/man8/zabbix_proxy.8.gz
/var/log/zabbix
/var/run/zabbix
#CentOS8安装
[root@zabbix-proxy-passive ~]#yum -y install gcc mysql-devel libxml2-devel netsnmp-devel libssh2-devel curl-devel pcre-devel libevent-devel
#Ubuntu18.04安装
[root@zabbix-proxy-passive ~]#apt -y install gcc make libxml2-dev libevent-dev
libmysqlclient-dev libsnmp-dev libssh2-1-dev libcurl4-openssl-dev
[root@zabbix-proxy-passive ~]#useradd zabbix
[root@zabbix-proxy-passive ~]#wget
https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.13.tar.gz
[root@zabbix-proxy-passive ~]#tar xf zabbix-5.0.13.tar.gz
[root@zabbix-proxy-passive ~]#cd zabbix-5.0.13/
[root@zabbix-proxy-passive zabbix-5.0.13]#./configure --
prefix=/apps/zabbix_proxy --enable-proxy --with-agent --with-net-snmp --withmysql --with-ssh2 --with-libcurl --with-libxml2
[root@zabbix-proxy-passive zabbix-4.0.24]#make && make install

#创建service文件
[root@zabbix-proxy-passive ~]#cat /lib/systemd/system/zabbix-proxy.service
[Unit]
Description=Zabbix Proxy
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/apps/zabbix_proxy/etc/zabbix_proxy.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-proxy
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_proxy.pid
KillMode=control-group
ExecStart=/apps/zabbix_proxy/sbin/zabbix_proxy -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
[Install]
WantedBy=multi-user.target
[root@zabbix-proxy-passive ~]#systemctl daemon-reload



#准备数据库
#为主动模式的 Proxy 准备独立的数据库
[root@zabbix-proxy-active ~]#apt -y install mysql-server
[root@zabbix-proxy-active ~]#mysql
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.17 |
+-----------+
1 row in set (0.00 sec)
mysql> create database zabbix_proxy_active character set utf8 collate utf8_bin;
mysql> create user proxy@'localhost' identified by '123456';
mysql> grant all on zabbix_proxy_active.* to proxy@'localhost' ;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
#从Proxy主机导入和zabbix Server不同的数据库和表
[root@zabbix-proxy-active ~]#yum -y install mysql
[root@zabbix-proxy-active ~]#apt -y install mysql
#包安装的路径
[root@zabbix-proxy-active ~]#zcat /usr/share/doc/zabbix-proxymysql/schema.sql.gz | mysql -uproxy -p123456 -h10.0.0.101 zabbix_proxy_active
[root@ubuntu2204 ~]#mysql
mysql> set global log_bin_trust_function_creators = 0;
mysql> exit


#为被动模式的 proxy 准备独立的数据库
[root@zabbix-proxy-passive ~]#apt -y install mysql-server
[root@zabbix-proxy-passive ~]#mysql
mysql> create database zabbix_proxy_passive character set utf8 collate utf8_bin;
mysql> grant all on zabbix_proxy_passive.* to proxy@'10.0.0.%' identified by
'123456' ;
#创建被动模式使用的数据库和表
[root@zabbix-proxy-passive zabbix-5.0.13]#pwd
/root/zabbix-5.0.13
#源码编译的路径
[root@zabbix-proxy-passive zabbix-5.0.13]#mysql -uproxy -p123456
zabbix_proxy_passive < database/mysql/schema.sql




## 主动模式配置
[root@zabbix-proxy-active ~]#grep '^[^#]' /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #主动模式为0,被动模式为1,默认为0即主动模式
Server=10.0.0.100 #指向Zabbix Server
Hostname=zabbix-proxy-active #此名称必须和后面Web管理页的agent代理程序名称相同
DBHost=localhost #MySQL服务器地址
DBName=zabbix_proxy_active #MySQL数据库名
DBUser=proxy #连接MySQL的用户
DBPassword=123456 #连接MySQL的用户密码
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
DebugLevel=4 #指定日志级别,默认为3,值越大日志越详细

EnableRemoteCommands=1 #开启远程命令,允许server到proxy上执行命令,在故障
自愈时使用
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
ProxyLocalBuffer=360 #当proxy将数据发送给server后将数据仍在本地保存多少时间,
默认不保留
ProxyOfflineBuffer=720 #当proxy和server无法连接时将数据在本地保存多长时间,默认
1小时
HeartbeatFrequency=60 #server端用来检测proxy可用性的心跳信息的时间间隔,被动模
式无效
ConfigFrequency=60 #每间隔多少时间到server获取监控项,在agent更新端监控
项,只在主动模式有效,默认3600s
DataSenderFrequency=60 #数据发送的间隔时间,只在主动模式有效,默认1s,建议加长
JavaGateway=10.0.0.101 #指向JAVA gateway主机
StartJavaPollers=10 #指定开启的进程数,默认为0,即不开启
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=8M #当主机数量很多时,会将获取的监控项存放在缓存中,生产中
设置2G
StartDBSyncers=4 #启动多少个线程和数据库连接
HistoryCacheSize=16M #保存agent发送过来的监控数据的内存空间大小,生产中设置
2G
HistoryIndexCacheSize=4M #历史数据的索引
Timeout=30 #获取数据的最长等待时间
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000 #慢查询时长





#默认zabbix-proxy.service不自动启动,设置服务开机自启
[root@zabbix-proxy-active ~]#systemctl enable --now zabbix-proxy.service


#修改Zabbix Agent 配置文件为主动模式的 Zabbix Proxy
[root@centos8 ~]#vim /apps/zabbix_agent/etc/zabbix_agentd.conf
[root@centos8 ~]#grep '^[^#]' /apps/zabbix_agent/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=10.0.0.100,10.0.0.101 #(可选)指向Zabbix Server和Zabbix Proxy
ServerActive=10.0.0.101 #指向Zabbix Proxy(必选)
Hostname=10.0.0.103 #要标和Zabbix Server 添加主机的主机名称相同
[root@centos8 ~]#systemctl restart zabbix-agent.service
[root@centos8 ~]#tail /tmp/zabbix_agentd.log
24239:20200830:233105.235 IPv6 support: NO
24239:20200830:233105.235 TLS support: NO
24239:20200830:233105.235 **************************
24239:20200830:233105.235 using configuration file:
/apps/zabbix_agent/etc/zabbix_agentd.conf
24239:20200830:233105.235 agent #0 started [main process]
24241:20200830:233105.236 agent #2 started [listener #1]
24242:20200830:233105.236 agent #3 started [listener #2]
24244:20200830:233105.236 agent #5 started [active checks #1]
24240:20200830:233105.239 agent #1 started [collector]
24243:20200830:233105.239 agent #4 started [listener #3]
#查看proxy的日志
[root@zabbix-proxy-active ~]#tail /var/log/zabbix/zabbix_proxy.log -f


在 Zabbix Server 上添加代理 Proxies#

被动模式:

#被动模式配置
# vim /apps/zabbix_proxy/etc/zabbix_proxy.conf
ProxyMode=1 #0为主动,1为被动,此为默认
server=10.0.0.100 #zabbix server服务器的地址
Hostname=zabbix-proxy-passive-wang #代理服务器名称,被动模式不要求和后面Web管理页的
agent代理程序名称相同
DBHost=10.0.0.101 #数据库服务器地址
DBName=zabbix_proxy_passive #数据库库名称
DBUser=proxy #连接数据库的用户名称
DBPassword=123456 #数据库用户密码
DBPort=3306 #数据库端口
ListenPort=10051 #zabbix proxy监听端口
LogFile=/tmp/zabbix_proxy.log
Enab1eRemoteCommands=1 #允许zabbix server执行远程命令
ProxyLocalBuffer=720#已经提交到zabbix server的数据保留时间
ProxyofflineBuffer=720 #未提交到zabbix server的时间保留时间
ConfigFrequency=5 #间隔多少秒从zabbix server获取监控项信息,此横在被动模式无效
startPo1lers=20 #启动的数据采集器数量
javaGatewayPort=10052 #Java gateway服务端口
startJavaPollers=20 #启动多少个线程采集数据
cachesize=2G #保存监控项而占用的最大内存
Historycachesize=2G #保存监控历史数据占用的最大内存
HistoryIndexcachesize=128M #历史索引缓存的大小
Timeout=30 #监控项超时时间,单位为秒
LogslowQueries=3000 #毫秒,多久的数据库查询会被记录到日志
HeartbeatFrequency=60 #心跳间隔检测时间,默认60秒,范围0-3600秒,被动模式不使用
DatasenderFrequency=5 #数据发送时间间隔,默认为1秒,范围为1-3600秒,被动模式不使用
JavaGateway=10.0.0.102 #java gateway服务器地址,当需要监控java的时候必须配置否则监控不到数据



# 修改proxy配置文件
[root@zabbix-proxy-passive ~]#grep '^[^#]'
/apps/zabbix_proxy/etc/zabbix_proxy.conf
ProxyMode=1 #被动模式为1
Server=10.0.0.100 #指向zabbix server的地址
Hostname=zabbix-proxy-passvie-wang #可选项
LogFile=/tmp/zabbix_proxy.log
DBHost=localhost #指定MySQL的地址
DBName=zabbix_proxy_passive #指定MySQL数据库名称
DBUser=proxy #指定MySQL的用户
DBPassword=123456 #指定MySQL的用户密码
ProxyLocalBuffer=360
ProxyOfflineBuffer=720
JavaGateway=10.0.0.102
StartJavaPollers=10
CacheSize=8M
StartDBSyncers=4
HistoryCacheSize=16M
HistoryIndexCacheSize=4M
Timeout=30
LogSlowQueries=3000
[root@zabbix-proxy-passive zabbix-5.0.14]#grep -Ev '^$|#'
/apps/zabbix_proxy/etc/zabbix_proxy.conf
ProxyMode=1
Server=10.0.0.100
Hostname=Zabbix proxy passive
LogFile=/tmp/zabbix_proxy.log
DBName=zabbix_proxy_passive
DBUser=proxy
DBPassword=123456
HeartbeatFrequency=10
ConfigFrequency=10
DataSenderFrequency=1
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
#默认zabbix-proxy.service不自动启动,设置服务开机自启
[root@zabbix-proxy-passive ~]#systemctl enable --now zabbix-proxy.service
#查看是否打开10051/tcp端口,如果没有打开检查是否能连接MySQL
[root@zabbix-proxy-passive ~]#ss -ntl


[root@zabbix-proxy-passive ~]#tail -f /tmp/zabbix_proxy.log



#修改Zabbix Agent 配置文件为被动模式的 Zabbix Proxy
[root@centos8 ~]#grep '^[^#]' /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.100,10.0.0.102 #必须指向Proxy代理地址,否则Proxy无法监控,
Zabbix Server地址则是可选项
#ServerActive=10.0.0.100 #注释此行
Hostname=10.0.0.104 #可选
Timeout=30
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@centos8 ~]#systemctl restart zabbix-agent.service





在 Zabbix Server 上添加代理 Proxies
注意:选中被动模式和端口10051



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


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


#! /bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'

#公共变量
        ID=$(. /etc/os-release;echo $ID ) 
        VERSION_ID=$(. /etc/os-release;echo $VERSION_ID ) 
        package_name=zabbix-release_latest_6.0+${ID}${VERSION_ID}_all.deb
        centos_name=$(. /etc/os-release;echo $VERSION_ID |cut -d "." -f1 )
    read -p "请输入想要下载的agent版本: " usernum

        ping_net() {
        echo -e "${YELLOW}检测网络是否正常..."
        for num in {1..5};do
          num=`ping -c$num -w1 www.bu.com` 
          echo $num > /dev/null
        if [ $(echo $?) -eq 0 ];then
               echo -e "${GREEN}网络正常"
        else
               echo -e "${RED}网络不正常"
        fi
        done
            
}



#ubunutu  agent安装
install_ubunturepo() {
        echo -e "$YELLOW检测是否存在zabbix包并做删除"
        delete_zbfile=$(find . -name "zabbix-release_latest*" -exec rm -rf ./{} \;)
echo
        echo -e "$GREEN删除成功"
echo -e "$YELLOW获取zabbix包"
       wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/$package_name
       echo

       echo -e "$GREEN安装zabbix包"
       dpkg -i ./$package_name
       echo

if [ $usernum -eq 1 ];then
       echo -e "$YELLOW将zabbix的默认源替换为aliyun源"
       ubuntu_path=$(find /etc/apt/sources.list.d/  -name "zabbix*")
      for f in $ubuntu_path;do
      sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' $f
      done
       echo -e "$YELLOW zabbix的默认源替换为aliyun源完成"


     echo -e "$GREEN更新源"
       apt update
      echo


      echo
      echo -e "$GREEN安装zabbix-agent"
     apt -y install zabbix-agent 
       
elif [ $usernum -eq 2 ];then

       echo -e "$YELLOW将zabbix的默认源替换为aliyun源"
       ubuntu_path=$(find /etc/apt/sources.list.d/  -name "zabbix*")
      for f in $ubuntu_path;do
      sed -i 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' $f
      done
       echo -e "$YELLOW zabbix的默认源替换为aliyun源完成"
       
       
       echo -e "$GREEN更新源"
       apt update
      echo


      echo -e "$YELLOW zabbix的默认源替换为aliyun源完成"
      echo -e "$GREEN安装zabbix-agent2"
      apt -y install zabbix-agent2 

fi
}


#centos agent安装
install_centosrepo(){

echo -e "$YELLOW检测是否存在zabbix包并做删除"
        delete_zbfile=$(find . -name "zabbix-release*" -exec rm -rf ./{} \;)
        echo -e "$GREEN删除成功"
echo
echo -e "$YELLOW获取zabbix包"
   rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-latest-6.0.el$centos_name.noarch.rpm
       echo

if [ $usernum -eq 1 ];then
       echo -e "$GREEN安装zabbix_agent包"
                dnf clean all
       dnf -y install zabbix-agent 
       echo
elif [ $usernum -eq 2 ];then
       echo -e "$GREEN安装zabbix_agent2包"
                dnf clean all
       dnf -y install zabbix-agent2 
fi
       echo -e "$GREEN更新源"
       yum update

}


#ubuntu,centos服务重启
server_restart() {
if [ $usernum -eq 1 ];then
        echo -e "$GREEN重启agent服务"
        $(systemctl restart zabbix-agent)
        echo
        echo -e "$GREEN设置开机自启服务"
        $(systemctl enable --now zabbix-agent)
        echo
        echo -e "$GREEN检测服务是否存活"
        systemctl is-active zabbix-agent

elif [ $usernum -eq 2 ];then

        echo -e "$GREEN重启agent2服务"
        $(systemctl restart zabbix-agent2)
        echo
        echo -e "$GREEN设置开机自启服务"
        $(systemctl enable --now zabbix-agent2)
        echo
        echo -e "$GREEN检测服务是否存活"
        systemctl is-active zabbix-agent2
else
   echo -e "$RED######未知请求######"
fi
}



#ubuntu主函数

ubuntu_main(){
install_ubunturepo
server_restart
}



#centos主函数

centos_main(){

install_centosrepo
server_restart
}



case $ID in
        ubuntu|debian)
        echo -e "${GREEN}执行安装ubuntu_zabbixagent"
        ubuntu_main
                ;;
        centos|rhel|almalinux|rocky)
        echo -e "${GREEN}执行安装centos_zabbixagent"
        centos_main
        ;;
        *)
        echo -e "${RED}不支持的操作系统:$ID"
        ;;
esac


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

#!/bin/bash

# 一键添加Zabbix Agent脚本
# 需提前安装curl和jq工具

# 配置区域(根据实际环境修改)
ZABBIX_URL="http://your_zabbix_server/api_jsonrpc.php"  # Zabbix API地址
ZABBIX_USER="Admin"                                    # Zabbix管理员账号
ZABBIX_PASSWORD="zabbix"                               # Zabbix管理员密码
HOST_NAME="agent_host"                                 # 主机名(唯一标识)
VISIBLE_NAME="My Agent Host"                           # 显示名称
HOST_IP="192.168.1.100"                                # Agent IP地址
HOST_PORT="10050"                                      # Agent端口
GROUP_NAME="Linux Servers"                             # 主机组名
TEMPLATE_NAME="Template OS Linux"                      # 模板名称

# 认证并获取Token
get_auth_token() {
    curl -s -X POST \
    -H 'Content-Type: application/json-rpc' \
    -d '{
        "jsonrpc": "2.0",
        "method": "user.login",
        "params": {
            "user": "'$ZABBIX_USER'",
            "password": "'$ZABBIX_PASSWORD'"
        },
        "id": 1
    }' $ZABBIX_URL | jq -r .result
}

# 获取主机组ID
get_group_id() {
    curl -s -X POST \
    -H 'Content-Type: application/json-rpc' \
    -d '{
        "jsonrpc": "2.0",
        "method": "hostgroup.get",
        "params": {
            "output": "extend",
            "filter": {
                "name": ["'$GROUP_NAME'"]
            }
        },
        "auth": "'$AUTH_TOKEN'",
        "id": 2
    }' $ZABBIX_URL | jq -r '.result[].groupid'
}

# 获取模板ID
get_template_id() {
    curl -s -X POST \
    -H 'Content-Type: application/json-rpc' \
    -d '{
        "jsonrpc": "2.0",
        "method": "template.get",
        "params": {
            "output": "extend",
            "filter": {
                "host": ["'$TEMPLATE_NAME'"]
            }
        },
        "auth": "'$AUTH_TOKEN'",
        "id": 3
    }' $ZABBIX_URL | jq -r '.result[].templateid'
}

# 创建主机
create_host() {
    curl -s -X POST \
    -H 'Content-Type: application/json-rpc' \
    -d '{
        "jsonrpc": "2.0",
        "method": "host.create",
        "params": {
            "host": "'$HOST_NAME'",
            "name": "'$VISIBLE_NAME'",
            "interfaces": [
                {
                    "type": 1,
                    "main": 1,
                    "useip": 1,
                    "ip": "'$HOST_IP'",
                    "dns": "",
                    "port": "'$HOST_PORT'"
                }
            ],
            "groups": [
                {
                    "groupid": "'$GROUP_ID'"
                }
            ],
            "templates": [
                {
                    "templateid": "'$TEMPLATE_ID'"
                }
            ]
        },
        "auth": "'$AUTH_TOKEN'",
        "id": 4
    }' $ZABBIX_URL | jq .
}

# 主执行流程
echo "步骤1: 获取认证Token..."
AUTH_TOKEN=$(get_auth_token)
[ -z "$AUTH_TOKEN" ] && { echo "错误:认证失败!"; exit 1; }

echo "步骤2: 获取主机组ID..."
GROUP_ID=$(get_group_id)
[ -z "$GROUP_ID" ] && { echo "错误:主机组 '$GROUP_NAME' 不存在!"; exit 1; }

echo "步骤3: 获取模板ID..."
TEMPLATE_ID=$(get_template_id)
[ -z "$TEMPLATE_ID" ] && { echo "错误:模板 '$TEMPLATE_NAME' 不存在!"; exit 1; }

echo "步骤4: 创建主机 $HOST_NAME..."
create_host

echo "操作完成!请到Zabbix Web界面验证主机状态。"


网站公告

今日签到

点亮在社区的每一天
去签到