当前位置: 首页 > news >正文

一键编译安装zabbix(centos)

文章目录

  • 一、脚本功能描述
  • 二、脚本内容
  • 三、关键特性
  • 四、注意事项

免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn

一、脚本功能描述

  1. 基础环境准备

    • 创建用户​:自动检测并创建专用的 zabbix系统用户。

    • 安装依赖​:安装 Java、编译器(GCC)、网络库(curl, snmp)、PHP 及组件、MariaDB 客户端等所有必要依赖包。

    • 获取源码​:从 SourceForge 下载指定版本的 Zabbix 源码包并解压。

  2. 编译与安装​:

    • 使用 ./configuremake install编译安装 Zabbix Server 和 Agent,并启用关键功能(如 MySQL, Java, SNMP 支持)。

    • 安装目标路径为 /etc/zabbix_server/

  3. 数据库初始化​:

    • 配置 MariaDB 的阿里云 Yum 源以安装客户端。

    • 连接测试​:使用脚本中预定义的数据库地址 (10.0.0.24)、用户名和密码 (zabbix/123456) 测试数据库连通性。

    • 导入数据​:按顺序导入 Zabbix 所需的 SQL 文件 (schema.sql, images.sql, data.sql) 来初始化数据库结构,并进行最终验证。

  4. ​​配置与部署​:

    • 服务配置​:修改 Zabbix Server 和 Agent 的配置文件,主要设置:

      • 日志文件路径。

      • 数据库连接参数(地址、数据库名、用户名、密码)。

    • Web前端部署​:将 PHP Web 前端文件复制到 Apache 的网页目录 (/var/www/html/zabbix)。

    • PHP优化​:调整 PHP 配置(时区设为亚洲上海、增大文件上传和执行时间限制)。

  5. 服务管理

    • 为 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,在生产环境中必须修改。

  • 网络依赖​:需要互联网连接以下载源码包和依赖项。


欢迎您提出问题,并指正代码中的不足

请不要以此视为定论,这只是我的个人经验

http://www.dtcms.com/a/349882.html

相关文章:

  • Spark面试题
  • HTTP 协议与TCP 的其他机制
  • excel 破解工作表密码
  • Python之Flask快速入门
  • Redis类型之List
  • 自然语言处理——07 BERT、ELMO、GTP系列模型
  • lesson46-1:Linux 常用指令全解析:从基础操作到高效应用
  • Docker:常用命令、以及设置别名
  • 数据挖掘 6.1 其他降维方法(不是很重要)
  • 聊聊负载均衡架构
  • 关于窗口关闭释放内存,主窗口下的子窗口关闭释放不用等到主窗口关闭>setAttribute(Qt::WA_DeleteOnClose);而且无需手动释放
  • 【Python】QT(PySide2、PyQt5):列表视图、模型、自定义委托
  • 【芯片后端设计的灵魂:Placement的作用与重要性】
  • SQL 语句拼接在 C 语言中的实现与安全性分析
  • 跨语言统一语义真理及其对NLP深层分析影响
  • 2.3零基础玩转uni-app轮播图:从入门到精通 (咸虾米总结)
  • Python 实战:内网渗透中的信息收集自动化脚本(3)
  • 苹果公司即将启动一项为期三年的计划
  • Linux应急响应一般思路(三)
  • 蜗牛播放器 Android TV:解决大屏观影痛点的利器
  • C/C++ 指针与函数
  • Tesseract OCR之页面布局分析
  • 朴素贝叶斯:用 “概率思维” 解决分类问题的经典算法
  • ​Visual Studio + UE5 进行游戏开发的常见故障问题解决
  • 【区间DP】P1063 [NOIP 2006 提高组] 能量项链
  • 基于深度学习的人声分离系统设计与实现
  • Apache Commons Math_Java科学计算的利器
  • AP服务发现中两条重启检测路径
  • 南京魔数团:AR技术引领远程协作新纪元
  • C++ Core Guidelines 核心理念