使用cacti监控一切


一、初遇可爱的仙人掌:cacti

刚接触运维的时候,经常出现这样的问题:每天登录到服务器上去查看健康状况:cpu、内存、磁盘、网卡使用率;apache(nginx)、mysql状态;过程当然繁琐枯燥,起初只有一两台倒也没什么,随着服务器数量的增加也业务范围的增长,这样的工作方法不仅耗费时间,而且难以“预测”和“捕捉”故障点。例如有用户打电话网站访问缓慢,急忙登到服务器,时常错过故障时间,“后知后觉”。

经高人指点,在其中一台服务器上安装了cacti监控系统,通过常见的snmp协议来监控网络流量、cpu、内存、负载,绘制出“历史曲线”,在时序上提供宏观判定。实乃一把利器。安装方法网上有很多,只要google搜索 cacti 安装,就有很多写的不错的,研究研究就会了。

中南民族大学监控 國立台北科技大學

二、举一反三

后来在网上看到,通过增加图像模板还可以监控 web服务器、数据库服务器等等,网上类似的模板很多。http://blog.sina.com.cn/s/blog_4e424e2101000b7j.html

终极实现是自定义模板,也很简单,用来实现各种需求。例如 “网站黄金会员和白银会员”所占比率历史图,队列服务器健康状态,只有想不到的,没有做不到的。采集、绘图自动完成,几乎是实时的,在网络上可以不再依赖人工本机excel的曲线图了,呵呵~

自定义模板的文章倒是很少,我也是试了很多次才成功。就是参照这个教程完成的:http://www.jiunile.com/cacti%E5%A6%82%E4%BD%95%E8%87%AA%E5%AE%9A%E4%B9%89%E7%9B%91%E6%8E%A7%E6%A8%A1%E6%9D%BF-%E9%AB%98%E7%BA%A7%E7%AF%87.html

三、我心飞扬

1、编写采集程序

可以是shell、php、perl,功能就是输出相应格式的数据,输出格式如下:

1
echo "key1:value1 key2:value2 key3:value3" //keyn:valuen

2、建立数据源

可以理解为数据(库), Collection Methods -> Data Input Methods -> Add

填写相应的名字name、类型选 script/command,填入上面脚本的路径,可以使用内部变量 <path_php_binary>    <path_cacti>等能在config.php或 setting->path 里看到的路径;

3、添加好需要捕获的字段

key1、key2、key3、keyn

4、设置数据模板

可以理解为程序逻辑,衔接数据和显示 Templates -> Data Templates -> Add

5、设置图形模板

图形模板的是用来讲数据以指定的形式显示出来,有点像mvc的表现层

Templates -> Graph Templates -> Add

6、创建图形

现在可以创建图形,将其添加到树里了。可以理解为“实例化对象”。

Create ->  New Graphs

7、排查错误

至此自定义脚本模板完成,如果没有图像,可以通过:

(1) Management -> Data Sources -> 选中你的模板 -> Turn Off Data Source Debug Mode ,将显示出来的数据通过shell在服务器上跑一编,来填充数据。

(2)Management -> Graph Management -> 选中你的模板 -> Turn On Graph Debug Mode 观察绘图系统是否能解析数据格式。

如果有图像没数据,也就是值为 nan,可以查看cacti的采集日志是否有报错,

Utilities -> System Utilities -> View Cacti Log File

四、复活节的彩蛋

通过thold插件来做阀值预警(emain、声音),达到规定阀值时给我的139信箱发email,移动会以短信方式通知我到我手机,蛮有有意思。