zabbix迁移

Zabbix-server迁移

环境及安装版本

  • centos7
  • zabbix 3.2.6
  • 关闭selinux和防火墙

安装zabbix-server

  • 配置yum源

    [root@server ~]# cat /etc/yum.repos.d/zabbix.repo
    [zabbix]
    name=Zabbix Official Repository - $basearch
    baseurl=http://repo.zabbix.com/zabbix/3.2/rhel/7/$basearch/
    enabled=1
    gpgcheck=0
    
    [zabbix-non-supported]
    name=Zabbix Official Repository non-supported - $basearch
    baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
    enabled=1
    gpgcheck=0
    
  • 安装zabbix-server

    yum install zabbix-server-mysql zabbix-get
    
  • 安装mysql

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    rpm -ivh mysql-community-release-el7-5.noarch.rpm
    yum update
    yum install mysql-server
    chown mysql:mysql -R /var/lib/mysql
    mysqld --initialize
    systemctl start mysqld
    
  • 初始化zabbix database

    gunzip /usr/share/doc/zabbix-server-mysql-3.2.11/create.sql.gz
    

    进入mysql创建zabbix数据库

    create database zabbix charset 'utf8';
    grant all on zabbix.* to zabbix@'localhost' identified by 'password';
    flush privileges;
    

    将初始化数据库导入到zabbix数据库

    mysql -uroot -p -Dzabbix < /usr/share/doc/zabbix-server-mysql-3.2.11/create.sql
    
  • 配置zabbix-server

    复制老的zabbix的/etc/zabbix/zabbix_server.conf到新的zabbix服务器上,文件的用户组要保证是zabbix

安装zabbix-web

  • 安装依赖

    yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml
    
  • 安装zabbix-web

    yum install zabbix-web zabbix-web-mysql
    
  • 复制配置文件
    复制/etc/httpd文件到新的zabbix服务器上

初始化zabbix

  • 访问ip/zabbix进入网页,默认账号密码是admin/zabbix

复制脚本

  • AlertScriptsPath=/usr/lib/zabbix/alertscripts
  • ExternalScripts=/usr/lib/zabbix/externalscripts
  • 把以上两个脚本目录复制新的zabbix服务器
  • 这里要注意下权限问题,两个文件夹的用户和组都要保证是zabbix

补充

如果只是些基本配置的话以上足矣,但是老大要求把主机模板啥的也拷贝过去,但是历史数据不需要了。用python写了俩脚本满足该需求。

  • 导出老的zabbix数据库脚本(暂时去除一些占用内存大的数据表)

    #!/usr/bin/python3
    
    import pymysql, os
    
    # 打开数据库连接
    db = pymysql.connect(host="localhost",user="zabbix",password="DzwBfm997869",database="zabbix" )
    
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    
    cursor.execute("use zabbix;")
    cursor.execute("show tables;")
    all_tables = cursor.fetchall()
    
    cursor.execute("use information_schema;")
    # 使用 execute()  方法执行 SQL 查询 
    data = []
    for table in all_tables:
        cursor.execute(f"SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS FROM TABLES WHERE TABLE_SCHEMA='zabbix' AND TABLE_NAME='{table[0]}';")
    # cursor.execute("SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS FROM TABLES WHERE TABLE_SCHEMA='zabbix' AND TABLE_NAME='history';")
        data.append(cursor.fetchone())
    # 使用 fetchone() 方法获取单条数据.
    # data = cursor.fetchone()
    
    # print (data)
    for i in data:
        if all([j not in i[0] for j in ['log', 'alerts', 'events', 'history', 'images', 'item', 'profiles', 'trends', 'functions', 'graphs']]):
            print(f"----------开始将{i[0]}表导出------------")
            os.system(f"mysqldump zabbix -uroot --tables {i[0]}>{i[0]}.sql;")
    # 关闭数据库连接
            print(f"------------{i[0]}表导出完毕------------")
    db.close()
    
  • 导入到新的zabbix数据库

    #!/usr/bin/python3
    
    import pymysql, os
    
    # 打开数据库连接
    db = pymysql.connect(host="localhost",user="zabbix",password="123123",database="zabbix" )
    
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    
    # cursor.execute("use zabbix;")
    
    for sql in os.listdir('/root/zabbix_sql/all_sql_dic'):
        print(f"-----------开始导入{sql}脚本-----------------------")
        os.system(f"mysql -uroot -ppassword zabbix < /root/zabbix_sql/all_sql_dic/{sql};")
        print(f"-----------导入{sql}脚本成功-----------------------")
    db.close()
    
    

遇到的问题

  • 连接过多

    [Z3001]connection to database 'zabbix' failed: [1040] Too many connections
    # 解决方法如下
    show variables like 'max_connections';(查可以看当前的最大连接数)
    
    set global max_connections=1000;(设置最大连接数为1000,可以再次查看是否设置成功)
    
  • 钉钉告警问题
    需要添加一个用户专门用来接收钉钉告警,media选择钉钉方式

  • agent端连不上相关问题

    • 查询日志命令如下

      cat /var/log/zabbix/zabbix_agentd.log
      
    • 版本不一致,报错入选

      5851:20210601:092245.053 Message from 119.8.50.96 is missing header. Message ignored.
      5850:20210601:092438.785 Message from 119.8.50.96 is missing header. Message ignored.
      5849:20210601:092621.811 Message from 119.8.50.96 is missing header. Message ignored.
      5849:20210601:092811.393 Message from 119.8.50.96 is missing header. Message ignored.
      

      解决方案如下:

      # 1.安装3.2版本的yum源
      rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
      #  2.修改repo文件
      [zabbix]
      name=Zabbix Official Repository - $basearch
      baseurl=http://mirrors.aliyun.com/zabbix/zabbix/3.2/rhel/7/$basearch/
      enabled=1
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
      
      [zabbix-non-supported]
      name=Zabbix Official Repository non-supported - $basearch 
      baseurl=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
      enabled=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
      gpgcheck=1
      # 3.安装zabbix-agent
      yum -y install zabbix-agent
      # 4.修改配置文件
      vim /etc/zabbix/zabbix_agentd.conf
      Server=...
      ServerActive=...
      Hostname=...
      
      
    • 找不到pid文件,报错如下

      zabbix_agentd [16115]: cannot create PID file [/var/run/zabbix/zabbix_agentd.pid]: [2] No such file or directory
      

      解决方法如下

      cd /var/run
      mkdir zabbix
      chown zabbix.zabbix zabbix
      # 然后重启zabbix-agent服务
      
    • zabbix-server上的hostname与agent配置文件中不一致

      928:20210602:113352.666 no active checks on server [zabbix-server.justalkcloud.com:10051]: host [SZ06-139.159.152.52] not found
      928:20210602:113552.705 no active checks on server [zabbix-server.justalkcloud.com:10051]: host [SZ06-139.159.152.52] not found
      928:20210602:113752.835 no active checks on server [zabbix-server.justalkcloud.com:10051]: host [SZ06-139.159.152.52] not found
      
### Zabbix 5.4 升级至 Zabbix 7.0 迁移指南 #### 准备工作 在进行版本升级之前,确保备份现有数据库和配置文件。这一步骤至关重要,以防意外情况发生时能够恢复数据。 ```bash mysqldump -uroot -p123456 --opt zabbix > zabbix.sql ``` 此命令会导出当前Zabbix数据库的内容并保存为`zabbix.sql`文件[^5]。 #### 停止旧的服务实例 为了防止数据不一致,在执行任何更改前应当停止正在运行的老版本Zabbix服务: ```bash systemctl stop zabbix-server.service systemctl stop httpd.service ``` 这些指令可以有效阻止老版本继续接收请求和服务访问[^4]。 #### 安装新版依赖包 对于Linux系统而言,建议先更新操作系统软件源列表,并安装必要的依赖项来支持最新版Zabbix的正常运作。具体操作取决于所使用的发行版类型(如Debian/Ubuntu或RedHat/CentOS),这里不再赘述具体的安装过程。 #### 下载并部署Zabbix 7.0 采用Docker Compose的方式来进行新版本的快速部署是一种高效的选择。通过这种方式不仅可以简化环境设置流程,还能更好地管理各个组件之间的关系[^3]。 创建一个新的Compose文件定义所需容器及其参数,例如网络连接、存储卷映射等细节;接着利用该文件启动整个集群即可完成初步部署。 #### 数据迁移与同步 将先前准备好的SQL脚本导入到新的MySQL/MariaDB实例当中去,从而实现历史记录无缝转移。注意调整表结构以匹配新特性需求的同时也要保持兼容性不变。 #### 更新配置文件 针对/Zabbix/server/etc/zabbix_server.conf路径下的核心配置文档作出相应修改,比如替换掉原有的数据库主机地址指向新的位置: ```bash sed -i "s/DBHost=.*/<新从库地址>/g" /zabbix/server/etc/zabbix_server.conf ``` 上述代码片段展示了如何使用SED工具批量处理文本中的特定模式串替换任务[^1]。 #### 测试验证 最后重启所有关联的服务进程,并登录Web控制台检查各项功能是否均能正常使用。如果一切顺利,则说明此次升级顺利完成!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值