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

CACTI 0.8.7 迁移并升级到 1.2.7记录

升级前后环境

升级前: CactiEZ 中文版 V10
升级后: Ubuntu 2204+ Cacti 1.2.7
升级原因:风险漏洞太多,升不尽,补不完.

升级流程

Created with Raphaël 2.3.0 开始 DST:安装Ububtu/Mariadb/apache/php SRC:备份 DB/RRA 数据导入 结束

Cacti 依赖包

注意:UBUNTU下有些包,它非另外取个名,真TMD有病
NET-SNMP --> snmp
php-dblib --> php-sybase
PHP/NET-SNMP/RRDtool,然后DB和Web Server

升级过程中遇到的问题及处理方法

DB相关问题

原DB默认字符集为latin1的处理方式

在字符集为latin之类,内容包含中文时,直接使用mysqldump导出就会乱码.

mysqldump --default-character-set latin1 --databases xxx --tables xx xx xx >>bak.sql
sed -i 's/latin1/utf8/g' bak.sql

注意: mysqldump命令设置default-character-set时,可能会对database级的导出不生效,所以具体到表.

源/目的地安装路径不一致,需要在DB中手动更改,不然启动不了.

mysql
use cacti
select * from settings where value like 'var/www/html%';
update settings set value='sdfsd' where name='adfsdf'

注意:不要手动更改version中的值,这个它自己升级database要用的.

SYSLOG相关的三个表先别导入,这个插件放后面搞,不然有问题

新旧SRV 的RRDTool版本不一样,旧图形不可直接使用.

旧的导出为xml到新的这边再恢复为rrd

find /var/www/html/rra  -name *.rrd -exec /usr/local/rrdtool/bin/rrdtool dump {} {}.xml \;
tar -zcvf  rra.tar.gz /var/www/html/rrascp user@host:/path/rra.tar.gz .
tar -zxvf rra.tar.gz
find . -name *.xml -exec rrdtool restore {} {}.rrd \;
find . -name *.rrd.xml.rrd |sed -e"p;s/.rrd.xml.rrd/.rrd/" |xargs -n2 mv
find . -name *.xml -exec rm -f () \;

升级过程中断失败

2024-09-03 09:02:22 - INSTALL: always: 从v1.0.0(数据库1.0.0)升级到v1.0.4
2024-09-03 09:02:22 - INSTALL: always: 从v1.0.4(数据库1.0.4)升级到v1.0.5
2024-09-03 09:02:23 - CMDPHP ERROR: A DB Exec Failed!, Error: Array to string conversion
2024-09-03 09:02:23 - CMDPHP SQL Backtrace:  (/install/background.php[70]:Installer::beginInstall(), /lib/installer.php[3530]:Installer->install(), /lib/installer.php[3025]:Installer->upgradeDatabase(), /lib/installer.php[3423]:upgrade_to_1_0_5(), /install/upgrades/1_0_5.php[36]:db_install_execute(), /install/functions.php[160]:db_execute_prepared())
2024-09-03 09:02:23 - INSTALL: always: 已完成UPGRADE针对v1.2.27的进程
2024-09-03 09:02:23 - INSTALL: always: WARNING: One or more upgrades failed to install correctly

这个比较操蛋,找了一路,结果是1_0_5.php 36行这里传的参数在后面需要的是个string,但这里给了一个array. array( p r o f i l e i d ) ) ; − − > a r r a y ( profile_id)); --> array( profileid));>array(profile_id[‘data’]));

        $profile_id = db_install_fetch_cell('SELECT id FROM data_source_profiles ORDER BY `default` DESC LIMIT 1');if ($profile_id > 0) {db_install_execute('UPDATE data_template_dataSET data_source_profile_id = ?WHERE data_source_profile_id = 0',array($profile_id));}

syslog 插件问题

升级过来后到syslog页面可能会卡死,提示什么升级得重安装什么的.
在README里看到这么一句:

If you are upgrading to 2.0 from a prior install, you must first uninstall
syslog and insure both the syslog, syslog_removal, and syslog_incoming tables
are removed, and recreated at install time.

正确步骤: 停服务-> 移插件 ->删表 -->cacti中uninstall -->移回来 -->cacti中install

  1. systemctl stop apach2
  2. mv plugins/syslog new/
  3. mysql -D cacti
  4. drop table syslog;
  5. drop table syslog_removal;
  6. drop table syslog_incoming;
  7. php path/cli/plugin_manage.php --plugin=syslog --uninstall
  8. mv new/syslog plugins/
  9. php path/cli/plugin_manage.php --plugin=syslog --install --enable --allperms
  10. systemctl start apach2

有问题时cacti在plugins页面时,后台程序可能报错死循环,到卡死.所以页面上uninstall不了.

中文界面上FORM提交后页面异常

现象:原本AJEX异步的页面,返回了无样式的页面
原因:中文翻译的字符串中的单引号会导致JS错误,使用AJEX部分不执行,变成常规的FORM提交.

vim locales/po/zh-CN.po
#: lib/html_form.php:1403
msgid "You have unsaved changes on this form.  If you press 'Continue' these changes will be discarded.  Press 'Cancel' to continue editing the form."
msgstr "您在此表单上有未保存的更改.如果按[继续],这些更改将被丢弃.按[取消]继续编辑表单."

这里的继续和取消两边原来是单引号,这个字符串会被写到js中,然后就坏了,改为括号.然后执行build_mo.sh

./build_mo.sh

更改认证方法后进不去了…

mysql -D cacti
update settings set value=1 where name like 'auth_method';
update user_auth set enabled='on' where username='admin';

这破东西可折腾人…

http://www.lryc.cn/news/438680.html

相关文章:

  • OrionX vGPU 研发测试场景下最佳实践之Jupyter模式
  • 国风编曲:了解国风 民族调式 五声音阶 作/编曲思路 变化音 六声、七声调式
  • HTTP 响应状态码详解
  • 在服务器上开Juypter Lab教程(远程访问)
  • 【硬件模块】SHT20温湿度传感器
  • Redhat 8,9系(复刻系列) 一键部署Oracle23ai rpm
  • SIPp uac.xml 之我见
  • 引领智能家居新风尚,WTN6040F门铃解决方案——让家的呼唤更动听
  • Android 蓝牙服务启动
  • 【安全系列--处理挖矿】
  • SpringBoot集成Thymeleaf模板引擎,为什么使用(详细介绍)
  • Docker突然宣布:涨价80%
  • 工厂方法模式和抽象工厂模式
  • 【星海出品】go语言环境兼install
  • Spring 源码解读:自定义实现BeanPostProcessor的扩展点
  • Spring Boot-分布式系统问题
  • 面试题总结(三) -- 内存管理篇
  • Qt 定时器-定时备份
  • 天融信把桌面explorer.exe删了,导致开机之后无windows桌面,只能看到鼠标解决方法
  • 视频分割操作教程
  • 唯品会大数据面试题及参考答案(3万字长文)
  • 使用容器技术快速入门MinIO
  • ros2教程(一):使用python和C++发布摄像头原始图像和压缩图像
  • 【自动化测试】UI自动化的分类、如何选择合适的自动化测试工具以及其中appium的设计理念、引擎和引擎如何工作
  • 深入理解Python中的“_,”:一个实用的语法特性
  • Mac清理其他文件:释放存储空间的高效指南
  • html+css+js网页设计 旅游 龙门石窟4个页面
  • CISSP一站通关
  • Golang | Leetcode Golang题解之第406题根据身高重建队列
  • 【我的Android进阶之旅】解决CardView四个圆角有白边的问题