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
-