监控LINUX主机的性能是一个很复杂的操作,它有赖于命令行工具和集中数据。分析可能会很困难,需要大量的数据来建立相互关系从而得出结论。好在我们可以用一些现有工具来搭建这个过程的模型,让数据分析变得相对容易一些。接下来我们能看到其中的一个工具,它叫做Munin(代表记忆,是奥丁神的一只乌鸦的名字)。
Munin是通过客户端-服务器架构收集数据并将其图形化的工具。Munin允许你跟踪你的主机的运行记录,就是所谓的‘节点’,然后将它们发送到中央服务器,随后你就能在这里以图像形式展示它们。以下你可以看到一个用Munin图形界面显示磁盘IO信息的例子:
Munin可以通过安装包快速简易地安装到大多数Linux系统上。在红帽和Ubuntu/Debian上你都需要Munin,munin-node和munin-common安装包(这个组合假设你还需要监控服务器的情况),以红帽为例:
$ yum install munin munin-common munin-node
Munin安装将它的配置文件放在目录/etc/munin下。让我们就从配置munin服务器开始吧。主要的服务器配置文件是munin.conf,它控制服务器的设置和每个节点的配置信息。在大多数情况下用默认设置就可以了,但是其它几个选项你也应该知道:dbdir、htmldir、logdir 和rundir。
Dbdir设置决定munin把收集到的RRD格式的统计数据放在哪个目录下,在红帽和ubuntu系统中默认的是放在/var/lib/munin这个目录下。
Htmldir设置控制munin输出数据的位置,它是以html文件来显示图形界面的。在红帽系统中默认的是放在/var/www/html/munin目录下,而在ubuntu中的是放在/var/cache/munin/www目录下。这个目录正是我们一般为网页服务器服务时所采用的目录,例如Apache。***的操作办法之一就是运用Apache虚拟主机,创建一个虚拟主机可以用来图形化显示我们的节点状态:
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName munin.example.com DocumentRoot /var/www/html/munin <Directory /> Options FollowSymLinks AllowOverride None </Directory> LogLevel notice CustomLog /var/log/apache2/munin.access.log combined ErrorLog /var/log/apache2/munin.error.log ServerSignature On </VirtualHost>
Logdir和rundir设置控制munin的日志文件和pid文件放置位置。
***,我们也必须在munin.conf文件中定义所有将向服务器发送报告的节点主机,命令是:
[hostname.example.com] address 10.0.0.1 use_node_name yes [hostname2.example.com] address 10.0.0.2 use_node_name yes
括号中是每个节点的名字,后面是它的IP地址,use_node_name命令控制munin命名节点的方式,如果后面跟的参数为yes就是用括号中的值来命名,如果是no则将执行一个DNS查询。另外,你可以用includedir选项来命名一个单独的目录,munin将在这里加载所有的文件,例如:
includedir /etc/munin/munin-conf.d/
我经常用puppet导出资源来管理munin配置,首先在每个puppet客户端上创建一个独立的文件,然后用munin在这个文件中加载节点信息。
到这一步,服务器就已经配置好了,接下来我们需要配置节点。将munin-node包安装在每个节点并且配置/etc/munin目录下的munin-node.conf文件。大多数配置信息都不需要改变,但是你需要更改allow选项,它控制哪一个主机能访问munin和检索统计。我们用IP地址来配置munin服务器,例如:
allow ^10\.0\.0\.100$
正如你看到的,IP地址必须用perl常用格式来输入。如果你的munin服务器不只一台,那么你可以用多行允许命令来定义它们。
每个munin节点都用tcp端口4949来和munin服务器通讯,所以你必须确保这个端口在主机防火墙上是打开的,并且在节点和服务器中间环节的任何一个防火墙上都允许数据通过。你可以在munin-node.conf文件中的port选项来定义这个端口号。
除了基本设置外,我们还需要指示节点哪些数据是需要收集的。Munin采用插件程序的架构方式来定义监控内容。例如,有专门监控CPU的插件,还有监控负载、内存和其它内容的各种插件。Munin的所有插件清单可以在/etc/munin/plugins目录下找到,它们以链接到插件的sym-links形式显示。添加一个插件到munin的过程就是将插件文件的链接写入到/etc/munin/plugins目录下。如果插件需要某个配置,例如定义运行插件要求的用户,你都可以在目录/etc/munin/plugins.conf.d下找到该配置文件。
munin默认包含很丰富的内容,你可能不需要改变初始的基本设置,因为它们已经提供了足够的采集数据。Munin还提供大量有用的插件,你还能在社区中找到许多别人交流的插件。你可以用你熟悉的语言很容易开发出新的插件来。
***,我们通过运行munin-node init脚本来启动munin服务器和节点。
$ sudo /etc/init.d/munin-node start
这样就能开始munin监控并收集需要的数据,munin控制将周期性地查看每个节点的数据然后将其上传到munin服务器上。接着就可以通过munin控制上的网页服务来查看结果数据了。
所有的内容就是这些了。现在你可以用图形界面查看你的服务器的行为状态,并且可以探测到性能趋势和可能发生的问题。如果你觉得munin不适合你,也可以考虑使用另一个叫做collected的工具,它和munin比较相似,用C语言编写,它提供的功能可能比munin更加完善。它要求安装额外的软件来获取这些功能,但也是一个不错的可供参考的平台。
【编辑推荐】