zabbix监控
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_
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接收到请求并且响应
主动模式描述:
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 -Uvhhttps://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm[root@zabbix-proxy-active ~]#rpm -Uvhhttps://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 - $basearchbaseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/8/x86_64/enabled=1gpgcheck=1gpgkey=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-devlibmysqlclient-dev libsnmp-dev libssh2-1-dev libcurl4-openssl-dev[root@zabbix-proxy-passive ~]#useradd zabbix[root@zabbix-proxy-passive ~]#wgethttps://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 ProxyAfter=syslog.targetAfter=network.target[Service]Environment=\"CONFFILE=/apps/zabbix_proxy/etc/zabbix_proxy.conf\"EnvironmentFile=-/etc/sysconfig/zabbix-proxyType=forkingRestart=on-failurePIDFile=/tmp/zabbix_proxy.pidKillMode=control-groupExecStart=/apps/zabbix_proxy/sbin/zabbix_proxy -c $CONFFILEExecStop=/bin/kill -SIGTERM $MAINPIDRestartSec=10sTimeoutSec=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 ~]#mysqlmysql> 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 ~]#mysqlmysql> set global log_bin_trust_function_creators = 0;mysql> exit#为被动模式的 proxy 准备独立的数据库[root@zabbix-proxy-passive ~]#apt -y install mysql-server[root@zabbix-proxy-passive ~]#mysqlmysql> 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 -p123456zabbix_proxy_passive < database/mysql/schema.sql## 主动模式配置[root@zabbix-proxy-active ~]#grep \'^[^#]\' /etc/zabbix/zabbix_proxy.confProxyMode=0 #主动模式为0,被动模式为1,默认为0即主动模式Server=10.0.0.100 #指向Zabbix ServerHostname=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.logLogFileSize=0DebugLevel=4 #指定日志级别,默认为3,值越大日志越详细EnableRemoteCommands=1 #开启远程命令,允许server到proxy上执行命令,在故障自愈时使用PidFile=/var/run/zabbix/zabbix_proxy.pidSocketDir=/var/run/zabbixProxyLocalBuffer=360 #当proxy将数据发送给server后将数据仍在本地保存多少时间,默认不保留ProxyOfflineBuffer=720 #当proxy和server无法连接时将数据在本地保存多长时间,默认1小时HeartbeatFrequency=60 #server端用来检测proxy可用性的心跳信息的时间间隔,被动模式无效ConfigFrequency=60 #每间隔多少时间到server获取监控项,在agent更新端监控项,只在主动模式有效,默认3600sDataSenderFrequency=60 #数据发送的间隔时间,只在主动模式有效,默认1s,建议加长JavaGateway=10.0.0.101 #指向JAVA gateway主机StartJavaPollers=10 #指定开启的进程数,默认为0,即不开启SNMPTrapperFile=/var/log/snmptrap/snmptrap.logCacheSize=8M #当主机数量很多时,会将获取的监控项存放在缓存中,生产中设置2GStartDBSyncers=4 #启动多少个线程和数据库连接HistoryCacheSize=16M #保存agent发送过来的监控数据的内存空间大小,生产中设置2GHistoryIndexCacheSize=4M #历史数据的索引Timeout=30 #获取数据的最长等待时间ExternalScripts=/usr/lib/zabbix/externalscriptsLogSlowQueries=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.confLogFile=/tmp/zabbix_agentd.logServer=10.0.0.100,10.0.0.101 #(可选)指向Zabbix Server和Zabbix ProxyServerActive=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.log24239:20200830:233105.235 IPv6 support: NO24239:20200830:233105.235 TLS support: NO24239:20200830:233105.235 **************************24239:20200830:233105.235 using configuration file:/apps/zabbix_agent/etc/zabbix_agentd.conf24239: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.confProxyMode=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.logEnab1eRemoteCommands=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.confProxyMode=1 #被动模式为1Server=10.0.0.100 #指向zabbix server的地址Hostname=zabbix-proxy-passvie-wang #可选项LogFile=/tmp/zabbix_proxy.logDBHost=localhost #指定MySQL的地址DBName=zabbix_proxy_passive #指定MySQL数据库名称DBUser=proxy #指定MySQL的用户DBPassword=123456 #指定MySQL的用户密码ProxyLocalBuffer=360ProxyOfflineBuffer=720JavaGateway=10.0.0.102StartJavaPollers=10CacheSize=8MStartDBSyncers=4HistoryCacheSize=16MHistoryIndexCacheSize=4MTimeout=30LogSlowQueries=3000[root@zabbix-proxy-passive zabbix-5.0.14]#grep -Ev \'^$|#\'/apps/zabbix_proxy/etc/zabbix_proxy.confProxyMode=1Server=10.0.0.100Hostname=Zabbix proxy passiveLogFile=/tmp/zabbix_proxy.logDBName=zabbix_proxy_passiveDBUser=proxyDBPassword=123456HeartbeatFrequency=10ConfigFrequency=10DataSenderFrequency=1Timeout=4LogSlowQueries=3000StatsAllowedIP=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.confPidFile=/var/run/zabbix/zabbix_agentd.pidLogFile=/var/log/zabbix/zabbix_agentd.logLogFileSize=0Server=10.0.0.100,10.0.0.102 #必须指向Proxy代理地址,否则Proxy无法监控,Zabbix Server地址则是可选项#ServerActive=10.0.0.100 #注释此行Hostname=10.0.0.104 #可选Timeout=30Include=/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/bashRED=\'\\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 echoif [ $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删除成功\"echoecho -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 echoif [ $usernum -eq 1 ];then echo -e \"$GREEN安装zabbix_agent包\" dnf clean all dnf -y install zabbix-agent echoelif [ $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-agentelif [ $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-agent2else echo -e \"$RED######未知请求######\"fi}#ubuntu主函数ubuntu_main(){install_ubuntureposerver_restart}#centos主函数centos_main(){install_centosreposerver_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\"# 模板名称# 认证并获取Tokenget_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}# 获取主机组IDget_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\'}# 获取模板IDget_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_hostecho \"操作完成!请到Zabbix Web界面验证主机状态。\"