监控 MathLM

什么是 MonitorLM?
MonitorLM 还介绍可用的许可证和已被签出(checked out)的许可证,完全合格的域名以及已经签出的用户名等等. MonitorLM 可以把输出发送到终端,打开一个网页浏览器,或者写入一个文件. MonitorLM 的输出通过一个配置文件自定义. MonitorLM 自动支持 IPv4 和 IPv6 环境.
启动 MonitorLM
若要启动 MonitorLM,把目录更改到 MathLM 安装的地址,并且输入 .\monitorlm servername (在 Windows 上)或者 ./monitorlm servername (在 Linux 或者 Mac 上). monitorlm 命令的第一个变量指定运行 MathLM 的许可证服务器名称.如果用户没有明确指定一个服务器名称,则选择本地机器名作为默认值.
MonitorLM 命令行选项
以下选项使用 monitorlm 命令可用.指定一个选项的语法为 monitorlm servername options.
-file file
指定输出应该指向的文件
-format f
-health
检查服务器是否可访问且健康
-localtime
指定所有参考时间为本地时间,而不是 GMT 时间
-template file
monitorlm 命令行选项
如果 -file 没有设置,MonitorLM 将写入 stdout.
一旦设置 -health,所有其他选项会被忽略,MonitorLM 的退出代码会表明健康检查的结果(0 是成功;1 是失败).
-format 中的三个可能输出格式如下:
text
以文本格式把输出发送至 stdout(在 Linux 上是默认的)
html
以 HTML 格式发送输出,并且启动一个网页浏览器(在 Windows 和 Mac 上是默认的)
cgi
以 HTML 格式发送输出至 stdout
-format 输出格式
当直接使用网页浏览器启动 MonitorLM 时,使用 cgi 格式.
这里显示 MonitorLM 的输出看起来是什么样子的,当 -format 设为 text.
Online help is available at
http://reference.wolfram.com/network

MathLM Version 11.2
MathLM Server hostname.domain.com
Date : Thursday, August 29 2017 14:11:59
    
License Usage Summary:

                            License    Total    Total
Program                        Class    in Use    Authorized
------------------------------------------------------

Mathematica                    A        2        20
MathKernel                    A        4        40


Sub Mathematica                A        0        80
Sub MathKernel                A        0        80

Licenses in Use:

                            License
Program            Version        Class    Username    Hostname            Duration
----------------------------------------------------------------------------
Mathematica        11.1            A        username    client1.domain.com    08:49
Mathematica        11.2            A        username    client2.domain.com    06:33
MathKernel        11.1            A        username    client1.domain.com    08:44
MathKernel        11.2            A        username    client2.domain.com    06:52
MathKernel        11.2            A        username    client2.domain.com    06:52
MathKernel        11.2            A        username    client2.domain.com    06:30
这里显示在一个网页浏览器中 MonitorLM 的输出看起来是什么样子的,当 -format 设为 html.

注意当 -format 设为 cgiMonitorLM 的输出以 HTML 格式发送至 stdout. 这里显示当在网页浏览器中显示时,输出看起来是什么样子的.

自定义 MonitorLM 的输出
用户可以通过编辑一个模板文件,自定义从 MonitorLM 得到的输出的内容和格式. 这是一个普通文本文件,它可以包含以下元素类别.

预定义常量标签

以下是可用包括在模板文件中的常量标签名的两个表格,以及它们可能格式的数值值.

日期常量标签

以下是 MonitorLM 的日期常量标签.
标签名
可能值
描述
%CONST_DATE_D#
[1...31]
一个月中的第几天
%CONST_DATE_W#
1 数字 [ 1 ... 7 ] 2 简略标记 [ Sun ... Sat ] 3 Verbose [ Sunday ... Saturday ]
一个星期中的第几天
%CONST_DATE_M#
1 数字 [ 1 ... 12 ] 2 简略标记 [ Jan ... Dec ] 3 Verbose [ January ... December ]
月份
%CONST_DATE_Y#
1 两位数字 [ 10 ] 2 四位数字 [ 2010 ]
年份
%CONST_DATE_T#
1 十二小时 [ 10:20:15 ]
时间
MonitorLM 日期常量标签

服务器和进程常量标签

以下是 MonitorLM 的服务器和进程常量标签.
标签名
描述
%CONST_SERVER_IP
MathLM IP 地址
%CONST_SERVER_HOST
MathLM 主机名
%CONST_SERVER_DOMAIN
MathLM
%CONST_SERVER_FQDN
MathLM 完全合格的域名
%CONST_SERVER_VERSION
MathLM 版本
%CONST_CA_FE_AUTHORIZED
被授权的类别 A 前端数量
%CONST_CA_SUB_FE_AUTHORIZED
被授权的类别 A 子前端进程数量
%CONST_CB_FE_AUTHORIZED
被授权的类别 B 前端数量
%CONST_CB_SUB_FE_AUTHORIZED
被授权的类别 B 子前端进程数量
%CONST_TOTAL_FE_AUTHORIZED
被授权的前端总数
%CONST_TOTAL_SUB_FE_AUTHORIZED
被授权的子前端进程总数
%CONST_CA_KE_AUTHORIZED
被授权的类别 A 内核总数
%CONST_CA_SUB_KE_AUTHORIZED
被授权的类别 A 子内核进程数量
%CONST_CB_KE_AUTHORIZED
被授权的类别 B 内核数量
%CONST_CB_SUB_KE_AUTHORIZED
被授权的类别 B 子内核进程数量
%CONST_TOTAL_KE_AUTHORIZED
被授权的内核总数
%CONST_TOTAL_SUB_KE_AUTHORIZED
被授权的子内核进程总数
%CONST_CA_FE_AVAILABLE
可用的类别 A 前端数目
%CONST_CA_SUB_FE_AVAILABLE
可用的类别 A 子前端进程数目
%CONST_CB_FE_AVAILABLE
可用的类别 B 前端数目
%CONST_CB_SUB_FE_AVAILABLE
可用的类别 B 子前端进程数目
%CONST_TOTAL_FE_AVAILABLE
可用的前端总数
%CONST_TOTAL_SUB_FE_AVAILABLE
可用的子前端进程总数
%CONST_CA_KE_AVAILABLE
可用的类别 A 内核总数
%CONST_CA_SUB_KE_AVAILABLE
可用的类别 A 子内核进程数目
%CONST_CB_KE_AVAILABLE
可用的类别 B 内核总数
%CONST_CB_SUB_KE_AVAILABLE
可用的类别 B 子内核进程数目
%CONST_TOTAL_KE_AVAILABLE
可用的内核总数
%CONST_TOTAL_SUB_KE_AVAILABLE
可用的子内核进程总数
%CONST_CA_FE_OUT
正在使用的类别 A 前端数目
%CONST_CA_SUB_FE_OUT
正在使用的类别 A 子前端进程数目
%CONST_CB_FE_OUT
正在使用的类别 B 前端数目
%CONST_CB_SUB_FE_OUT
正在使用的类别 B 子前端进程数目
%CONST_TOTAL_FE_OUT
正在使用的前端总数
%CONST_TOTAL_SUB_FE_OUT
正在使用的子前端进程总数
%CONST_CA_KE_OUT
正在使用的类别 A 内核数目
%CONST_CA_SUB_KE_OUT
正在使用的类别 A 子内核进程数目
%CONST_CB_KE_OUT
正在使用的类别 B 内核数目
%CONST_CB_SUB_KE_OUT
正在使用的类别 B 子内核数目
%CONST_TOTAL_KE_OUT
正在使用的内核总数
%CONST_TOTAL_SUB_KE_OUT
正在使用的子内核进程总数
MonitorLM 服务器和进程常量标签

可定制的变量标签

以下是 MonitorLM 的可定制的变量标签.
标签名
可能值
描述
%VAR_DATE_AMPM
"A.M." "P.M."
当显示时间时,用于 a.m. 和 p.m. 的文本
%VAR_MPROCESS
" Mathematica " "MathKernel" "SubMathematica" "SubMathKernel"
Wolfram 系统进程的标题;引号中的第一个字符串是前端标题,第二个是内核标题,第三个是子前端进程标题,而第四个是子内核进程标题
%VAR_LIC_CLASS
"Class A" "Class B"
关于每个许可证类别的标签
%VAR_CA_AUTHORIZED_HEADER
"Class A Authorized \t Front End \t Kernel"
被授权类别 A 许可证的数目的头;使用预定义常量标签 %CONST_CA_FE_AUTHORIZED%CONST_CA_KE_AUTHORIZED
%VAR_CA_SUB_AUTHORIZED_HEADER
"Class A Authorized \t Front End \t Kernel"
被授权类别 A 子进程许可证的数目的头;使用预定义常量标签 %CONST_CA SUB_FE_AUTHORIZED%CONST_CA SUB_KE_AUTHORIZED
%VAR_CB_AUTHORIZED_HEADER
"Class B Authorized \t Front End \t Kernel"
被授权类别 B 许可证的数目的头;使用预定义常量标签 %CONST_CB_FE_AUTHORIZED%CONST_CB_KE_AUTHORIZED
%VAR_CB_SUB_AUTHORIZED_HEADER
"Class B Authorized \t Front End \t Kernel"
被授权类别 B 子进程许可证的数量的头;使用预定义常量标签 %CONST_CB_SUB FE_AUTHORIZED%CONST_CB_SUB KE_AUTHORIZED
%VAR_TOTAL_AUTHORIZED_HEADER
"Total Authorized \t Front End \t Kernel"
被授权许可证总数的头;使用预定义常量标签 %CONST_TOTAL_FE_AUTHORIZED%CONST_TOTAL_KE_AUTHORIZED
%VAR_TOTAL_SUB_AUTHORIZED_HEADER
"Total Authorized \t Front End \t Kernel"
被授权子进程许可证的总数的头;使用预定义常量标签 %CONST_TOTAL_SUB FE_AUTHORIZED%CONST_TOTAL_SUB KE_AUTHORIZED
%VAR_CA_CHECKEDOUT_HEADER
"Class A Licenses in Use\nUsername \t Hostname \t Program \t Slot # \t Duration"
关于正在使用的类别 A 许可证信息的头;使用重复标签 %REP_CA_CHECKOUT_LINE
%VAR_CA_SUB_CHECKEDOUT_HEADER
"Class A Licenses in Use\nUsername \t Hostname \t Program \t Slot # \t Duration"
关于正在使用的类别 A 子进程许可证的信息的头;使用重复标签 %REP_CA_CHECKOUT_LINE
%VAR_CB_CHECKEDOUT_HEADER
"Class B Licenses in Use\nUsername \t Hostname \t Program \t Slot # \t Duration"
关于正在使用的类别 B 许可证的信息的头;使用重复标签 %REP_CB_CHECKOUT_LINE
%VAR_CB_SUB_CHECKEDOUT_HEADER
"Class B Licenses in Use\nUsername \t Hostname \t Program \t Slot # \t Duration"
关于正在使用的类别 B 子进程许可证的信息的头;使用重复标签 %REP_CB_SUB_CHECKOUT_LINE
%VAR_CHECKEDOUT_HEADER
"Licenses in Use\nUsername \t Hostname \t Program \t License Class \t Slot # \t Duration"
关于所有正在使用的许可证的信息的头;使用重复标签 %REP_GENERAL_CHECKOUT_LINE
%VAR_SUB_CHECKEDOUT_HEADER
"Licenses in Use\nUsername \t Hostname \t Program \t License Class \t Slot # \t Duration"
关于所有正在使用的子进程许可证的信息的头;使用重复标签 %REP_GENERAL_SUB CHECKOUT_LINE
MonitorLM 可定制的变量标签.

注意:在本节中提供的字符串是可能值的例子,而不是默认设置的例子. 若要使用这些标签,用户必须在模板中定义它们.

取决于进程的标签

以下是 MonitorLM 的取决于进程的标签.
标签名
描述
%PROC_UID
Wolfram 系统进程所有者的用户ID
%PROC_USER
Wolfram 系统进程所有者的用户名
%PROC_IP
使用 Wolfram 系统进程的机器的 IP 地址
%PROC_HOST
使用 Wolfram 系统进程的机器的主机名
%PROC_DOMAIN
使用 Wolfram 系统进程的机器的域
%PROC_FQDN
使用 Wolfram 系统进程的机器的完全合格的域名
%PROC_SLOTNUM
Wolfram 系统进程的时间段编号(Slot number)
%PROC_VERSION
客户端版本
%PROC_DURATION
时间客户端已经在运行
MonitorLM 取决于进程的标签.

重复标签

以下是 MonitorLM 的重复标签.
标签名
可能值
描述
%REP_CA_CHECKOUT_LINE
"%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %PROC_SLOTNUM \t %PROC_DURATION\n"
类别 A 签出行(checkout line). 这里指定了列出正在使用的类别 A 进程的表格或者块的中每一行的格式. 对应于可定制变量标签%VAR_CA_CHECKEDOUT_HEADER.
%REP_CA_SUB_CHECKOUT_LINE
"%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %PROC_SLOTNUM \t %PROC_DURATION\n"
类别 A 子进程签出行. 这里指定了列出正在使用的类别 A 子进程的表格或者块中每一行的格式. 对应于可定制变量标签%VAR_CA_SUB_CHECKEDOUT_HEADER.
%REP_CB_CHECKOUT_LINE
"%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %PROC_SLOTNUM \t %PROC_DURATION\n"
类别 B 签出行. 这里指定了列出正在使用的类别 B 进程的表格或者块中每一行的格式. 对应于可定制变量标签 %VAR_CB_CHECKEDOUT_HEADER.
%REP_CB_SUB_CHECKOUT_LINE
"%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %PROC_SLOTNUM \t %PROC_DURATION\n"
类别 B 子进程签出行. 这里指定列出正在使用的类别B 子进程的表格或者块中每一行的格式. 对应于可定制变量标签 %VAR_CB_SUB_CHECKEDOUT_HEADER.
%REP_GENERAL_CHECKOUT_LINE
"%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %VAR_LIC_CLASS \t %PROC_SLOTNUM \t %PROC_DURATION\n"
通用签出行. 如果用户不想要分隔类别时,使用它. 对应于可定制变量标签%VAR_CHECKEDOUT_HEADER.
%REP_GENERAL_SUB_CHECKOUT_LINE
"%PROC_USER \t %PROC_HOST \t %VAR_MPROCESS \t %VAR_LIC_CLASS \t %PROC_SLOTNUM \t %PROC_DURATION\n"
通用子进程签出行. 如果用户不想要分隔类别是,使用它. 对应于可定制变量标签%VAR_SUB_CHECKEDOUT_HEADER.
MonitorLM 重复标签

注意:本节中提供的字符串是可能值的实例,而不是默认设置. 若要使用这些标签,用户必须在模板中定义它们.

注意:在模板文件中,构成 MonitorLM 输出的文本包装(wrappers)和标签必须在仅包含关键词 %TEXT 的文本之后,而在该关键词之前和之后没有空格. 自定义变量标签必须在 %TEXT 行之前. 如果没有自定义变量标签,%TEXT 行可以是文件的第一行.

示例和行为
这是一个简单的文本文件,仅显示出被授权的,可用的以及正在使用的进程数量. 该例子不需要定义任何变量定义标签.
输出的结果具有如下形式.
这是一个稍微复杂的例子. 它与前面的例子相似,除了它也列出正在使用的进程,并且自定义了变量标签.
输出的结果具有如下形式.
下面例子演示了 HTML 输出. 这是有用的,例如,如果用户想要在网页浏览器中查看 MonitorLM 输出.
%VAR_MPROCESS = "FE" "KE" "SFE" "SKE"
%VAR_TOTAL_CHECKEDOUT_HEADER = "<TR><TD><B>Slot</B></TD> <TD><B>Program</B></TD> <TD><B>User</B></TD> <TD><B>FQDN</B></TD> </TR>\n"
%REP_GENERAL_CHECKOUT_LINE = "<TR> <TD>%PROC_SLOTNUM</TD> <TD>%VAR_MPROCESS</TD> <TD>%PROC_USER</TD> <TD>%PROC_FQDN</TD> </TR>\n"

%TEXT
<HTML>
<HEAD> <TITLE> MathLM Status </TITLE> </HEAD>
<BODY>
<TABLE BORDER=1 CELLPADDING=5>
<TR><TD COLSPAN=2><B>MathLM Server</B></TD> <TD COLSPAN=2><B>%CONST_SERVER_FQDN</B></TD> </TR>
<TR><TD COLSPAN=2>Time/Date</TD> <TD COLSPAN=2>[%CONST_DATE_T2] [%CONST_DATE_M3 %CONST_DATE_D, %CONST_DATE_Y2]</TD> </TR>
<TR><TD COLSPAN=2>Authorized</TD> <TD>%CONST_TOTAL_FE_AUTHORIZED</TD> <TD>%CONST_TOTAL_KE_AUTHORIZED</TD></TR>
<TR><TD COLSPAN=2>Available</TD> <TD>%CONST_TOTAL_FE_AVAILABLE</TD> <TD>%CONST_TOTAL_KE_AVAILABLE</TD></TR>
<TR><TD COLSPAN=2>In Use</TD> <TD>%CONST_TOTAL_FE_OUT</TD> <TD>%CONST_TOTAL_KE_OUT</TD></TR>

%VAR_TOTAL_CHECKEDOUT_HEADER
%REP_GENERAL_CHECKOUT_LINE

</TABLE>
</BODY>
</HTML>
输出的结果具有以下显示的形式.