我正在将 Cacti 从 Windows 迁移到 Linux,但遇到了一些问题。
Windows 服务器正在运行旧版本的 Cacti,因此我将其迁移到 0.8 版本。
我已成功将数据库移植到新服务器,安装程序成功运行,表格已迁移到新版本。我已将 RRA 文件夹(包含旧 RRD 文件)从 Windows 服务器复制到 Linux 服务器上的新版本,但图表未显示。
当 Cacti 尝试更新 RRD 文件时,从命令行手动运行 poll.php 会显示此错误:
ERROR: reached EOF while loading header rrd->ds_def
知道可能是什么原因造成的吗?
提前致谢!
克里斯
答案1
您的 RRD 文件中有 Windows 行尾,因此 Linux 上的 cacti/rrdtool 无法读取它们。
公认的方法是使用 rrddump 将 RRD 文件转换为 XML,然后在目标机器上使用 rrdrestore 将它们恢复为 RRD。在 RRD 上运行 dos2unix 可能会解决这个问题,但我从未尝试过。
--由原始海报编辑--
为了以防万一,这里有一些具体信息:
Windows 机器
将 rrd 文件转换为 xml。
for /F "usebackq" %i in (`dir /s /b d:\Old_Cacti\rra_working_copy\*.rrd`) do rrdtool dump %i > %i.xml
将转换后的文件复制到其他地方进行 tarring/zip 压缩,然后再移至 Linux 机器
copy d:\Old_Cacti\rra_working_copy\*.xml d:\Old_Cacti\converted_rra_files\
Linux 机器
更改为包含已转换(xml)文件的目录并将其转换回 .rrd 文件。
find . -exec rrdtool restore {} {}.rrd \;
将新转换的文件复制到 rra 目录中。
cp *.rrd.xml.rrd /var/www/html/rra/
进入 rra 目录并将文件重命名为 *.rrd
rename .rrd.xml.rrd .rrd *.rrd.xml.rrd