扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
企业服务器对于企业业务持续性意义重大,系统管理员需要密切关注企业服务器以确保一切正常运行。当发现问题的时候,他们需要知道问题开始出现时的状况,因此调查可以重点放在问题出现的时候,这就意味着定期记录信息以及快速分析信息数据是很必要的,本文将介绍几个web界面的服务器检测工具。
每个工具都略有不同的侧重点,所以我们将逐一分析这些工具以帮助你选出适合安装在你的机器上的工具。这些工具执行统计记录所使用的语言和设计模式都可能影响其效率,例如,collectd是用C语言写的并作为守护进程(daemon)在运行,因此collectd不需要创建任何新进程来收集系统信息。其他收集程序可能是用Perl写的,可能你的磁盘缓存中包含Perl翻译器以及收集程序使用的所有Perl模块,系统需要定期产生一个或者多个新程序来收集系统信息。
RRDtool
这些我们将要分析的工具经常会使用其他工具,例如RRDtool就包括存储时间序列数据工具以及图表工具。
RRDtool工具侧重于存储新的时间序列数据,因此不会对磁盘子系统有很大影响,你可能会觉得这没什么大不了的。如果你只是每隔5-10秒钟获取几个值,将它们附加在文件的末尾,在服务器上都不能够明显被察觉,然后你可能会开始监测CPU(负荷、值、核心――每个核心多达16个值)、内存(交换、缓存大小――另外5个值)、磁盘中的剩余空间(20个值?)以及从UPS收集的数据(10个值)。即使不考虑网络流量,每隔10秒钟你都可以从系统中记录50个值。
RRDtool能够将这些值以4KB的大小写入磁盘中,而不是4字节或者8字节,因此系统不需要在每个记录间隔都运行工作。如果其他工具想要所有的数据,可以进行刷新输出缓存,以确保RRDtool缓存的所有数据都被存储入磁盘中。由于数据每次都是以4KB大小写入,就不需要总是将数据置于缓存中,只有再次执行分析或者使用RRDtool图表命令时才会启用。
由于系统监测工具经常会写入文件,你可能会对存储这些文件的区域进行优化。对于常规spinning disk,文件系统搜寻比按顺序读取很多块更具效率,当Linux内核只需要读取一个块时其他序列块也会进入缓存区以供备用。因为RRDtool文件经常被写入单个磁盘块,你最好关闭readahead的分区进程,你也可以利用util-linux-ng的blockdev程序将区块readahead值缩小为两个磁盘块(使用这样的命令:setra 16 /dev/sdX)。关闭时间更新并对文件系统使用writeback模式,RAID同样也将有助于提高性能。
collectd
Colletd是专为反复收集系统信息而开发的,而tarball包含分析这些信息的web界面,开发者表示该界面是一个极小的界面示例,那些想要找寻能够分析collectd收集的信息的web界面的人可以考虑使用其他工具(如Cacti)。
Debian Etch和Fedora9都附有collectd安装包,openSUSE还提供一键安装collected。该程序是用C语言写入的,并且作为守护进程运行,这使该程序能够在短间隔内记录信息而不会对系统产生较大影响。
当你安装collectd包的时候你可能还会想尝试插件包,collectd的重要优势在于能够通过插件支持检测各种各样的系统信息,例如数据库、UPSes、一般系统参数、NFS和其他服务器性能参数。不过,安装插件安装包不是件易事。对于openSUSE,你只需要安装插件完整包即可,而Fedora9( 4.4.x版本)则没有PostgreSQL插件,Debian、 openSUSE和Fedora中都不包含网络USP工具(NUT)插件。
解决插件问题的最简单的办法就是从源代码开始建立collectd,配置你想要的插件。一些通常没有被置于安装包中而你可能感兴趣的插件包括NUT、netlink、 postgresql以及iptables。安装collectd遵循如下步骤:配置;生成;sudo产生安装进程,但是如果你指定要编制某些插件的时候,你的配置命令可能会很长。安装程序以及我选择的插件都列在下面的命令中,我使用了contrib目录中的init.d启动文件,并更改了一些路径,因为我使用的是私人副本来保证collectd安装在单一目录树进行。另外,我还复制了iproute2以便在Fedora9的libnetlink库中使用。
$ cd ./collectd-4.5.1
$ ./configure --prefix=/usr/local/collectd \
--with-perl-bindings=INSTALLDIRS=vendor \
--without-libiptc --disable-ascent --disable-static \
--enable-postgresql --enable-mysql --enable-sensors \
--enable-email --enable-apache --enable-perl \
--enable-unixsock --enable-ipmi --enable-cpu --enable-nut \
--enable-xmms --enable-notify_email --enable-notify_desktop \
--disable-ipmi --with-libnetlink=/usr/local/collectd/iproute2-2.6.26
$ make
...
$ sudo make install
$ su
# install -m 700 contrib/fedora/init.d-collectd /etc/init.d/collectd
# vi /etc/init.d/collectd
...
CONFIG=/usr/local/collectd/etc/collectd.conf
...
daemon /usr/local/collectd/sbin/collectd -C "$CONFIG"
# chkconfig collectd on
在你启动collectd前,先看看etc/collectd.conf以确保你想要的插件及其选项能够被启用。该配置文件在LoadPlugin行(指定collectd的哪些插件需要使用)定义了几个通用的选项。每个插件的配置是在...范围内完成的,你也应该检查配置文件是否启用了rrdtool插件以及DataDir参数设置到现有的目录中,该目录中存储着可变数据。.
当你检查完插件启用情况以及选项情况后,就可以通过运行服务collectd状态启动collectd。
要想查看collectd收集的信息,你需要安装web界面或者其他程序(如Cacti),以下命令的执行需要安装collectd提供的基本的CGI教本,截图显示了运行脚本的情况。
# yum install rrdtool-perl
# cp contrib/collection.conf /etc/
# vi /etc/collection.conf
datadir: "/var/lib/collectd/rrd/"
libdir: "/usr/local/collectd/lib/collectd/"
# cp collection.cgi /var/www/cgi-bin/
# chgrp apache /var/www/cgi-bin/collection.cgi
如果你想要在KDE桌面查看collectd数据,可以试试kcollectd,你也可以将生成的RRDtool文件与Cacti整合,虽然安装过程非常繁琐。
部署了collectd就可以开始执行系统监测了,而collectd所提供的web界面纯粹只能作为演示示例使用。作为C语言编写的守护进程,collectd也可以作为系统中最小进程运行。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者