共计 6600 个字符,预计需要花费 17 分钟才能阅读完成。
I. 总览
Cacti 和 Nagios 的监控体系可以说是使用广泛而且支持丰富的国内外的运维人员都需要掌握的一套监控体系,这套体系的好处在于使用 Cacti 的强大画图和自定义画图能力,以及 Nagios 的可控报警。但是网上的大部分内容都是如何安装,在安装成功如何使用的方面介绍的很少,而真正开始用之后,为了工作需要就需要不断地去 Cacti 官网查看使用文档,或者论坛去翻别人的帖子,十分麻烦。于是我决定写一篇使用方面的手册,以让大家真正会用这套系统。
II.Cacti 的使用
Cacti 的常用服务器的画图大部分都是使用模板的形式做的,而 Cacti 安装好之后本身自带了一部分模板,这些模板虽然可用,但是支持的项目太少,于是我们要寻求更多的模板以及更优化的内容。
Cacti 的官方的模板库:http://docs.cacti.net/templates
1:cacti 模板的一般加载方法:
一个 Cacti 的模板一般有两部分组成。一部分是 xml 模板文件,另一部分是 xml 的数据收集文件,虽然这两种文件都是 xml 格式的,但是你可以很显而易见的就能分出它们的不同。因为它们的文件大小一点都不相似。
举个简单的例子:
这个是一个 windows 的监控模板,我们可以简单的根据文件的大小来看。
* 大小大于 10KB 的,那就是 xml 模板文件。
* 大小小于 10KB 的,那就是 xml 数据收集文件。
Xml 模板文件是要在 cacti 的 Web 页面的 Console 选项卡内 Import Templates 项进行添加:
而 xml 数据收集文件,则是要放在 Linux 上 Cacti 的安装目录的 cacti/resource/snmp_queries 中:
只要将两种类型的 xml 正确的导入 / 放入到应有的位置,那么模板就添加成功了。
2:如何在 Cacti 上添加一个新主机并监控相关的内容:(以添加 Linux 主机为例)
1. 创建画图
a. 在 Cacti 的 Web 页面 Console->Import Templates 导入响应的 xml 模板文件。
b. 在 Linux 上 cacti/resource/snmp_queries 中放入模板相关的 xml 数据收集文件。并确保属主和属组均为 cacti。
c. 点击 Console->Devices,打开设备管理页面。
d. 点击右上角的 add,添加一个新的机器
e. 当主机的信息填好之后,点击 Create
f. 此时你的页面左上角应该显示:Save Successful,并且已经显示出了主机信息和 SNMP 信息,如果 SNMP 信息显示 SNMP error,请查看最后的问题综述。
g. 这时我们就可以添加相应的监控项了,在页面最下方的 Associated Graph Templates 中添加图形模板,在 Associated Data Queries 中添加数据模板。
h. 添加好相应的模板之后点击 Save。此时左上角会出现 Save Successful.
i. 点击右上角的 Create Graphs for this Host,来为刚才通过模板所获得到的数据进行画图。
j. 选中需要画图的项,其中依然分为两部分:
通过 Graph Templates 中的内容都需要选中,而 Data Query 获取的内容比较详细,所以可以按需选择。
k. 选择好需要画图的项目后,点击右下角的 Create,左上角会出现被创建出来的画图项。
2. 在 Graphs 界面显示新添加主机。
a. 在 Cacti Web 界面 Graph Trees 中,选择相应的列 (或者系统默认的 Default Tree)。
b. 进去 Tree 之后,点击右上角的 Add,添加一个新的显示项。
c. 在 Tree Item Type 中选择 Host,然后在下面的 Host 中选择我们刚才创建的主机。点击 Create。
d. 此时,再进入 Graphs 界面,就可以看到在 Default Tree 下加入了我们新创建的主机。
III.Cacti 的常用模板
1.Windows 常用模板
Windows 一般所需要监控的基本内容有:
1. CPU Use
2. Memory Use
3. Disk Size
4. Interface Traffic
为了解决基本的监控项,我们需要以下模板。
A. Cacti_SNMP_Informant_Standard_Metrics_v12.zip
B. Cacti_host_template_ucdnet_snmp_host.gz
我们还需要在 Windows 主机上安装一个软件,以确保 SNMP 能发送更多的信息为我们提供数据采集:informant-std-16.exe
使用 A 模板来监控 Windows 的 CPU 项目
使用 B 模板来监控网络,硬盘,内存。
最终,添加完相关模板,在创建 Windows 主机之后,在 Devices->Your Windows host -> 页面下方正确添加的各种 Templates 如下:
由于 Windows 模板下都是 Data Queries。所以请确保添加完相关的 Data Queries 之后,所有项目的 Status 下应该都是 Success 以及是能看到很多 Items 以及 Rows 的。这说明数据正确采集,如果没有,请移步最后问题综述的问题 4。
最后添加完并且画图的监控结果:
2.Linux 常用模板
Linux 与 Windows 监控的内容基本相同:
1. CPU Use
2. Load Average
3. Memory Usage
4. Swap Usage
5. Disk I/O
6. Disk Size
7. Interface Traffic
为了解决 Linux 监控内容,我们使用以下模板:
A. Cacti_host_template_ucdnet_snmp_host.gz
B. Cacti_graph_template_ucdnet_-_memory/swap_usage_linux.xml
C. Data_query_snmp_-_get_disk_io
最终,添加完相关模板,在创建 Linux 主机之后,在 Devices->Your Linux host -> 页面下方正确添加的各种 Templates 如下:
在所有的 Linux 监控添加后的内容如下:
3.Switch && Router 的相关模板
由于市面上 Switch 和 Router 的型号众多,而不同的型号可能就需要不同的模板,不能像 Windows 和 Linux 一样进行统一,所以当你需要监控 Switch 和 Router 的时候,请 Google 响应的型号的模板,或者在 Cacti 官方的模板库中进行查找。查找之后添加的过程都大同小异,这里不再赘述。
IV:自定义脚本的添加以及监控
很多时候,我们需要为我们独有的环境去指定监控内容,那么如何制定呢?就可以通过自己写脚本的方式进行收集数据。这里我用一个监控 QQ 在线人数的例子来举例。
准备工作:
1. 我们需要一个脚本,脚本的语言随意,只要在 Linux 的机器上能够使用运行并且有返回内容。比如我们即将使用的脚本:
#!/bin/bash
echo“QQ_Now:`curl im.qq.com/online.shtml | grep qqdata | cut -d”:”-f 3 | cut -d”>”-f 2 | cut -d”
此脚本运行之后输出内容为:
这个里面只有最后一行是有用的,其他的为 curl 的抓取信息。
2. 我们的脚本要放在一个确保 Cacti 用户可访问的位置。常用的地方是:cacti/scripts/* 中,那么当脚本准备停当之后,就开始我们的监控工作。
1. 创建数据输入方式
1. 在 Console–> 点击 Data Input Methods
2. 点击右上角的 Add,添加一个新的数据获取方式
3. 点击 Create,出现新的项目
4. 新的项目包括 Input Fields 和 Output Fields,即输入内容和输出内容,输入内容其实就是向脚本传递函数,我们这个脚本不需要传递什么参数进去,于是没有,只有 Output Fields。
5. 在 Output Fields 上点击 Add,添加新的输出内容。
6. 在 Field[Output] 中输入我们脚本的输出项:这里我填写“QQ_Now”
7. 在 Friendly Name 中输入解释输出项的内容,内容随意。
8. 勾选 Update RRD File 后,点击 Create
9. 然后查看我们整个的数据获取方式信息,点击 Save,左上角应出现“Save Successful”
2. 创建数据源
1. 在 Console-> 点击 Data Sources,进入数据源界面
2. 点击右上角的 Add,添加新的数据源
3. 确保 Data Template 和 Host 均为 None。直接点击 Create
4. 在新出现的信息面板中输入相关内容
5. 点击 Create,此时左上角会出现 Save Successful
6. 注意系统自动给生成的 RRD 文件路径,确保里面不会出现连续两个反斜线的路径信息。如果出现,请手动修改为一个反斜线。如:
/1194.rrd
7. 点击 Save,看到 Save Successful,则数据源创建成功。
3. 创建图像
1. 选择 Console–> Graph Management,进入图像管理
2. 点击右上角的 Add,添加一个新的图像
3. 选择 Graph Template 以及 Host 均为 None,然后点击 Create
4. Title 中输入图像的名字,其他保持不变。并点击 Create
5. 然后你会看到多出的 Graph Items,以及中间有一个看不到图的红叉,因为这个图我们还没有定义。
6. 在 Graph Items 中点击 Add,添加画图规则。
7. 添加完画图内容之后,点击 Create/Save,返回之前的页面,接下来还要添加数据的展示内容。
8. 再次点击 Graph Items 中的 Add,这次添加的是数据的展示,展示当前值。
9. 设置好后点击 Create 创建这个项目,然后按照这个方法,分别创建最大值,最小值,平均值的展示内容。
10. 添加好后内容如图。
4. 将自定义好的图形,加入到 Graphs 面板
1. 在 Cacti Web 界面 Graph Trees 中,选择相应的列 (或者系统默认的 Default Tree)。
2. 进去 Tree 之后,点击右上角的 Add,添加一个新的显示项。
3. 在 Tree Item Type 中选择 Graph,然后在下面的 Graph 中选择我们刚才创建的图像。点击 Create。
4. 此时,再进入 Graphs 界面,就可以看到在 Default Tree 下已经出现了我们新创建的图��。
V.Cacti 问题 Q & A
1. 填完 Drivers 信息之后显示红色的 SNMP error
这是由于被监控机的 SNMP 设置问题,没有允许我们监控机进行监控,或者 Community 不匹配导致的。
Linux 可以在 /etc/snmp/snmpd.conf 中修改 / 增加发送 snmp 的机器,以及 community。
Windows 可以在 Snmp 服务中增加允许发送 snmp 的机器,以及 community。
2. 添加完图之后,等待了无数时间图依然无法绘制,反馈给我们一个红色的 X。
首先,如果你是用添加的模板创建的图,那么显示不了的话,很有可能是由于模板太老,或者模板不正确导致的。可以考虑更新作者的最新模板以重新画图。当然,如果图像的确画不出来,那么我们可以打开画图的 Debug 日志的方式进行排错。
进入 Graph Management,在 Host 中选择我们画不出图的那个 Host,然后点 Go,这样就在下面列出了所有在这个 Host 中的图像列表,点击那个无法画图的列表。这就进入了我们选定主机的相关图像的设置界面,我们应该可以看到这个界面下方依然有一个红 X,证明我们无法画图,所以点击右上角的“Turn on Graph Debug Mode.”来打开 Debug 日志,这时候,就可以看到页面下方多出了”RRD Tool Command:”的列表,里面详细的描述了 RRD 工具是如何为我们画图的,这都不是关键,关键是最后的 RRD Tool Says: 比如
这里面是 RRD Tool 告诉的我们为什么它无法画图,我们可以看到我当前例子的没有画图的原因是 316.rrd 这个文件不存在,说明在创建的时候 rrd 没有正确的创建出这个文件,这就有可能是所用的模板有问题了。
在这里,这是一个很好的查看为什么没有画出图的地方,没有画出的图 RRD Tool 会一一的告诉我们,我们只需要根据它说的来修正,直到 RRD Tool Says: OK
3. 图什么的都有,但是数据都是 N /A,这是要闹哪样?
这个的解决办法其实跟无法画图的解决一样,就是我们去看数据的 Debug 日志。
进入 Data Sources,在 Host 中选择没有数据的 Host,然后在下面的列表中选择没有数据的那个图。进入数据设置界面,然后点击右上角的“Turn on Data Source Debug mode”, 然后去分析它的报错。
4. 在给主机添加 Data Query 的监控项的时候发现里面没有获取到数据。
这时候,如果它获取不到数据,我们就无法给它画图。因为在给它创建的图的界面上显示没有内容。
这时候可以直接点击上图中的 Debugging 下的相关内容,直接打开 Debug 查看状态。
这时就可以看到反馈出得信息,比如上图,发现 SNMP 无法获取数据。当然也有其他的,比如 MIB 文件不存在。只要你仔细看它反馈出来的问题,知道问题的根源,就一定能解决。当解决了数据获取之后,可以直接点击右边的绿色的小圆圈,就刷新了数据的获取状态。
5. 关于 cacti 下文件的权限问题。
Cacti 目录中的内容权限并不统一,而且权限要求的也很少,并不像其他的比如 Nagios 要求的那么多。我们可以简单的保持整个 Cacti 目录的属主和属组都是 Cacti 即可。但是有两个特殊的例外:
第一个是 cacti/rra 目录,整个目录里的内容是 RRD 的画图文件自动在里面生成的。而生成之后里面文件的属主和属组到底是谁,取决最终是由哪个用户来创建的,而这个就是在 Cacti 的那个 crontab 里控制,如果我们使用的是 root 用户添加的 crontab,那么这个 rra 目录中的内容属主和属组都是 root。同理,如果我们的 crontab 是在 cacti 中设置的,那么 rra 目录中的内容属主和属组都是 cacti。
第二个目录是 cacti/scripts 目录, 这里面存的大部分都是我们自定义的脚本,一定要确保里面的脚本是 cacti 用户可执行的。最好的检测方法就是 su 到 cacti 用户中,进入这个目录,手动运行一下脚本,查看脚本是否成功执行。
————————————– 分割线 ————————————–
RHEL6.4 中使用 Cacti+Spine 监控主机实现发送邮件报警 http://www.linuxidc.com/Linux/2013-11/92795.htm
RHEL6.4 中使用 Cacti+Spine 监控远程主机 http://www.linuxidc.com/Linux/2013-11/92796.htm
CentOS 5.5 完整安装 Cacti+Spine http://www.linuxidc.com/Linux/2011-12/49701.htm
CentOS 6 下 Cacti 搭建文档 http://www.linuxidc.com/Linux/2013-06/86595.htm
RHEL5.9 下 Cacti 监控部署详解 http://www.linuxidc.com/Linux/2013-06/85427.htm
CentOS 6.3 下 Cacti 安装详解 http://www.linuxidc.com/Linux/2013-05/84279.htm
CentOS Linux 下快速安装配置 Cacti 中文版 http://www.linuxidc.com/Linux/2013-03/81627.htm
————————————– 分割线 ————————————–
Cacti 的详细介绍 :请点这里
Cacti 的下载地址 :请点这里
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-08/121999.htm