如何在 Cacti 中合并两幅图片

Cacti 是一个很棒的开源网络监视系统,它广泛使用于图形化地展示网络元素,例如带宽、存储、处理器和内存使用。使用它的基于Web 的界面,你可以轻松地创建和组织各种图表。然而,它默认并没有提供一些高级功能,例如合并图片、使用多个来源创建聚合图形、迁移 Cacti 到另一台服务器。使用 Cacti 的这些功能你还需要一些经验。在该教程中,我们会看到如何在将两幅 Cacti 图片合并为一幅。

看看这个例子。在过去的 6 个月中,客户端 A 连接到了交换机 A 的端口 5。端口 5 发生了错误,因此客户端迁移到了端口 6。由于 Cacti 为每个接口/元素使用不同的图,客户端的带宽历史会分成端口 5 和端口 6。结果是对于一个客户端我们有两幅图片 - 一幅是 6 个月的旧数据,另一幅保存了后续的数据。

在这种情况下,我们实际上可以合并两幅图片将旧数据加到新的图中,使得用一个单独的图为一个用户保存历史的和新数据。本教程将会解释如何做到这一点。

Cacti 将每幅图片的数据保存在它自己的 RRD(round robin database,循环数据库)文件中。当请求一幅图片时,根据保存在对应 RRD 文件中的值生成图。在 Ubuntu/Debian 系统中,RRD 文件保存在 /var/lib/cacti/rra,在 CentOS/RHEL 系统中则是 /var/www/cacti/rra

合并图片背后的思想是更改这些 RRD 文件使得旧 RRD 文件中的值能追加到新的 RRD 文件中。

情景

一个客户端的服务在 eth0 上运行了超过一年。由于硬件损坏,客户端迁移到了另一台服务器的 eth1 接口。我们想展示新接口的带宽,同时保留超过一年的历史数据。该客户端希望只在一幅图中显示。

确定图的 RRD 文件

图合并的首个步骤是确定与图相关联的 RRD 文件。我们可以通过以调试模式打开图检查文件。要做到这点,在 Cacti 的菜单中: 控制台 > 管理图 > 选择图 > 打开图调试模式。

旧图:

新图:

从样例输出(基于 Debian 系统)中,我们可以确定两幅图片的 RRD 文件:

  • 旧图: /var/lib/cacti/rra/old_graph_traffic_in_8.rrd
  • 新图: /var/lib/cacti/rra/new_graph_traffic_in_10.rrd

准备脚本

我们会用一个 RRD 剪接脚本 来合并两个 RRD 文件。下载该 PHP 脚本,并安装到 /var/lib/cacti/rra/rrdsplice.php (Debian/Ubuntu 系统) 或 /var/www/cacti/rra/rrdsplice.php (CentOS/RHEL 系统)。

下一步,确认 Apache 用户拥有该文件。

在 Debian 或 Ubuntu 系统中,运行下面的命令:

 
 
  1. # chown www-data:www-data rrdsplice.php

并更新 rrdsplice.php。查找下面的行:

 
 
  1. chown($finrrd, "apache");

用下面的语句替换:

 
 
  1. chown($finrrd, "www-data");

在 CentOS 或 RHEL 系统中,运行下面的命令即可:

 
 
  1. # chown apache:apache rrdsplice.php

合并两幅图

通过不带任何参数运行该脚本可以获得脚本的使用语法。

 
 
  1. # cd /path/to/rrdsplice.php
  2. # php rrdsplice.php

 
 
  1. USAGE: rrdsplice.php --oldrrd=file --newrrd=file --finrrd=file

现在我们准备好合并两个 RRD 文件了。只需要指定旧 RRD 文件和新 RRD 文件的名称。我们会将合并后的结果重写到新 RRD 文件中。

 
 
  1. # php rrdsplice.php --oldrrd=old_graph_traffic_in_8.rrd --newrrd=new_graph_traffic_in_10.rrd --finrrd=new_graph_traffic_in_10.rrd

现在旧 RRD 文件中的数据已经追加到了新 RRD 文件中。Cacti 会将任何新数据写到新 RRD 文件中。如果我们点击图,我们可以发现也已经添加了旧图的周、月、年记录。下面图表中的第二幅图显示了旧图的周记录。

总之,该教程显示了如何简单地将两幅 Cacti 图片合并为一幅。当服务迁移到另一个设备/接口,我们希望只处理一幅图片而不是两幅时,这个小技巧非常有用。该脚本非常方便,因为它可以不管源设备是不是相同都可以合并图片,例如 Cisco 1800 路由器和 Cisco 2960 交换机。

希望这些能对你有所帮助。



原文发布时间为:2015-07-03


本文来自云栖社区合作伙伴“Linux中国”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cacti是一款基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测形分析工具,通过snmpget来获取数据,使用RRDtool绘画形,提供了非常强大的数据和用户管理功能。 Cacti 1.2.2 更新日志:2019-02-24 问题#599:聚合模板假定AVG合并功能;问题#2312:在Safari上检索设备信息似乎失败;问题#2317:Unabe将新记录添加到'poller_time'表;问题#2327:运行轮询器复制时内存耗尽;问题#2334:某些浏览器在切换到控制台时报告javascript错误;问题#2337:运行升级时,将重置日志文件的路径;问题#2339:收件人地址的某些字符可能导致电子邮件失败;问题#2343:由于缺少默认关键字,导出挂钩不再起作用;问题#2346:列出插件权限时,“Legacy 1.x插件”可能出现在错误的单元格;问题#2347:允许排序输出将返回的数据注入特定对象;问题#2350:无法为包含第n个百分位数和带宽的HRULES和COMMENTS选择数据源;问题#2352:SNMP描述字段有时可能包含受损数据;问题#2354:在自动化重新编制索引时,表和数据源的标题不会更新;问题#2355:指定自定义数据时,有时会复制数据源;问题#2357:当索引不正确时,轮询器应记录更多信息;问题#2359:升级时,“安装/升级”权限可能先前已丢失;问题#2360:检索数据库/表/列信息时,并不总是应用模式名称;问题#2362:当ifSpeed和ifHighSpeed返回为零时,无法默认接口速度;问题#2365:编辑聚合时,并不总是删除孤立的项;问题#2372:数据查询重建索引导致的间隙;问题#2376:手动添加Automation发现的设备会导致记录错误;问题#2380:设备可能会遇到不断的重建索引;问题#2384:当身份验证方法设置为“无”时,更改为“内置”,因为“无”已被删除;问题#2393:重新索引设备时,Graph Automation每次都会创建重复的表;问题#2416:SELinux希望APPEND不对Fedora/EPEL(RHEL,Centos)进行WRITE许可;问题#2419:未正确计算主机状态时间;问题#2426:为'custom_logout_message'和'custom_denied'恢复缺少的插件挂钩;问题#2431:“邮件方法”(settings_how)的默认值不正确导致错误;问题#2432:更新RRD数据时未定义的变量警告;问题#2451:拖放并不总是正常运行;功能:将javascript库c3.js更新为0.6.12版;功能:将phpseclib更新为2.0.14版;功能:将PHPMailer更新到版本6.0.7;功能:将javascript库d3.js更新为版本5.9.1。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值