一监控分类
在Linux系统上的系统监测所采用的方式基本上有两种,
第一种,通过SNMP协议结合数据采集软件来实现:
这种方法所涉及的架构一般包括两部分,其中一部分是被监测服务器,另外一部分则是监控端。至于实现方法具体来说就是在Linux服务器上启动SNMP简单网络管理协议的进程snpmd来动态提供服务器在软件甚至硬件各方面的运行参数,这样服务器就成为了一个被监测的节点。然后在其他的监控服务器上的客户端软件应该具备两个功能:采集SNMP数据以及汇总统计信息。在绝大多数情况下,监控服务器上的监测软件都会基于Web页面方式提供系统运行状态图,而且涵盖了各种运行指标。同时新的状态信息能够动态更新到Web页面。这种类型的监测所获得的数据格式标准而且全面,配置简单,所以从综合监测的角度看是一个不错的方案。
第二种,通过编写脚本调用系统状态监测的命令,并结合数据采集软件来实现:
在某些情况下,SNMP协议的配置会相对比较麻烦,而且获取SNMP信息往往需要考虑选择不同的监测软件。从另外一个角度讲,其实Linux操作系统本身就提供了很多非常好用的状态获取工具,如sar(可实现多个指标的监测),iostat(专用于I/O使用率监测),vmstat(专用于cpu和内存使用情况监测)以及free命令等工具。这些工具都可以通过结合系统任务计划以及自编脚本进行周期性调用,这就给监测提供了相当的便利。因为可以将这些命令嵌入到脚本中以周期性生成系统监测软件所需要的数据,最终一样可以通过这些数据结合绘图软件绘制出直观的统计图。这种类型的监测所获得的信息更加灵活和精确,对于一些熟悉脚本编程的用户来说,使用起来更是得心应手。另外采用这种方式的情况下,利用命令监测可以无限制扩展,用户可以通过各种管道来获得和定制自己的监测脚本。
二。Cacti主要功能简介
Cacti是一个随着时间推移(时间序列数据)用图表显示系统和网络信息的网络监测工具,并提供一个全功能的Web界面,可以浏览和检查网络设备的实时性能。例如,可以配置Cacti来监控经过本地服务器上的网络端口、本地网络上的交换机和路由器端口的网络流量。Cacti图形提供网络各个部分的流量级别信息。例如,当网络速度很慢时,可以参考历史图表,查看是否发生了任何超出普通网络流量的事情,Cacti可以收集CPU利用率、磁盘空间使用率、Web服务器上的页面浏览量和本地网络上的几乎所有其它数据。
Cacti收集随着时间推移的基线(典型值)数据。可以使用这些信息来增加对系统和网络实时行为的洞察力,并帮助解决问题。这些信息甚至可以预测未来可能发生的事情(例如,当磁盘很可能被占满时)。当安装并配置Cacti时,它会定期轮询网络设备以获取所需数据,并把数据存储在RRD文件,用于RRDtool(轮循数据库工具)。Cacti Web界面允许浏览设备和图形列表,并可看到随着时间推移的设备的可视化表示。
Cacti是下一代监测工具的一部分。它是在从以往工具吸取教训的基础上构建的,如MRTG和Cricket工具。这些工具都具有以下功能:
1.定期轮询跟踪设备数据。收集这些数据最常用的工具是SNMP(简单网络管理协议; www.net- snmp.org)。
把数据存储在一个RRD文件。
2.具有Web界面,可以检查从存储数据生成的图表。这些图表通常显示每天、每周、每月和每年的信息。
3.Cacti的配置是通过其Web界面来实现的,而MRTG和Cricket的配置是通过编辑文本文件来实现。RRD文件和RRDtool是Cacti许多功能的关键。Cacti网站将Cacti描述为“完整的基于RRDtool的图形解决方案。”RRD文件存储有效的时间序列数据,通过使用聚合功能,更容易保存最近时间段的大量细节信息,但逐渐减少Cacti文件中时间较长的细节数据。RRDtool可以很容易地从RRD文件产生既简单又复杂的图形。
三、Cacti简介
1. cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。
2. Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量
3. snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(RoundRobinArchive),它能够存储的数据笔数在创建时就已经定义。
四、Cacti工作原理
1 Data Retrieval
Cacti首先要做的工作就是收集数据,cacti使用Poller(轮询器)收集数据。Poller是操作系统scheduler的扩展,如在类Unix系统中的crontab。现在的IT设施中会有许多不同的设备,如服务器、网络设备等,cacti主要使用SNMP协议来从远端的设备上收集数据,所有可以使用SNMP协议的设备都可以被cacti监控。
2 Data Storage
存储收集到的数据有许多方法,可以使用数据库、平面文件等,cacti使用的是RDDTool。RRD是Round Robin Database(环形数据库)的缩写,RRD用来存储和显示时间序列数据,如网络带宽、机房温度、服务器负载等,RRD使用非常紧凑的方式存储数据,数据不会随着时间的推移而增大,RRD还可以生成美观的图形。这些特性使得cacti没有存储需求。RRD也做一席位其他的工作,如RRD会将原始数据与已整合的数据进行合并,以使得历史数据的存储节省空间,RRD支持的整合功能包括:AVERAGE, MAXIMUM, MINIMUM和LAST。
3 Data Presentation
Cacti最大的一个特点是内置了RRDTool画图功能,将其与通用的web服务器相结合,可以实现在任意平台上使用浏览器就可以查看监控画面。
五。使用前准备
1. 配置SNMP
如果想监控本地系统上的数据源,首先在本地系统上安装和运行SNMP守护进程。
2. 设置LAMP
Cacti是一个LAMP(Linux、Apache、MySQL和PHP)应用程序,在配置Cacti之前必须安装和配置这些应用程序。本节说明如何在运行Cacti的系统上设置该软件。默认情况下,Cacti设置本地系统来运行Cacti,并作为数据源。
设置LAMP时使用名为mysql和cacti的MySQL数据库。安装MySQL时Fedora/RHEL设置mysql数据库。需要设置以下数据库用户。每个帐户都应该有密码:
为mysql数据库设置root用户。此用户必须被命名为root。MySQL安装脚本设置这个用户。
为mysql数据库设置cactiuser用户。可以更改此用户名,但Cacti安装时,设置Cacti使用cactiuser。
为cacti数据库设置Cacti管理用户。正如安装Cacti时的设置,此用户具有admin用户名和admin密码。可以设置另外的Cacti用户帐户。
1)事先安装软件包
安装以下软件包:
cacti(仅Fedora; 从fedoraproject.org/wiki/EPEL下载RHEL的Cacti)
mysql
mysql-server
php(和cacti一起安装)
httpd(Apache与cacti一起安装)
rrdtool(与cacti一起安装)
net-snmp(可选;只需要监视本地系统)
net-snmp-utils(可选)
2)防火墙设置
snmpd守护程序运行在由Cacti监控的系统上,使用UDP端口161。如果监控系统运行着防火墙或在防火墙后面,则必须打开此端口。使用system-config-firewall,选择“其它端口”选项卡,勾选User Defined复选框,并添加UDP端口161。如果想从没有运行Cacti的系统上的浏览器中使用Cacti,则需要在运行Cacti的系统上打开TCP端口80。
3)SELinux设置
当设置SELinux使用目标策略时,httpd(系统上运行Cacti)和snmpd(在被监测的系统上)都由SELinux保护。如果有必要,可以禁用此保护。
4)配置MySQL
安装MySQL,运行chkconfig,并启动mysqld守护进程。一定要通过使用mysql_secure_installation或mysqladmin为MySQL的root用户指定密码。
5)创建cacti数据库
下一步使用以下命令来创建cacti数据库,创建mysql数据库的cactiuser用户,授予该用户必要的权限,并给该用户分配密码。用你选择的密码替换以下例子中的cactipassword。尽管FLUSH PRIVILEGES语句不是必需的,但最好包含它。
# mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.10 MySQL Community Server (GPL)
...
mysql> CREATE DATABASE cacti;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL ON cacti.*
-> TO cactiuser@localhost
-> IDENTIFIED BY 'cactipassword';
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
6)设置和移植cacti数据库
使用下面的命令来设置和移植cacti数据库。当MySQL提示输入密码,提供MySQL的root用户密码(不是MySQL的cactiuser用户)。
# mysql -p cacti < /usr/share/doc/cacti*/cacti.sql
Enter password:
如果有SQL语法错误,上述命令会失败。要解决这个错误,编辑cacti.sql并删除出现的所有字符串TYPE=MyISAM(即用空字符串替代每个TYPE=MyISAM字符串:s/TYPE=MyISAM//)。
在安装时,/etc/cacti/db.php文件中的大多数信息都是正确的。编辑这个文件来更改赋予$database_password的值,从cactiuser更改为创建cacti数据库时(MySQL 的cactiuser用户的密码)为cactipassword使用的相同值。不要更改赋予$database_username的值。
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactiuser";
$database_port = "3306";
7)配置 Apache
安装Apache并运行chkconfig并使用service来启动httpd守护进程。Cacti提供该内容。/etc/httpd/conf.d/cacti.conf文件控制Apache服务器上Cacti的位置和可访问性。默认情况下,Cacti提供127.0.0.1/cacti(基于别名声明),只有127.0.0.1上的用户(非localhost;基于Allow from语句)可以访问Cacti。默认的cacti.conf文件如下:
$ cat /etc/httpd/conf.d/cacti.conf
#
# Cacti: An rrd based graphing tool
#
Alias /cacti /usr/share/cacti
< Directory /usr/share/cacti/>
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
< /Directory>
要遵循本节中的例子,立即在Allow from 127.0.0.1下面添加Allow from localhost行。可以添加额外的行以允许从其它系统访问。以下的容器允许从127.0.0.1、localhost以及位于172.16.192.150的远程系统来访问:
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from localhost
Allow from 172.16.192.150
< /Directory>
扩展:
1..什么是Cacti?
Cacti是一个使用RRDtool引擎的基于网页的PHP/MySql图形解决方案。Cacti是一套基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用RRDtool绘画图形,它的界面非常漂亮,能让你根本无需明白rrdtool的参数能轻易的绘出漂亮的图形。而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,Cacti还提供自己增加模板的功能,让你添加自己的snmp_query和script!功能非常强大完善,界面友好。可以说,cacti将rrdtool的所有“缺点”都补足了!
2.什么是Nagios?
Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。Nagios可运行在Linux/Unix平台之上,同时提供一个可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等。
3.Nagios与Cacti区别:
Cacti 和 Nagios是不同功用的系统,Nagios 适合监视大量服务器上面的大批服务是否正常,重点并不在图形化的监控,其集成的很多功能例如报警与通知机制都是 Cacti 没有或者很弱的。Cacti 主要用还是用来收集历史数据和画图, 所以界面比 nagios 漂亮很多。
综合上述:
Cacti偏沉于收集流量画图,系统负载方面的。而Nagios偏沉于系统状态正常与否方面的, Nagios能够和短信发送机共同用来规模较大的网络,Cacti+Nagios 两者结合使用取长补短方为上上之策。
4.什么是Zabbix?
概述:
Zabbix是一个基于WEB界面的提供分布式系统监视以及网 络监视功能的企业级的开源解决方案。Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix由2部分构成,Zabbix Server与可选组件Zabbix Agent。
Zabbix Server可以通过SNMP,Zabbix Agent,Ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台上。
Zabbix Agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。Zabbix Agent可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows (2000/2003/XP/Vista)等系统之上。
Zabbix Server可以单独监视远程服务器的服务状态;同时也可以与Zabbix Agent配合,可以轮询Zabbix Agent主动接收监视数据(Agent方式),同时还可被动接收Zabbix Agent发送的数据(trapping方式)。
另外Zabbix Server还支持SNMP (v1,v2),可以与SNMP软件(例如:net-snmp)等配合使用。
特点:
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
功能:
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
官方网站: