当前位置: 首页 > 科技观察

如何在Cacti中合并两张图片

时间:2023-03-15 17:15:53 科技观察

Cacti是一个很棒的开源网络监控系统,广泛用于以图形方式显示网络元素,如带宽、存储、处理器和内存使用情况。使用其基于Web的界面,您可以轻松地创建和组织各种图表。但是,它默认不提供一些高级功能,例如合并图像、使用多个源创建聚合图以及将Cacti迁移到另一台服务器。您需要一些经验才能使用Cacti的这些功能。在本教程中,我们将看到如何将两个Cacti图像合并为一个。看看这个例子。客户端A在过去6个月内一直连接到交换机A的端口5。端口5发生错误,因此客户端迁移到端口6。由于Cacti为每个接口/元素使用不同的映射,客户端的带宽历史记录被拆分为端口5和端口6。结果是对于一个客户端,我们有两个图片-一张有6个月前的数据,一张有后续数据。在这种情况下,我们实际上可以合并两个图像并将旧数据添加到新图形中,从而允许单个图形为用户保存历史数据和新数据。本教程将解释如何执行此操作。Cacti将每个图像的数据存储在它自己的RRD(循环数据库)文件中。当请求图像时,图像是根据存储在相应RRD文件中的值生成的。在Ubuntu/Debian系统上,RRD文件存储在/var/lib/cacti/rra中,在CentOS/RHEL系统中是/var/www/cacti/rra。合并图像背后的想法是更改这些RRD文件,以便将旧RRD文件中的值附加到新RRD文件中。场景客户的服务已经在eth0上运行了一年多。由于硬件损坏,客户端迁移到另一台服务器的eth1接口。我们想展示新接口的带宽,同时保留一年多的历史数据。客户希望只显示在一个图表中。确定图形的RRD文件图形合并的第一步是确定与图形关联的RRD文件。我们可以通过在调试模式下打开图形来检查文件。为此,在Cacti的菜单中:Console>ManageGraphs>SelectGraph>TurnonGraphDebugMode。旧图:新图:从示例输出(基于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系统上,运行以下命令:#chownwww-data:www-datarrdsplice.php并更新rrdsplice.php。找到以下行:chown($finrrd,"apache");将其替换为以下语句:chown($finrrd,"www-data");在CentOS或RHEL系统中,运行以下命令:#chownapache:apacherrdsplice.php合并两张图片不带任何参数运行脚本,可以得到脚本的使用语法。#cd/path/to/rrdsplice.php#p??hprrdsplice.php用法:rrdsplice.php--oldrrd=file--newrrd=file--finrrd=file现在我们准备合并两个RRD文件。只需指定旧RRD文件和新RRD文件的名称。我们将把合并后的结果重写到一个新的RRD文件中。#phprrdsplice.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图像合并为一个图像。当服务迁移到另一个设备/接口并且我们只想处理一个图像而不是两个时,这个小技巧很有用。这个脚本非常方便,因为无论源设备是否相同,如Cisco1800路由器和Cisco2960交换机,它都可以合并图片。希望这些可以帮助到你。