章工运维 章工运维
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

章工运维

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • python

  • shell

    • 进程pid判断脚本
    • 日志切割脚本
    • 设置跳板机脚本
    • 编写启动、停止、重启的脚本
    • mysql数据库备份的三种方式
    • jenkins编译服务脚本
    • app编译脚本
    • 常用shell脚本
    • 字符串的截取拼接
    • shell基础
    • centos7主机安全检测脚本和初始化脚本
    • 应用服务重启脚本
    • shell重启python程序脚本
    • rancher的证书制作脚本
    • shell常用脚本集合
    • mysql常用的脚本集合
    • shell批量部署安装包并启动
    • 批量添加定时任务
    • mysql备份企业示例
    • shell脚本创建出色用户体验的6种技巧
    • 多系统一键部署zabbix6脚本(已验证)
      • 批量拿取多台服务器的日志文件
      • shell脚本模块集合
    • go

    • 编程
    • shell
    章工运维
    2025-03-26
    目录

    多系统一键部署zabbix6脚本(已验证)

    Zabbix是一个功能强大的企业级开源监控解决方案,主要用于实时监控各种网络设备、服务器、虚拟机和应用程序的状态和性能。

    # 1、基本功能

    Zabbix能够通过多种协议(如SNMP、IPMI、JMX、Agent等)采集监控数据,支持主动和被动两种数据收集模式。它可以监控各种网络设备、服务器、虚拟机、应用程序和云服务等,涵盖了常见的操作系统如Linux和Windows,以及各类数据库、中间件、Web应用等。‌‌

    # 2、架构组成

    ‌Zabbix主要由以下几个组件构成:

    ‌1.Zabbix Server‌:核心组件,存储配置信息、统计信息和操作信息,接收Zabbix Agent报告的可用性、完整性及其他统计信息。

    ‌2.Web页面‌:提供直观的监控信息展示,方便运维人员管理。

    ‌3.数据库‌:存储配置信息、统计信息等。

    ‌4.Proxy‌:可选组件,用于分担Zabbix Server的负载,特别是在大规模部署或跨机房、跨网段的场景中。

    ‌5.Agent‌:部署在被监控目标上,主动监控本地资源和应用程序,并将数据发送给Zabbix Server。

    # 3、特点

    1.开源免费‌:用户可以免费获取、使用、修改和分发源代码,降低了企业的运营成本。

    2.‌功能强大且全面‌:支持对网络设备、服务器、虚拟机、应用程序和云服务等多种资源的监控,涵盖了系统性能监控、可用性和性能检查等功能。

    ‌3.数据可视化‌:提供丰富的图表、仪表盘、地图等数据展示方式,帮助用户直观了解系统运行状态。

    ‌4.告警管理‌:支持邮件、短信、Jabber等多种告警方式,允许用户自定义告警脚本,满足不同场景下的告警通知需求。

    ‌5.自动化功能‌:支持自动发现网络设备和服务,减少人工配置的工作量和错误率。

    # 4、适用场景

    Zabbix适用于需要实时监控数千台服务器、虚拟机和网络设备的场景,特别适合企业IT环境中的各种关键组件的监控需求。

    # 5、脚本

    以下是为多系统设计的完整Zabbix一键安装Shell脚本方案,整合了多个技术文档的最佳实践,支持CentOS/RHEL/Ubuntu/Rocky等主流系统,涵盖服务端、客户端及自动化配置功能。

    #!/bin/bash
    # Author: 爱踢人生sre 
    # Install Zabbix 6.0 on CentOS, Rocky Linux, Debian, or Ubuntu
    
    echo -e "\e[32m当前脚本介绍: \e[0m\e[33mZabbix 6.0安装脚本\e[0m"
    echo -e "\e[32m支持的操作系统: \e[0m\e[33mcentos 8 / centos 9 / rocky linux 8 / rocky linux 9 / ubuntu 20.04 / ubuntu 22.04 / debian 11 / debian 12\e[0m"
    
    # 检查当前用户是否是root用户
    if [ "$(id -u)" -eq 0 ]; then
      echo "当前用户是root用户..."
    else
      echo "请使用root用户运行本脚本..."
      exit 1
    fi
    
    install_zabbix_release_on_centos_or_rocky() {
      echo '为CentOS或Rocky Linux安装zabbix源...'
      dnf install epel-release -y
      curl -O https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/${VERSION_ID}/x86_64/zabbix-release-6.0-4.el${VERSION_ID}.noarch.rpm
      rpm -ivh zabbix-release-6.0-4.el${VERSION_ID}.noarch.rpm
      sed -i 's/repo\.zabbix\.com/mirrors\.aliyun\.com\/zabbix/' /etc/yum.repos.d/zabbix.repo
      sed -i 's/repo\.zabbix\.com/mirrors\.aliyun\.com\/zabbix/' /etc/yum.repos.d/zabbix-agent2-plugins.repo
      mv /etc/yum.repos.d/zabbix-agent2-plugins.repo /etc/yum.repos.d/zabbix-agent2-plugins.repo-bak
      sed -i '/^\[epel\]/a excludepkgs=zabbix*' /etc/yum.repos.d/epel.repo
    }
    
    config_rocky(){
      echo '为Rocky Linux配置阿里云源...'
      for file in /etc/yum.repos.d/rocky-*.repo /etc/yum.repos.d/Rocky-*.repo; do
        [ -e "$file" ] && cp "$file" "$file.bak" && sed -i -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/\$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' "$file"
      done
      dnf module reset mariadb -y
    }
    
    config_firewalld_on_centos_or_rocky() {
      echo '为CentOS或Rocky Linux配置防火墙...'
      # 如果防火墙正在运行,配置防火墙
      if systemctl status firewalld | grep -q "active (running)"; then
        echo '配置防火墙...'
        firewall-cmd --permanent --add-port={80/tcp,10051/tcp,443/tcp}
        firewall-cmd --reload
      fi
      # 关闭selinux
      sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
      setenforce 0
    }
    
    config_ufw_on_ubuntu_or_debian() {
      echo '为Ubuntu或Debian配置防火墙...'
      if command -v ufw &>/dev/null; then
        echo "ufw已安装在系统中."
    
        # 检查ufw是否已启用
        if ufw status | grep -q "Status: active"; then
          echo "ufw已启用,配置防火墙..."
          ufw allow 80/tcp
          ufw allow 443/tcp
          ufw allow 10051/tcp
          ufw reload
        else
            echo "ufw未启用."
        fi
      else
        echo "ufw未安装在系统中."
      fi
    }
    
    install_zabbix_release_on_debian() {
      echo '为Debian安装zabbix源...'
      apt install curl -y
      if [ "$VERSION_ID" == "11" ]; then
        curl -O https://mirrors.aliyun.com/zabbix/zabbix/6.0/${ID}/pool/main/z/zabbix-release/zabbix-release_6.0-4+${ID}${VERSION_ID}_all.deb
        dpkg -i "zabbix-release_6.0-4+${ID}${VERSION_ID}_all.deb"
      elif [ "$VERSION_ID" == "12" ]; then
        curl -O https://mirrors.aliyun.com/zabbix/zabbix/6.0/${ID}/pool/main/z/zabbix-release/zabbix-release_6.0-5+${ID}${VERSION_ID}_all.deb
        dpkg -i "zabbix-release_6.0-5+${ID}${VERSION_ID}_all.deb"
      fi
    
      sed -i 's/repo\.zabbix\.com/mirrors\.aliyun\.com\/zabbix/' /etc/apt/sources.list.d/zabbix.list
      sed -i 's/repo\.zabbix\.com/mirrors\.aliyun\.com\/zabbix/' /etc/apt/sources.list.d/zabbix-agent2-plugins.list
      mv /etc/apt/sources.list.d/zabbix-agent2-plugins.list /etc/apt/sources.list.d/zabbix-agent2-plugins.list-bak
    }
    
    install_zabbix_release_on_ubuntu() {
      echo '为Ubuntu安装zabbix源...'
      apt install curl -y
      if [ "$VERSION_ID" == "24.04" ]; then
        curl -O https://mirrors.aliyun.com/zabbix/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-6+ubuntu${VERSION_ID}_all.deb
        dpkg -i zabbix-release_6.0-6+ubuntu${VERSION_ID}_all.deb
      else
        curl -O https://mirrors.aliyun.com/zabbix/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu${VERSION_ID}_all.deb
      dpkg -i zabbix-release_6.0-4+ubuntu${VERSION_ID}_all.deb
      fi
      sed -i 's/repo\.zabbix\.com/mirrors\.aliyun\.com\/zabbix/' /etc/apt/sources.list.d/zabbix.list
      sed -i 's/repo\.zabbix\.com/mirrors\.aliyun\.com\/zabbix/' /etc/apt/sources.list.d/zabbix-agent2-plugins.list
      mv /etc/apt/sources.list.d/zabbix-agent2-plugins.list /etc/apt/sources.list.d/zabbix-agent2-plugins.list-bak
    }
    
    install_mariadb_release() {
      echo '安装mariadb源...'
      curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash -s -- --mariadb-server-version=11.0
    }
    
    init_database() {
      echo '初始化数据库...'
      echo "create database zabbix character set utf8mb4 collate utf8mb4_bin;" | mariadb -uroot
      echo "create user zabbix@localhost identified by 'huoxingxiaoliu';" | mariadb -uroot
      echo "grant all privileges on zabbix.* to zabbix@localhost;" | mariadb -uroot
      echo "set global log_bin_trust_function_creators = 1;" | mariadb -uroot
    
      # 导入初始化数据
      zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mariadb --default-character-set=utf8mb4 -uzabbix -phuoxingxiaoliu zabbix
      sed -i 's/# DBPassword=/DBPassword=huoxingxiaoliu/g' /etc/zabbix/zabbix_server.conf
      echo "set global log_bin_trust_function_creators = 0;" | mariadb -uroot
    }
    
    centos_or_rocky_finsh() {
      echo '安装完成,启动服务...'
      # 启动服务
      systemctl restart zabbix-server zabbix-agent httpd php-fpm
      systemctl enable zabbix-server zabbix-agent httpd php-fpm
      notification
    }
    
    ubuntu_or_debian_finsh() {
      echo '安装完成,启动服务...'
      # 启动服务
      systemctl restart zabbix-server apache2 zabbix-agent
      systemctl enable zabbix-server apache2 zabbix-agent
      notification
    }
    
    change_font_to_chinese() {
      echo "解决zabbix图表中文乱码问题"
      if [ -e "simkai.ttf" ]; then
        cp simkai.ttf /usr/share/zabbix/assets/fonts
        rm -f /usr/share/zabbix/assets/fonts/graphfont.ttf
        ln -s /usr/share/zabbix/assets/fonts/simkai.ttf /usr/share/zabbix/assets/fonts/graphfont.ttf
      else
        echo -e "\e[31m中文字体simkai.ttf不存在,请确保通过git clone 下载本项目!!!\e[0m"
      fi
    
    }
    
    notification() {
    
      echo -e "\e[32mAuthor: \e[0m\e[33m火星小刘 / 中国青岛\e[0m"
      echo -e "\e[32m作者github: \e[0m\e[33mhttps://github.com/X-Mars/\e[0m"
      echo -e "\e[32m跟作者学运维开发: \e[0m\e[33mhttps://space.bilibili.com/439068477\e[0m"
      echo -e "\e[32m本项目地址: \e[0m\e[33mhttps://github.com/X-Mars/Quick-Installation-ZABBIX\e[0m"
      echo -e "\e[32m当前脚本介绍: \e[0m\e[33mZabbix 6.0安装脚本\e[0m"
      echo -e "\e[32m支持的操作系统: \e[0m\e[33mcentos 8 / centos 9 / rocky linux 8 / rocky linux 9 / ubuntu 20.04 / ubuntu 22.04 / debian 11 / debian 12\e[0m"
    
      echo -e "\n\e[31m数据库root用户默认密码为空,zabbix用户默认密码 huoxingxiaoliu\e[0m"
    
      # 获取ip
      if command -v ip &> /dev/null; then
        # 使用ip命令获取IP地址并存储到ip变量
        ip=$(ip addr | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1)
      else
        # 使用ifconfig命令获取IP地址并存储到ip变量
        ip=$(ifconfig | grep -oP 'inet\s+\K[\d.]+')
      fi
    
      # 使用for循环打印IP地址,并在每次打印后输出 "ok"
      for i in $ip; do
        echo -e "\e[32m访问继续下一步操作:  http://$i/zabbix\e[0m"
      done
    
      echo -e "\e[32m默认用户名密码:  Admin / zabbix\e[0m"
    
    
      if [ "$ID" == "debian" ]; then
        echo -e "\n\e[31m请手动执行 dpkg-reconfigure locales 安装中文语言包!!!\e[0m"
        echo -e "\e[31m执行后勾选 zh_CN.UTF-8!!!\e[0m"
        echo -e "\e[31m安装结束后,重启服务: systemctl restart zabbix-server zabbix-agent apache2\e[0m"
      fi
    }
    
    
    add_wechat_dingtalk_feishu_scripts() {
      echo -e "\n\e[31m拉取企业微信、钉钉、飞书告警脚本,具体查看: https://github.com/X-Mars/Zabbix-Alert-WeChat\e[0m"
      echo -e "\e[31m此操作不影响zabbix使用\e[0m"
      echo -e "\e[31m运行命令: ls -la /usr/lib/zabbix/alertscripts 查看脚本\e[0m"
      git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git /usr/lib/zabbix/alertscripts
      ls -la /usr/lib/zabbix/alertscripts
    }
    
    # 获取操作系统信息
    if [ -f /etc/os-release ]; then
      . /etc/os-release
      echo "操作系统版本为: $ID linux $VERSION_ID"
      case "$ID" in
        centos|rocky)
          # CentOS 或 Rocky Linux 的安装步骤
          VERSION_ID=$(echo "$VERSION_ID" | cut -d'.' -f1)
          if ( [ "$VERSION_ID" == "8" ] || [ "$VERSION_ID" == "9" ]); then
              install_zabbix_release_on_centos_or_rocky
              install_mariadb_release
              if [ "$ID" == "rocky" ]; then
                  config_rocky
              fi
              dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent MariaDB-server MariaDB-client MariaDB-backup MariaDB-devel langpacks-zh_CN git -y
              systemctl enable mariadb --now
              if systemctl is-active mariadb; then
                echo "MariaDB 安装成功。"
              else
                echo -e "\e[91mMariaDB 安装失败,怀疑是网络问题(你懂得)。请使用以下命令安装 MariaDB 后重试: \e[0m"
                echo -e "\e[91m安装 MariaDB 源: curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash -s -- --mariadb-server-version=11.0\e[0m"
                echo -e "\e[91m安装 MariaDB: dnf install MariaDB-server MariaDB-client MariaDB-backup MariaDB-devel -y\e[0m"
                echo -e "\e[91m启动 MariaDB: systemctl enable mariadb --now\e[0m"
                exit 1
              fi
              change_font_to_chinese
              init_database
              config_firewalld_on_centos_or_rocky
              centos_or_rocky_finsh
              add_wechat_dingtalk_feishu_scripts
          else
              echo "不支持的操作系统版本,脚本停止运行。"
              exit 1
          fi
          ;;
        debian|ubuntu)
          # Debian 或 Ubuntu 的安装步骤
          VERSION_ID_BIG=$(echo "$VERSION_ID" | cut -d'.' -f1)
          if ( [ "$VERSION_ID" == "11" ] || [ "$VERSION_ID" == "12" ] || [ "$VERSION_ID_BIG" == "20" ] || [ "$VERSION_ID_BIG" == "22" ] || [ "$VERSION_ID_BIG" == "24" ] ); then
    
              if [ "$ID" == "debian" ]; then
                install_zabbix_release_on_debian
              elif [ "$ID" == "ubuntu" ]; then
                install_zabbix_release_on_ubuntu
                apt install language-pack-zh-hans -y
              fi
    
              install_mariadb_release
              apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent mariadb-server mariadb-client git -y
              systemctl enable mariadb --now
              if systemctl is-active mariadb; then
                echo "MariaDB 安装成功。"
              else
                echo -e "\e[91mMariaDB 安装失败,怀疑是网络问题(你懂得)。请使用以下命令安装 MariaDB 后重试: \e[0m"
                echo -e "\e[91m安装 MariaDB 源: curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash -s -- --mariadb-server-version=11.0\e[0m"
                echo -e "\e[91m安装 MariaDB: apt install mariadb-server mariadb-client -y\e[0m"
                echo -e "\e[91m启动 MariaDB: systemctl enable mariadb --now\e[0m"
                exit 1
              fi
              change_font_to_chinese
              init_database
              config_ufw_on_ubuntu_or_debian
              ubuntu_or_debian_finsh
              add_wechat_dingtalk_feishu_scripts
          else
              echo "不支持的操作系统版本,脚本停止运行。"
              exit 1
          fi
          ;;
      esac
    fi
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    # 使用方法
    chmod +x install_zabbix.sh
    bash install_zabbix.sh
    
    1
    2
    # 7、访问 Zabbix Web 界面

    脚本运行完成后,您可以通过浏览器访问 Zabbix Web 界面,网址为 http://zabbix_server_IP/zabbix。按照 Zabbix Web 界面的指引完成初始配置。


    原文链接 (opens new window)

    一键部署zabbix7参考:https://mp.weixin.qq.com/s/XJas6j9EGpJq7MwHpt94hg

    微信 支付宝
    上次更新: 2025/03/26, 15:55:49

    ← shell脚本创建出色用户体验的6种技巧 批量拿取多台服务器的日志文件→

    最近更新
    01
    shell脚本模块集合
    05-13
    02
    生活小技巧(认知版)
    04-29
    03
    生活小技巧(防骗版)
    04-29
    更多文章>
    Theme by Vdoing | Copyright © 2019-2025 | 点击查看十年之约 | 鄂ICP备2024072800号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式