作为一名 Linux SA,日常最重要的就是保证网站正常稳定的运行,我们需要实时监控网站、服务器的运行状态,这时需要借助开源软件(cacti、nagios、zabbix 等)监控来实现。Cacti 是用 php 语言实现的一个软件,它的主要功能是用 snmp 服务获取数据,然后用 rrdtool 储存和更新数据,当用户需要查看数据的时候用 rrdtool 生成图表呈现给用户。因此,snmp 和 rrdtool 是 cacti 的关键。Snmp 关系着数据的收集,rrdtool 关系着数据存储和图表的生成。snmp 抓到数据不是存储在 mysql 中,而是存在 rrdtool 生成的 rrd 文件中(在 cacti 根目录的 rra 文件夹下,一般以 rra 为后缀名称)。简单原理图如下:
安装步骤:
安装LAMP环境:
2.安装rrdtool采集工具
3.安装SNMP服务
4.安装cacti主程序
下载cacti源码包http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz
5.创建cacti数据库
把cacti数据导入cacti数据库
6.修改cacti全局配置文件
7.添加Rrdtool抓图任务计划
http://192.168.1.3/cacti/ (192.168.1.3是你服务所在的ip)
第一次登录需要修改密码,这里都改为cacti
点击device可以添加设备,默认显示127.0.0.1这台设备,右上角的add可以添加新的设备。
点击名称可以显示详细的信息。如图
注,下面我们为cacti主机增加图形模板。
点击右上脚的“Create Graphs for this Host”按钮。咱们选中我们要监控的选项,点击 ”Create“即可。图形模板颜色选项,我们用默认即可。点击”Create“。好了,到这里我们的cacti主机就增加完成了。为了我们查看图形方便,我们将cacti主机加入”Graph Trees“中查看。点击 ”Graph Trees“ –> 点击”Default Tree“(当然你也可以增加新的图形树)。进入默认的图形树,我们选择 ”Add“ 按钮,在 ”Tree Item Type“ 中,我们选择 ”Host“,其它默认即可。点击 ”Create“。到这里我们的图形树就增加完成了,我们点击 ”Save“ 即可。下面我们查看一下 ”graphs“ 页面,大家可以看到显示的是 Default Tree 是里有台 cacti主机。图形要过一会才能出现,大家耐心等一下默认5分钟收集一下数据!
详情见博客:http://www.tuicool.com/articles/BfamyiR
如果出现SNMP error 的情况,1 .snmp 服务没启动 -> service snmpd start 2. 执行下面命令确认被监控机器的snmp能否返回数据
snmpwalk -v 2c -c public 192.168.200.221 如果出现下面字样则表示被监控机器的snmp服务没有给监控机器授权
Timeout: No Response from 192.168.200.221或者
SNMPv2-SMI::mib-2 = No more variables left in this MIB View (It is past the end of the MIB tree)
打开被监控机器的/etc/snmp/snmp.conf文件,更改如下配置:
1. 查找以下字段
<p># sec.name source community </p><p>com2sec notConfigUser default public </p>
将"comunity"字段改为你要设置的密码.比如"public".
将“default”改为你想哪台机器可以看到你的snmp信息,如192.168.2.105
2. 查找以下字段:
<p>#### </p><p># Finally, grant the group read-only access to the systemview view. </p><p># group context sec.model sec.level prefix read write notif </p><p>access notConfigGroup "" any noauth exact systemview none none </p>
将"read"字段值改为all.
<p>access notConfigGroup "" any noauth exact all none none </p>
3. 查找以下字段:
<p>## incl/excl subtree mask </p><p>#view all included .1 80 </p>
将该行前面的"#"去掉.
保存关闭.
4. 运行/etc/init.d/snmpd start命令运行snmpd.或 service snmpd start
再用snmpwalk执行,收到返回数据则表明snmp已经ok了