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
      
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值