nmon使用

    技术2024-06-21  79

    我在本文中分享的设置非常适合我。 无疑,其他系统管理员可以采用其他方法。

    在深入探讨本文之前,让我首先总结一下所涉及的任务。

    请注意,您有nmon在远程主机上运行并收集性能数据。 将nmon2rrd安装到Web服务器。 将rrdtool的先决条件安装到Web服务器。 将rrdtool安装到Web服务器。 将前一天的nmon数据文件从远程主机拉到本地Web服务器。 使用nmon2rrd转换nmon文件,然后将其放置在Web目录中。 通过网页菜单发布网页。

    nmon2rrd需要rrdtool,它需要其他库

    要下载nmon2rrd,请参阅参考资料部分。 下载链接也是nmon2rrd的Wiki链接,其中包含有关实用程序的信息。 请注意,nmon2rrd本身将无法正常运行,并且还需要rrdtool,而rrdtool则依赖于其他库依赖项。 我让nmon2rrd在IBM®AIX®5.3和AIX 7.1版本上都可以工作。 对于AIX 7.1,perzl.org提供了所有必需的二进制文件。 Zoran Majcenic还提供了一个预构建的rrdtool RPM。 请参阅参考资料部分以获取更多详细信息。

    将rrdtool与nmon2rrd一起安装后,您已准备就绪,可以进行转换。 命令行中的用法非常简单易懂。

    nmon2rrd -f nmonfile [-d directory] [-x] [-w width] [-h height]  Version:17a -f nmonfile  the regular CSV nmon output file -d directory  dirname for the output -w width  graph width  (default 800, max 1500) -h height  graph height (default 300) -x  execute the output files Example:  nmon2rrd -f m1_030811_1534.nmon -d /webpages/docs/m1/030811 -x

    只是重复使用,这是另一个使用新创建的nmon文件的使用输出。

    nmon2rrd_17 –f /opt/nmon/ uk01wrs6010_140224_0900.nmon \ -d /opt/apache2/htdocs/nmon_graphs/uk01wrs6010_140224_0900 -x

    转换nmon文件时,我总是使用–x标志,这意味着HTML页面所需的所有图像均已生成并放置在结果目录中。

    捕获nmon数据

    在我的设置中,我仅捕获了短短24小时的时间,准确地说是23.75。 这使我可以很好地传播数据以转换为图形。 在每个主机crontab上,我都有以下条目:

    00 09 * * * /usr/bin/nmon -f -t -^ -s 900 -c 95 -m /opt/dump/nmon_data

    上面的nmon条目等于:

    每900秒(15分钟)捕获一次nmon数据,发生95次(快照)。

    nmon必须将捕获的文件放在/ opt / dump / nmon_data中。 结果捕获的文件名将采用以下格式。

    <hostname>_<yymmdd>_<hhmm>.nmon

    也就是说,例如:

    uk01wrs6010_140224_0900.nmon

    nmon捕获(-^)光纤通道数据,并且(-t)包括顶级进程,并且输出以(-f)电子表格格式输入。

    请注意您在捕获中指定的快照数量。 实际上,让我们接下来讨论。

    注意您的快照计数,这可能是太多信息

    捕获数据时,您需要对要显示的数据量保持现实。 nmon2rrd只能转换这么多快照,如果在正常屏幕上查看图形,我认为绝对没有超过500到600个快照。 该图形肯定不能在图形中显示所有这些点。 最糟糕的是,使用nmon2rrd将数据转换为HTML时,数据可能会被截断。

    前一天的nmon数据

    我们已经安装了所有实用程序,对吗? 好吧,不是那么快。 请记住,我们的nmon运行24小时。 当我们遍历所有远程主机时,假设收集开始于09:00来收集nmon文件,我们可能要收集前一天的数据,因为当前(今天)的nmon将运行! 首先,确保您的网络时间协议(NTP)服务正在运行并与所有主机上的时间服务器同步,其次,在变量中提供一种获取前一天日期的方法,并将其用作scp命令的一部分后来。 您可以使用TZ环境变量获取前一天的日期,或者可以肯定地安装GNU日期。 或者,安装轻量级的日期实用程序,例如yest(请参阅参考资料部分)。 例如,要以nmon文件的日期格式产生前一天的日期(假设今天是2月25日),我可以使用:

    $ yest "%y%m%d" 140224

    可以看出,它与文件的前一天的nmon日期格式匹配:

    uk01wrs6010_140224_0900.nmon

    要显示21天之前的日期,请使用: yest -21

    提取和转换nmon数据

    要将前一天的nmon文件从/ opt / dump / nmon_data中的所有远程主机拉到Web服务器上的暂存区域,可以在循环内运行一个简单的scp命令。 我发现最好保留一个文件,其中包含将与之连接的所有主机并通读该文件。 然后,作为scp命令的一部分来解析前一天的日期,以确保获得前一天的nmon文件。 例如,部分框架如下:

    dest_dir=/opt/dump/nmon_data/ incoming=/opt/dump/incoming yesday=$(yest "%y%m%d") cat /usr/local/bin/all_nmon_server.txt | while read hosts do scp $host:$dest_dir{host}_$yesday*.nmon $incoming done

    在上面的代码中,all_nmon_server.txt是一个文件,每行包含一个远程主机,即:

    host_1 host_2 …

    现在,所有nmon文件都位于/ opt / dump / incoming中。 因此,现在让我们进行一些转换。

    对于我的nmon图,我为每个nmon条目创建一个单独的目录。 因此,我需要创建一个目录,该目录以以下格式表示远程主机的nmon文件:<hostname> _yymmdd_ <hhmm>,对吗? 简单地从文件名中提取主机名就足够了吗? 有很多方法可以做到这一点,但我将使用:

    thisdirec=$(echo $file | awk -F '.' '{print $1}')

    其中, $file变量是通过循环读取的当前nmon文件名。

    即uk01wrs6010_140224_0900.nmon变成uk01wrs6010_140224_0900.

    在以下示例中,我生成的网页和GIF图像将位于:/ opt / apache2 / htdocs / nmon_graphs / <主机名> _ <yymmdd> _ <hhmm>

    if ! [ -d /opt/apache2/htdocs/nmon_graphs/$thisdirec ] then mkdir -m 754 -p /opt/apache2/htdocs/nmon_graphs/$thisdirec …

    其中, $thisdirec保存目录名称。

    经过几天的增长,主机的目录可能是:

    $ ls -l |grep uk01wrs6014 drwxrwxr-- 2 www www 2048 Feb 18 09:41 uk01wrs6014_140217_0900 drwxrwxr-- 2 www www 2048 Feb 20 09:18 uk01wrs6014_140219_0900 drwxrwxr-- 2 www www 2048 Feb 21 09:18 uk01wrs6014_140220_0900 drwxrwxr-- 2 www www 2048 Feb 22 09:20 uk01wrs6014_140221_0900

    现在,让我们使用nmon2rrd进行转换(我已经解决了用法)。 如果您希望通过单击一次同时创建所有映像,则将可执行标志' -x '附加到命令中。

    nmon2rrd_17 -f $incoming/$file -d /opt/apache2/htdocs/nmon_graphs/$thisdirec –x

    $file , $thisdirec和$incoming变量已在前面指出。 完成上述所有操作后,GIF和rrd文件(以及生成的index.html文件)将出现在新创建的目录中。 如前所述,您可以删除其中一些rrd日志文件,但是由于它们的大小很小,因此我将其保留不变。 如果遇到HTML页面无法正确显示数据的问题,则应查看这些文件。

    现在,我们有了一个名为index.htmlHTML文件。 始终建议将其重命名为它代表的实际主机名。 同样,HML文件在页面上将没有链接可返回菜单。 我们将有一个菜单来查看这些文件,否则,您可能必须整天都在那儿尝试选择正确HTML文件来查看,尤其是如果您有许多长时间记录的主机。

    这是一个示例代码片段,用于将文件重命名为更有意义的文件名。

    uk01wrs6010_140224_0900.nmon.html mv /opt/apache2/htdocs/nmon_graphs/$thisdirec/index.html /opt/apache2/htdocs/nmon _graphs/$thisdirec/$file.html

    接下来,让我们在文件中放置一个链接,以便用户可以快速返回菜单。 不久,我将讨论有关cgi脚本的信息,但现在,假定以下内容:

    Web服务器主机 :uk01wrs6010

    cgi-bin菜单页面 :nmon_menu.cgi

    以下sed命令在HTML文件中插入一个HTML链接,该链接指向nmon_menu cgi网页。

    sed '1a\ <a href="http://uk01wrs6010/cgi-bin/nmon_menu.cgi/">Back to nmon menu</a>' /opt/a pache2/htdocs/nmon_graphs/$thisdirec/$file.html >/tmp/holdme cp -p /tmp/holdme /opt/apache2/htdocs/nmon_graphs/$thisdirec/$file.html

    得到了HTML,现在让我们介绍一下

    因此,现在我们都准备好在用户在网络环境中选择时提供这些nmon文件。 以下列表总结了下一步要做的任务。

    创建一个cgi菜单,以显示具有nmon图的可用主机。 选择主机后,显示一个cgi菜单,其中包含nmon图的该主机的可用日期。 使用HMTL链接发布nmon图以返回到cgi菜单。

    选择你的服务器

    在菜单中显示主机很有意义。 在以下输出中,我们使用grep命令来模式搜索构成目录名一部分的AIX主机名。 请注意,nmon图保存在/opt/apache2/htdocs/nmon_graphs目录中。

    然后提取主机名部分,并删除重复的名称。 请记住,对于每个nmon数据,我们将有单独的目录条目,因此,我们需要删除重复项。

    图1. nmon.cgi显示了显示主机的nmon菜单
    echo "Select Server name:<br><SELECT NAME=\"srvname\">" cd /opt/apache2/htdocs/nmon_graphs hosts=$(ls | egrep 'hrs|wrs|prs|drs'|awk -F '_' '{print $1}'| uniq) for loop in $hosts do echo "<OPTION>$loop" done echo "</td>" echo "</table><br>"

    选择服务器后,会将其解析($ srvname)作为QUERY_STRING的一部分到下一个cgi-bin脚本。

    获取服务器,现在选择日期

    用户现在已选择服务器。 接下来,用户可以选择用户要查看的nmon图的日期。 图2显示了当给定主机存在nmon图时可用的日期。 然后,下一个cgi-bin脚本从上一个脚本获取解析到的服务器名称。

    图2.提供给定主机的nmon图时可用的日期

    使用下面的代码可以很容易地做到这一点。

    server=$(echo $QUERY_STRING | awk -F= '{print $2}')

    接下来,我们对所有包含该服务器名的目录使用grep命令,并拉出目录名,如前所述,该目录名将采用以下格式。

    uk01wrs6014_140221_0900

    这是实现上述目标的部分代码:

    <FORM ACTION="/cgi-bin/nmon_display.cgi" METHOD="GET"> <input type="hidden" name="servername" value=$server> EOF echo "<BR><BR><BR><BR><BR><BR><BR><BR><BR><TABLE BORDER=0 ALIGN=CENTER width=600>" echo "<TR align=center><TD>" echo "Select Run Date Collection for $server (yymmdd_hhmm):<br><SELECT NAME=\"nmon_file\">" cd /opt/apache2/htdocs/nmon_graphs datelist=$(ls -l |grep ^d|grep $server |awk '{print $9}') for loop in $datelist do echo "<OPTION>$loop" done echo "</td>" echo "</table><br>"

    用户已经选择了要查看的图形的nmon日期。 现在,将$servername和$nmon_file变量解析到显示实际nmon图的下一个cgi脚本。

    你的图来了

    现在我们需要做的就是呈现HTML文件。 图3显示了带有HTML链接的nmon图。 使用以下命令从QUERY_STRING变量中提取服务器名称和nmon文件。

    servername=$(echo $QUERY_STRING | awk -F '&' '{print $1}' | awk -F'=' '{print $2}') nmon_file=$(echo $QUERY_STRING | awk -F '&' '{print $2}' | awk -F'=' '{print $2}')
    图3.使用sed命令插入的链接(在顶部)

    现在,我们可以使用上一个脚本中解析的值来为页面提供服务。

    echo "<head>" echo "<META HTTP-EQUIV='Refresh' CONTENT='1; URL=http://uk01wrs6010/nmon_graphs/$ {nmon_file}/${nmon_file}.nmon.html'/>"; echo "</head>"

    有关显示光纤和磁盘适配器用法的nmon图,请参见图4。

    图4.光纤和磁盘适配器

    结论

    此处提供的设置使您可以轻松地通过网页访问以查看来自不同主机的nmon图。 对于内部管理,请确保定期运行find命令以删除旧目录。

    翻译自: https://www.ibm.com/developerworks/aix/library/au-nmon-web-pages/index.html

    相关资源:微信小程序源码-合集6.rar
    Processed: 0.024, SQL: 9