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.mzph.cn/news/879469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis Key的过期策略

Redis 的过期策略主要是指管理和删除那些设定了过期时间的键,以确保内存的有效使用和数据的及时清理。 具体来说,Redis 有三种主要的过期策略:定期删除(Scheduled Deletion)、惰性删除(Lazy Deletion&#…

C#命令行参数解析库System.CommandLine介绍

命令行参数 平常在日常的开发过程中,会经常用到命令行工具。如cmd下的各种命令。 以下为sc命令执行后的截图,可以看到,由于没有输入任何附带参数,所以程序并未执行任何操作,只是输出了描述和用法。 系统在创建一个新…

【BFS专题】— 解决最短路问题

1、迷宫中离入口最近的出口 - 力扣(LeetCode) 思路: 利用BFS层序遍历,新建一个变量统计步数代码: class Solution {int dx[] {0, 0, -1, 1};int dy[] {1, -1, 0, 0};public int nearestExit(char[][] maze, int[] en…

URP 线性空间 ui资源制作规范

前言: 关于颜色空间的介绍,可参阅 unity 文档 Color space URP实现了基于物理的渲染,为了保证光照计算的准确,需要使用线性空间; 使用线性空间会带来一个问题,ui资源在unity中进行透明度混合时&#xff…

Centos7 Hadoop 单机版安装教程(图文)

本章教程,主要记录如何在Centos7中安装Hadoop单机版。 一、软件安装包和基础环境 CentOS7.x,jdk8,hadoop 通过网盘分享的文件:Hadoop 链接: https://pan.baidu.com/s/1_qGI9QeXMAJNb3TydHhQGA?pwd=xnz4 提取码: xnz4 当然你也可以自己去官网下载。 java8:https://www.ora…

Redis:发布(pub)与订阅(sub)实战

前言 Redis发布订阅(Pub/Sub)是Redis提供的一种消息传递机制,它使用“发布者-订阅者”(publisher-subscriber)模式来处理消息传递。在这种模式下,发布者将消息发布到一组订阅者中,而无需关心谁…

java的内存分配和回收机制

Java 与 C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述 垃圾收集(GC)需要完成的三件事情: 哪些内存需要回收?什么时候回收?如何回收&am…

Linux操作系统入门(三)

_______________________________________________ 一.Linux操作系统的文件结构 相比于Windows操作系统的C,D,E等盘符,Linux操作系统仅有一个"/"符号的根目录. 这其中存在一个显著的不同,Linux操作系统使用的是斜杠"/",而Windows…

基于微信小程序的宠物之家的设计与实现

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的宠物之家/宠物综合…

判断当前环境是否为docker容器下

判断当前环境是否为docker容器下 webshell后或登录到系统后台,判断是否为docker容器可使用如下方法: 方式一:使用ls -alh命令查看是否存在.dockerenv来判断是否在docker容器环境内 ls -alh /.dockerenv如下图无.dockerenv文件,所…

本地部署轻量级web开发框架Flask结合内网穿透公网环境访问管理界面

文章目录 1. 安装部署Flask2. 安装Cpolar内网穿透3. 配置Flask的web界面公网访问地址4. 公网远程访问Flask的web界面 本篇文章主要讲解如何在本地安装Flask,以及如何将其web界面发布到公网进行远程访问。 Flask是目前十分流行的web框架,采用Python编程语…

无人机飞手教员组装、调试高级教学详解

随着无人机技术的飞速发展,其在航拍、农业、救援、监测等多个领域的应用日益广泛,对专业无人机飞手的需求也随之增加。作为无人机飞手教员,掌握无人机的高级组装、调试技能不仅是教学的基础,更是培养学生成为行业精英的关键。本教…

【吊打面试官系列-Redis面试题】使用过 Redis 做异步队列么,你是怎么用的?

大家好,我是锋哥。今天分享关于【使用过 Redis 做异步队列么,你是怎么用的?】面试题,希望对大家有帮助; 使用过 Redis 做异步队列么,你是怎么用的? 一般使用 list 结构作为队列,rpus…

Word中插入当前日期与时间

Word中插入当前日期与时间 通过构建基块的方法快速插入当前日期与时间 快捷键操作 快捷键具体功能说明 Alt Shift D 插入当前日期date Alt Shift T 插如当前时间time Ctrl Shift F9 使得域文本变为正常文本 Ctrl F11 锁定域更新域菜单工具会变为黑色 C…

你的大模型应用表现真的好吗?借助 Dify + Langfuse 一探究竟

背景介绍 众所周知,大模型应用的输出存在着一些不确定性,往往需要迭代多轮才能得到较为稳定的输出结果,因此开发者往往需要关注大模型应用的实际表现,并进行有针对性的优化。 然而常规 Web 服务的监控机制往往无法满足大模型应用…

python绘制3d建筑

import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d.art3d import Poly3DCollection# 随机生成建筑块数据 def generate_building_blocks(num_blocks, grid_size100, height_range(5, 50), base_size_range(10, 30)):buildings []for _ in range(…

sqli-labs靶场自动化利用工具——第1关

文章目录 概要整体架构流程技术细节执行效果小结 概要 Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生,或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢?可能有些人会说不是有sqlmap&#xf…

中国矿业大学《2023年868+2007年自动控制原理真题》 (完整版)

本文内容,全部选自自动化考研联盟的:《25届中国矿业大学868自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2007年复试真题 2023年初试真题 Part1:完整版真题 2007年复试真题 2…

【Python基础】Python错误和异常处理(详细实例)

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢! 文章目录 一、前言二、Python中的错误类型三、Python异常处理机制3.1 try-except语句3.2 try-except-else语句3.3 try-fi…

TiDB 扩容过程中 PD 生成调度的原理及常见问题丨TiDB 扩缩容指南(一)

导读 作为一个分布式数据库,扩缩容是 TiDB 集群最常见的运维操作之一。本系列文章,我们将基于 v7.5.0 具体介绍扩缩容操作的具体原理、相关配置及常见问题的排查。 通常,我们根据当前资源状态来决定是否需要调整 TiKV 节点的规模&#xff0…