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 系统中，运行下面的命令：# chown www-data:www-data rrdsplice.php 并更新 rrdsplice.php。查找下面的行：chown($finrrd, "apache"); 用下面的语句替换：chown($finrrd, "www-data"); 在 CentOS 或 RHEL 系统中，运行下面的命令即可：# chown apache:apache rrdsplice.php 合并两幅图通过不带任何参数运行该脚本可以获得脚本的使用语法。# cd /path/to/rrdsplice.php # php rrdsplice.php USAGE: rrdsplice.php --oldrrd=file --newrrd=file --finrrd=file 现在我们准备好合并两个 RRD 文件了。只需要指定旧 RRD 文件和新 RRD 文件的名称。我们会将合并后的结果重写到新 RRD 文件中。# 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 交换机。希望这些能对你有所帮助。via: http://xmodulo.com/combine-two-graphs-cacti.html作者：Sarmed Rahman 译者：ictlyh 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
SNMP（简单网络管理协议）用于收集设备内部发生的数据，如负载、磁盘状态、带宽之类。像Cacti这样的网络监控工具用这些数据来生成图标以达到监控的目的。在一个典型的Cacti和SNMP部署中，会有一台或多台启用了SNMP的设备，以及一台独立的用来从那些设备收集SNMP回馈的监控服务器。请记住，所有需要监控的设备必须启用SNMP。在本教程中，出于演示目的，我们将在同一台Linux服务器上配置Cacti和SNMP。在Debian或Ubuntu上配置SNMP要在基于Debian的系统上安装SNMP代理（snmpd），请运行以下命令：root@server:~# apt-get install snmpd 然后，如下编辑配置文件。root@server:~# vim /etc/snmp/snmpd.conf # 使snmpd 监听再所有接口上 agentAddress udp:161 # 定义一个只读的 community 'myCommunity' 和源网络 rocommunity myCommunity 172.17.1.0/24 sysLocation Earth sysContact email@domain.tld 在编辑完配置文件后，重启snmpd。root@server:~# service snmpd restart 在CentOS或RHEL上配置SNMP要安装SNMP工具和库，请运行以下命令。root@server:~# sudo yum install net-snmp 然后，如下编辑SNMP配置文件。root@server:~# vim /etc/snmp/snmpd.conf # 定义一个使用 community 'myCommunity' 和源网络 172.17.1.0/24 的用户 'myUser' com2sec myUser 172.17.1.0/24 myCommunity # 将 myUser 加到 'myGroup' 组，定义组权限 group myGroup v1 myUser group myGroup v2c myUser view all included .1 access myGroup "" any noauth exact all all none root@server:~# service snmpd restart root@server:~# chkconfig snmpd on 重启snmpd服务，然后添加到启动服务列表。测试SNMPSNMP可以通过运行snmpwalk命令进行测试。如果SNMP已经配置成功，该命令会生成大量输出。root@server:~# snmpwalk -c myCommunity 172.17.1.44 -v1 iso.3.6.1.2.1.1.1.0 = STRING: "Linux mrtg 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 x86_64" iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10 iso.3.6.1.2.1.1.3.0 = Timeticks: (2097) 0:00:20.97 ~~ 输出截断 ~~ iso.3.6.1.2.1.92.1.1.2.0 = Gauge32: 1440 iso.3.6.1.2.1.92.1.2.1.0 = Counter32: 1 iso.3.6.1.2.1.92.1.2.2.0 = Counter32: 0 iso.3.6.1.2.1.92.1.3.1.1.2.7.100.101.102.97.117.108.116.1 = Timeticks: (1) 0:00:00.01 iso.3.6.1.2.1.92.1.3.1.1.3.7.100.101.102.97.117.108.116.1 = Hex-STRING: 07 DD 0B 12 00 39 27 00 2B 06 00 配置带有SNMP的Cacti在本教程中，我们将在同一台Linux服务器上设置Cacti和SNMP。所以，到刚刚配置SNMP的Linux服务器上去安装Cacti吧。安装完后，Cacti网页界面可以通过“http://172.17.1.44/cacti ”来访问，当然，在你的环境中，请将IP地址换成你的服务器的地址。安装过程中Cacti的路径一般都是正确的，但是如有必要，请再次检查以下。在首次安装过程中，Cacti默认的用户名和密码是“admin”和“admin”。在首次登录后会强制你修改密码。添加设备到Cacti并管理Cacti将根据先前配置的SNMP字符串注册设备。在本教程中，我们将只添加启用了SNMP的本地服务器。要添加设备，我们必须以管理员登录，然后转到Cacti管理员面板中的控制台。点击 控制台 > 设备。那里可能已经有一个名为‘localhost’的设备。我们不需要它，因为我们要创建全新的图表。我们可以将该设备从列表中删除，使用“添加”按钮来添加新设备。接下来，我们设置设备参数。现在设备已经添加，我们来指定想要创建的图表模板。你可以在该页面的最后部分中找到这块内容。然后，我们继续来创建图表。这里，我们创建用于平均负载、RAM和硬盘、处理器的图表。接口的图表和64位计数器默认情况下，Cacti在SNMP查询中使用32位计数器。32位计数器对于大多数带宽图表而言已经足够了，但是对于超过100Mbps的带宽，它就无能为力了。如果已经知道带宽会超过100Mbps，建议你使用64位计数器。使用64位计数器一点也不麻烦。注意： Cacti会花费大约15分钟来产生新图表，除了耐心等待，你别无选择。创建图表树这些截图展示了如何创建图表树，以及如何添加图表到这些树中。我们可以验证图表树中的图表。用户管理最后，我们创建一个只具有查看我们刚创建的图表权限的用户。Cacti内建了用户管理系统，而且是高度可定制的。在完成这些步骤后，我们可以使用‘user1’来登录进去，并验证只有该用户可以查看该图表。至此，我们在网络监控系统中部署了一台Cacti服务器。Cacti服务器比较稳定，可以处理大量图表而不会出问题。希望本文对你有所帮助。via: http://xmodulo.com/monitor-linux-servers-snmp-cacti.html作者：Sarmed Rahman 译者：GOLinux 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
Cacti 是一个完善的网络监控的图形化解决方案，它被设计用来发挥 RRDTool （一个 Linux 数据存储和绘图工具）的数据存储和绘图的强大功能。Cacti 提供一个快速的轮询器，高级的绘图模版，多种数据获取方法和用户管理功能，并且可以开箱即用。所有的这些都被打包进一个直观，易用的界面，可用于监控简单的 LAN 网络，乃至包含成百上千设备的复杂网络。功能绘图没有数量限制的监控图条目（graph item），每个图形可以视情况使用 Cacti 中的 CDEFs （Calculation Define，可以对图形输出结果进行计算）或者数据源。自动将 GPRINT 条目分组至 AREA，STACK 和 LINE[1-3] 中，来对监控图条目进行快速重排序。自动填充功能支持整齐排列图形内的说明项。可以使用 RRDTool 中内置的 CDEF 数学函数对图形数据进行处理。这些 CDEF 函数可以定义在 Cacti 中，并且每一个图形都可以使用它们。支持所有的 RRDTool 图形类型，包括 AREA，STACK，LINE[1-3]，GPRINT，COMMENT，VRULE 和 HRULE。数据源数据源可以使用 RRDTool 的 "create" 和 "update" 功能创建。每一个数据源可以用来收集本地或者远程的数据，并将数据输出成图形。支持包含多个数据源的 RRD 文件，并可以使用存储在本地文件系统中任何位置的 RRD 文件。可以自定义轮询归档（RRA）设置，用户可以在存储数据时使用非标准的时间间隔（标准时间间隔是5分钟，30分钟，2小时和 1天）。数据收集Cacti 包含一个 "data input" 机制，可以让用户定义自定义的脚本用来收集数据。每个脚本可以包含调用参数，每次调用此脚本的创建数据源时必须输入相应的调用参数（如 IP 地址）。支持 SNMP 功能，可以使用 php-snmp，ucd-snmp 或者 net-snmp。可以基于索引来使用 SNMP 或者脚本收集数据。例如，可以列出一个服务器上所有网卡接口或者已挂载分区的索引列表。其集成的绘图模版可以用来为主机一键创建图形。提供了一个基于 PHP 的轮询器执行脚本，可以收集 SNMP数据并更新数据至 RRD 文件中。模版绘图模版可以将相同图形分组到为一类。图形中的每一个条目都可以使用模版的默认值或者自定义。数据源模版可以通过将相同数据源类型分组为一类。数据源中每一个条目都可以使用模版的默认值或者自定义。主机模版是一组图形和数据源模版，可以用来定义某一类型的主机。创建主机时，它会自动使用相应模版的属性。图形展示图形树模式允许用户创建「图形层次结构」并将图形放至树中。这种方法可以方便的管理大量图形。列表模式将所有图形的链接在一个大列表中展示出来，链接指向用户创建的图形。预览模式将所有图形在一个大列表中展示出来。这有点类似于 RRDTool/MRTG 的默认视图。用户管理用户管理功能允许管理员创建用户并分配给用户访问 Cacti 接口的不同级别的权限。权限可以为每个用户指定其对每个图形的权限，这适用于主机租用的场景。每个用户可以保存他自己的图形显示模式。安装系统准备在安装 cacti 之前，确保你已经安装了 Ubuntu 14.10 LAMP server。在 Ubuntu 14.10 Server 上安装 Cacti打开终端，运行下面的命令sudo apt-get install cacti-spine 上面的命令开始 Cacti 的安装，你会看到下图中 PHP 路径的更改，选择 ok 按回车选择你想使用的 Web 服务器 (我使用的是 apache2)Cacti 数据库配置，选 yes输入数据库管理员账户密码输入 Cacti 访问数据库的密码确认密码现在 Cacti 已经安装了，我们可以开始配置它了。Cacti 配置在浏览器中访问 http://你的服务器IP/cacti/install/ 来进行初始化设置，点击 next 下一步选择 New install，点击 next 下一步下一个界面中，你需要确保所有的路径都是正确的，点击 finish 完成现在以 admin/admin 登录 Cacti，修改管理员的默认密码登录 Cacti 之后你会看到类似于下面这样的界面via: http://www.ubuntugeek.com/how-to-install-cacti-monitoring-tool-on-ubuntu-14-10-server.html作者：ruchi 译者：Liao 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
想要更清晰的了解你的网络吗？没有比这几个免费的工具更好用的了。网络和系统监控是一个很宽的范畴。有监控服务器、网络设备、应用正常工作的方案，也有跟踪这些系统和设备性能，提供趋势性能分析的解决方案。有些工具像个闹钟一样，当发现问题的时候就会报警，而另外的一些工具甚至可以在警报响起的时候触发一些动作。这里，收集了一些开源的工具，旨在解决上述的一些甚至大部分问题。CactiCacti是一个性能广泛的图表和趋势分析工具，可以用来跟踪并几乎可以绘制出任何可监测指标，描绘出图表。从硬盘的利用率到风扇的转速，在一个电脑管理系统中，只要是可以被监测的指标，Cacti都可以监测，并快速的转换成可视化的图表。NagiosNagios是一个经典的老牌系统和网络监测工具。运行速度快，可靠，需要针对应用定制。Nagios对于初学者是一个挑战。但是它的极其复杂的配置正好也反应出它的强大，因为它几乎可以适用于任何监控任务。要说缺点的话就是不怎么耐看，但是其强劲的功能和可靠性弥补了这个缺点。IcingaIcinga 是一个正在重建的Nagios的分支，它提供了一个全面的监控和警报的框架，致力于设计一个像Nagios一样的开放和可扩展性的平台。但是和Nagios拥有不一样的Web界面。Icinga 1 和 Nagios非常的相近，不过Icinga 2就重写了。两个版本都能很好的兼容，而且，Nagios用户可以很轻松的转到Icinga 1平台。NeDiNeDi可能不如其他的工具一样闻名全世界，但它确是一个跟踪网络接入的一个强大的解决方案。它可以很流畅的运行网络基础设施和设备目录，保持对任何事件的跟踪。并且可以提供任意设备的当前地点，也包括历史地点。NeDi可以被用于定位被偷的，或者是丢失掉的设备，只要设备出现在网络上。它甚至可以在地图上显示所有已发现的节点。并且很清晰的告诉人们网络是怎么互联的到物理设备端口的。ObserviumObservium 综合了系统和网路监控，在性能趋势监测上有很好的表现，它支持静态和动态发现来确认服务器和网络设备，利用多种监测方法，可以监测任何可用的指标。Web界面非常的整洁，易用。就如我们看到的，Observium也可以在地图上显示任何被监测节点的实际地点。需要注意的是面板上关于活跃设备和警报的计数。ZabbixZabbix 利用一系列的工具监测服务器和网络。Zabbix的监控代理支持大多数的操作系统，你可以被动的或者是使用外部检查，包括SNMP来监控主机和网络设备。你也会发现很多提醒和通知设施，和一个非常人性化的Web界面，适用于不同的面板，此外，Zabbix还拥有一些特殊的管理工具来监测Web应用和虚拟化的管理程序。Zabbix 还可以提供详细的互联图，以便于我们了解某些对象是怎么连接的。这些图是可以定制的，并且，图也可以以被监测的服务器和主机的分组形式被创建。NtopNtop是一个数据包嗅探工具。有一个整洁的Web界面，用来显示被监测网络的实时数据。即时的网络数据通过一个高级的绘图工具可以可视化。主机数据流和与之对应的主机通信信息可以被实时的进行可视化显示。via: http://www.networkworld.com/article/2686794/asset-management/164219-7-killer-open-source-monitoring-tools.html作者：Paul Venezia 译者：barney-ro 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出