一键编译安装zabbix(centos)
文章目录
- 一、脚本功能描述
- 二、脚本内容
- 三、关键特性
- 四、注意事项
免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn
一、脚本功能描述
-
基础环境准备:
-
创建用户:自动检测并创建专用的
zabbix
系统用户。 -
安装依赖:安装 Java、编译器(GCC)、网络库(curl, snmp)、PHP 及组件、MariaDB 客户端等所有必要依赖包。
-
获取源码:从 SourceForge 下载指定版本的 Zabbix 源码包并解压。
-
-
编译与安装:
-
使用
./configure
和make install
编译安装 Zabbix Server 和 Agent,并启用关键功能(如 MySQL, Java, SNMP 支持)。 -
安装目标路径为
/etc/zabbix_server/
。
-
-
数据库初始化:
-
配置 MariaDB 的阿里云 Yum 源以安装客户端。
-
连接测试:使用脚本中预定义的数据库地址 (
10.0.0.24
)、用户名和密码 (zabbix/123456
) 测试数据库连通性。 -
导入数据:按顺序导入 Zabbix 所需的 SQL 文件 (
schema.sql
,images.sql
,data.sql
) 来初始化数据库结构,并进行最终验证。
-
-
配置与部署:
-
服务配置:修改 Zabbix Server 和 Agent 的配置文件,主要设置:
-
日志文件路径。
-
数据库连接参数(地址、数据库名、用户名、密码)。
-
-
Web前端部署:将 PHP Web 前端文件复制到 Apache 的网页目录 (
/var/www/html/zabbix
)。 -
PHP优化:调整 PHP 配置(时区设为亚洲上海、增大文件上传和执行时间限制)。
-
-
服务管理
-
为 Zabbix Server 和 Agent 创建 Systemd 服务单元文件。
-
重新加载配置、启动服务,并设置为开机自启。
-
可以根据自己的实际需求修改脚本
二、脚本内容
脚本共208行,动动你的小手滚动查看
#!/bin/bash
#
#*********************************************************
#Author: lhl
#Filename: install_zabbix_centos.s
#Description: The test script
#********************************************************VERSION=4.0.16
IP=10.0.0.24
DATABASE=zabbix_server
PASSWD=123456
USER=zabbix
FILE_DIR=/root
SQL_DIR=/root/zabbix-4.0.16/database/mysql
LOGS_DIR=/etc/zabbix_server/logs
PHP_CONFIG=/etccolor () {RES_COL=60MOVE_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_COLecho -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
}
install_zabbix() {if id zabbix;thencolor "zabbix 用户已创建" 0elsegroupadd -g 1001 zabbixuseradd -u 1001 -g 1001 zabbix && color "zabbix 用户创建成功" 0 || { color "zabbix 用户创建失败" 1; exit; }fijava -version &> /dev/nullif [ $? -eq 0 ];thencolor "java 环境已安装" 0elseyum install java-1.8.0* -y -q && color "java 环境安装成功" 0 || { color "java 环境安装失败" 1; exit; }fiyum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel libevent-devel php-ldap -y -qif [ -e zabbix-${VERSION}.tar.gz ];thencolor "文件已存在" 0elsewget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.16/zabbix-${VERSION}.tar.gz &> /dev/null && color "zabbix文件下载成功" 0 || { color "zabbix文件下载失败" 1; exit; }tar xf ${FILE_DIR}/zabbix-${VERSION}.tar.gzcd ${FILE_DIR}/zabbix-${VERSION}fi./configure --prefix=/etc/zabbix_server --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java --with-ldap &> /dev/null && color "zabbix编译成功" 0 || { color "zabbix编译失败" 1; exit; }make install &> /dev/null && color "zabbix编译安装成功" 0 || { color "zabbix编译安装失败" 1; exit; }
}import_db() {cat > /etc/yum.repos.d/MariaDB-aliyun.repo <<EOF
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB - aliyun
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/centos7-amd64
gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
EOFyum install MariaDB-client -y &> /dev/nullmysql -u$USER -p$PASSWD -h$IP -e "show databases;" &> /dev/nullif [ $? -eq 0 ];thencolor "mysql 测试连接成功" 0 elsecolor "mysql 测试连接失败" 1; exit;ficolor "----------开始导入数据库----------" 0cd ${SQL_DIR}mysql -u$USER -p$PASSWD -h$IP $DATABASE < schema.sqlif [ $? -eq 0 ];thencolor "schema 导入成功" 0elsecolor "schema 导入失败" 1;fimysql -u$USER -p$PASSWD -h$IP $DATABASE < images.sqlif [ $? -eq 0 ];thencolor "images 导入成功" 0elsecolor "images 导入失败" 1;fimysql -u$USER -p$PASSWD -h$IP $DATABASE < data.sqlif [ $? -eq 0 ];thencolor "data 导入成功" 0elsecolor "data 导入失败" 1;ficolor "----------导入数据库完成----------" 0echo ""mysql -u$USER -p$PASSWD -h$IP $DATABASE -e "use zabbix_server;show tables" | grep config &> /dev/nullif [ $? -eq 0 ];thencolor "数据库验证成功" 0elsecolor "数据库验证失败" 1; exit;fi }config() {cp /etc/zabbix_server/etc/zabbix_server.conf /etc/zabbix_server/etc/zabbix_server.conf.baksed -ri -e "s/LogFile=\/tmp\/zabbix_server.log/LogFile=\/etc\/zabbix_server\/logs\/zabbix_server.log/" \-e "s/# DBHost=localhost/DBHost=$IP/" \-e "s/DBName=zabbix/DBName=$DATABASE/" \-e "s/DBUser=zabbix/DBUser=$USER/" \-e "s/# DBPassword=/DBPassword=$PASSWD/" \-e 's/# DBPort=/DBPort=3306/' \-e 's/Timeout=4/Timeout=4/' \-e 's/LogSlowQueries=3000/LogSlowQueries=3000/' /etc/zabbix_server/etc/zabbix_server.confsed -ri "s/LogFile=\/tmp\/zabbix_agentd.log/LogFile=\/etc\/zabbix_server\/logs\/zabbix_agentd.log/" /etc/zabbix_server/etc/zabbix_agentd.confmkdir -p /$LOGS_DIRmkdir /var/www/html/zabbix -pcd ${FILE_DIR}/zabbix-${VERSION}/frontends/phpcp -a . /var/www/html/zabbixyum install php-gettext php-xml php-net-socket php-gd php-mysql -ysed -i -e 's/post_max_size = 8M/post_max_size = 16M/' -e 's/max_execution_time = 30/max_execution_time = 300/' -e 's/max_input_time = 60/max_input_time = 300/' -e 's/;date.timezone =/date.timezone = Asia\/Shanghai/' ${PHP_CONFIG}/php.inisystemctl restart httpd
}service() {pkill zabbix_server &> /dev/nullpkill zabbix_agentd &> /dev/nullcat > /lib/systemd/system/zabbix-server.service <<EOF
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target[Service]
Environment="CONFFILE=/etc/zabbix_server/etc/zabbix_server.conf"
EnvironmentFile=-/etc/default/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/etc/zabbix_server/sbin/zabbix_server -c \$CONFFILE
ExecStop=/bin/kill -SIGTERM \$MAINPID
RestartSec=10s
TimeoutSec=infinity[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload
systemctl restart zabbix-server
systemctl enable zabbix-servercat > /lib/systemd/system/zabbix-agent.service <<EOF
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target[Service]
Environment="CONFFILE=/etc/zabbix_server/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/etc/zabbix_server/sbin/zabbix_agentd -c \$CONFFILE
ExecStop=/bin/kill -SIGTERM \$MAINPID
RestartSec=10s
User=zabbix
Group=zabbix[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload
systemctl restart zabbix-agent
systemctl enable zabbix-agent
}install_zabbix
import_db
config
service
三、关键特性
-
一站式自动化:执行一条命令即可完成复杂部署。
-
状态反馈:通过彩色的
[OK]
或[FAILED]
提示清晰显示每个步骤的成功与失败。 -
配置集中管理:脚本顶部的变量(
VERSION
,IP
,PASSWD
等)方便用户根据自身环境快速定制。
四、注意事项
-
前提条件:脚本假设目标数据库 (
10.0.0.24
) 已存在且可连接,它负责初始化表结构而不创建数据库本身。 -
安全警告:脚本中使用了默认密码
123456
,在生产环境中必须修改。 -
网络依赖:需要互联网连接以下载源码包和依赖项。
欢迎您提出问题,并指正代码中的不足
请不要以此视为定论,这只是我的个人经验