脚本监视器


脚本监视器-概述

如果要手动监控运行的脚本的输出,则自定义脚本监控可能是一项繁琐的任务。Applications Manager提供了脚本监控功能,可通过自动监控内部自定义脚本(Windows / Linux)的输出并根据配置创建告警来简化此过程。脚本监视器允许您监控本地系统或远程系统中存在的脚本,将输出传输到输出文件,解析输出并执行配置的操作。

Applications Manager提供脚本监控功能,以自动监控内部使用的特定Windows / Linux / Solaris脚本的输出。

  • 在创建新脚本监视器的过程中,必须提供自定义脚本的位置(本地/远程),  要监控的属性(数字/字符串),将 在其中重定向输出的输出文件以及轮询间隔
  • 根据轮询间隔,Applications Manager将执行脚本。
  • 该脚本会将其输出传输到 配置的输出文件。脚本的输出应为Key = Value格式,其中 =可以是任何定界符。
  • Applications Manager解析输出文件并执行配置的动作。它使您可以通过执行其他OS脚本来警告管理员或自动采取纠正措施。
  • 配置的属性的报告将显示为图形。提供了启用或禁用报告的选项。

创建一个新的脚本监视器

要添加脚本监视器,请按照给定的步骤进行操作:

  1. 点击 新建监视器。选择 脚本监视器
  2. 输入 监视器的 显示名称
  3. 指定要监控的脚本是否存在于 本地服务器 或 远程服务器中。
  4. 如果是本地服务器,请提供要监控的 脚本 的绝对路径,以及应该从中执行脚本的目录的绝对路径。执行目录应位于要监控的脚本目录结构的相同层次结构中。
  5. 选择脚本位置作为命令脚本/批处理文件
  6. 指定要监控的脚本/命令的绝对路径。
  7. 指定应从中执行脚本的执行目录的绝对路径。执行目录应与要监控的脚本的目录结构处于同一层次结构中。
  8. 选中输出设置复选框,以配置输出设置
    • 选中 从文件获取输出 复选框,并指定文件的路径。如果未选中该复选框,Applications Manager将从输出流中获取输出。
    • 输入字符串数字属性(每行一个属性)。
    • 输入在输出文件中使用的定界符的值 。默认情况下,它是 =。如果您未指定分隔符,则将'space'视为分隔符。
  9. 如果要监控表格输出文件,请输入表的详细信息-名称,字符串数字列属性,定界符,并指定哪个属性是唯一列
    • 为了标识表格输出文件,请在实际脚本之前和之后执行以下命令。
      echo <-table <表名>开始-> 
      [脚本命令]
      echo <-table <表名>结束-> 
      这将使Applications Manager能够识别输出文件的表。
    • 即使您使用命令而不是脚本作为输入,则命令的输出也应采用上述格式。还必须在命令输出中将页眉和页脚作为文件的第一行。 
    • 如果在下一次轮询中表行不可用,则可以通过启用管理表行 选项来配置适当的表行操作(保留,删除或取消管理)。
    • 如果输出文件中没有表行可用,则可以通过启用管理表数据选项来配置适当的健康状况严重性(严重,警告或正常)。
  10. 指定参数。例如,主机名80 http
  11. 设置轮询间隔。默认是5分钟
  12.  以秒为单位指定超时值。该值可以是脚本执行所需的最长时间。
  13. 在Linux中,指定 执行脚本的 方式。默认情况下,它是 sh。
  14. 如果脚本在远程服务器中,请从列表中选择主机名
  15. 如果远程服务器是新主机,则输入服务器的主机名/IP地址。选择监控的模式远程登录,SSHPowerShell
  16. 输入服务器的用户名密码
  17. 输入端口号-默认Telnet端口号:23,SSH:22
  18. 指定命令提示符值,该值是命令提示符中的最后一个字符。默认值为$,可能的值为>,#等。
  19. 添加脚本监视器后,您可以查看新添加的脚本监视器的详细信息
注意:
  • 仅在Powershell监控模式下支持远程Windows脚本 监控。
  • 用于监控的脚本/命令不应包含用于Powershell监控模式的空格。
  • 当Powershell监控模式启用了输出设置选项时,输出文件是必需的。

为脚本监视器启用配置告警模板

您可以启用指向配置告警的链接(该链接将显示在脚本监视器页面中每个表的右上角)。使用链接,用户可以为表中的任何属性设置预定义阈值。

这是如何启用为脚本监视器配置告警模板的方法:

  • 转到管理标签。
  • 点击发现和数据收集下的性能轮询
  • 性能数据收集下,点击优化数据收集选项卡。
  • 从下拉菜单中选择脚本/数据库查询监视器
  • 选中为脚本监视器和数据库查询监视器启用配置告警模板选项。
  • 配置告警链接将显示在脚本监视器页面中每个表的右上角。

提示

  1. 如果选择脚本位置作为命令:
  2. 如果选择脚本的命令类型:
  3. 如果选择脚本位置作为脚本:
    • 任何脚本在一个本地Windows服务器将执行为
         cmd / C [脚本名称] [参数]
      示例:cmd /CD:\testScript.bat主机名用户名密码。
  4. 要执行VBS,Powershell或不是批处理文件的任何脚本,请执行以下操作:
    • 该脚本应将输出写入命令提示符或文件。
    • 您还可以通过将文件嵌入批处理脚本中并使用批处理脚本进行监控来执行文件。 这里有些例子。
  5. 您可以通过选择 Command直接使用它们,而无需使用另一个批处理文件:
    C:\windows\system32\cscript.exe D:\testFile.vbs hostname username > outputfile.txt
  6. 可以在脚本中使用参数。
本地和远程非Windows脚本监控:
  • 提供适当的Shell Type以执行脚本。默认情况下使用sh
  • 您可以直接以命令的形式执行脚本:sh ./test.sh

注意:用户必须包含执行脚本的权限以及对输出文件的读写权限。

示例命令

命令: netstat -an | grep "CLOSE_WAIT" | wc -l | awk '{print "CLOSE_WAIT=" $1}'

示例脚本

要执行VBS文件:

  • 要执行testFile.vbs,将其嵌入批处理脚本testScript.bat
  • testScript.bat文件的内容:

c:\windows\system32\cscript.exe D:\testFile.vbs  > outputFile.txt

  • 添加testScript.bat进行监控,并使用outputFile.txt获取Output。

要执行Powershell文件:

  • 要执行test.ps1,请将其嵌入批处理脚本testScript.bat
  • test.bat的内容:

PowerShell.exe-NoProfile -ExecutionPolicy Bypass-Command

  • 添加test.bat文件进行监控,并使用outputFile.txt获取Output。
注意:
  •  必须使用-NoProfile -ExecutionPolicy Bypass执行PowerShell脚本 
  •  需要为通过powershell创建的输出文件添加 -encoding ascii。

示例输入

要监控脚本interfacestatus.bat  ,该脚本 将在输出文件interfacestatusoutput.txt中创建一个名为InterfaceStats的用户定义表  以及一些用户定义的参数,例如 DiskStatus,  DiskErrors 和 No. ofProcess, 

  • 在脚本监视器创建表单中,提供脚本绝对路径 :c:\ interfacestatus.bat
  • 输出设置下,提供输出文件绝对路径:c:\ interfacestatusoutput.txt
  • 给 DiskStatus 作为字符串属性,No.ofProces和 DiskErrors 是带有Delimiter   =的数字属性。
  • 如果要以表格式监控统计信息,请选择输出文件中的表。
    • 这里,我们有一个表 InterfaceStats  ,其统计信息包括名称,IP,状态,输入,输出,其中名称,IP,状态是字符串属性;输入和输出是数字属性。该分隔符 是两个列名之间的分隔符号- >空间。如果tab是分隔符,则输入 \ t。 通常,tab将是sql查询结果的定界符。
  • 注意:表的开始标记为 InterfaceStats 为 <-table InterfaceStats starts-> ,结束标记为 <-table InterfaceStats结尾-> 。此外,表的第一行应包含属性名称。属性名称或列名称也应使用与分隔数据行相同的分隔符分隔,并指定为列分隔符。在这种情况下,它们是名称,IP,状态,输入和输出。开始标签和结束标签之间的其余行应包含实际数据。确保表的定界符是唯一的,并且应将其指定为列定界符。
  • 唯一列是属性,它不会在行中重复,并通过该值标识行。这是里 IP

示例输出

DiskStatus=Up
No.ofProcess=1
DiskErrors=0

<--table InterfaceStats starts--> 
Name IP In Out
eth0 192.168.1.1 123451 234567
eth1 192.168.1.2 345633 453267
<--table InterfaceStats ends-->

监控参数

 通过点击监视器 选项卡,转到监视器类别视图。点击 自定义监视器 表下的脚本监视器   。显示的是分布在三个选项卡中的脚本监视器批量配置视图:

  • 可用性 标签,提供过去24小时或30天的可用性历史记录。
  • 性能 选项卡提供了过去24小时或30天的健康状况和事件。
  • 列表视图 使您可以执行 批量管理配置。

覆盖脚本的可用性和响应时间

如果要使用输出文件中的定义值覆盖自定义脚本测得的响应时间,此选项将很有用。Applications Manager在输出文件中查找少量保留的关键字,如果匹配,则它将替换相应的属性。

例如,如果脚本输出如下所示,

script_availability=1 (Allowed values are 0 or 1. "0" refers to success. "1" refers to failure.)
script_message=Server is not running.
script_responsetime=10

然后,在解析输出文件时,将获取script_availability值并基于此值计算可用性。响应时间也是如此。

例子:

标量用例示例

假设您要监控test-solaris计算机中/ home / test-solaris / 下 的脚本<  filesystem.sh> 。该脚本的输出将转储到 同一目录下的output.txt文件中。output.txt的格式  如下所示:SystemTemperature = 37  TimeSinceLastReboot = 30  TopPaginApp = sendmail IOReads = 1050



SystemTemperature=37 
TimeSinceLastReboot=30 
TopPaginApp=sendmail
IOReads=1050

设置脚本监视器:

  • 登录到Applications Manager Web客户端。
  • 点击新建监视器。在组合框中,选择脚本监视器
  • 对于显示名称,请提供一些名称。例如文件系统
  • 选择要监控的脚本是存在于 本地服务器 还是 远程服务器中。如果脚本位于远程服务器中,请确保将脚本放入远程服务器中。
  • 如果它是本地服务器/远程服务器,请提供要监控的脚本的绝对路径(/home/test-solaris/filesystem.sh),以及应该从中执行脚本的目录的绝对路径(/ home / test -solaris /)。
  • 在输出设置下,给 输出文件名 (/home/test-solaris/output.txt)加上绝对路径。这是转储脚本输出的文件。
  • 输入非数值 和 数值 属性的名称 。

数字区域中,添加

SystemTemperature
TimeSinceLastReboot
IOReads

字符串属性文本区域中,添加:

TopPaginApp

  • 输入 在输出文件中使用的定界符(=)的值 。默认情况下,它是 =。如果您未指定分隔符,则将'space'视为分隔符。
  • 指定其他 参数 (如果需要传递给脚本)。例如,主机名80 http
  • 设置 轮询间隔。 默认是5分钟
  •  以秒为单位指定 超时值。该值可以是脚本执行所需的最长时间。
  • 在Linux中,指定 执行脚本的 方式。默认情况下,它是 sh。
  • 如果脚本在 远程服务器中,请从列表中选择主机名
  • 如果远程服务器是新主机,请选择 新建主机,然后输入服务器的 主机名/ IP地址 (test-solaris)。选择监控方式 -Telnet,SSHPowershell。(Telnet)
  • 输入服务器的 用户名(测试)和 密码(测试)。
  • 输入 端口 号-默认Telnet端口号:23,SSH:22
  • 指定命令提示符值,该值是命令提示符中的最后一个字符。默认值为$,可能的值为>,#等。
  • 输入所有值后,点击 添加监视器

应该显示成功消息。点击 监视器详细信息 > 脚本监视器, 然后转到创建脚本以查看详细信息。

注意:Applications Manager使用ANSI或UTF-8编码。因此,建议您在将输出写入文件时使用相同的格式。

示例表用例

假设您要监控test-solaris计算机中/ home / test-solaris /  下 的脚本 <prustat.sh>。该脚本的输出将转储到  同一目录下的output.txt文件中。output.txt的格式  如下所示

<--table prustat starts-->
PID CPU Mem Disk Net COMM
7176 0.88 0.70 0.00 0.00 dtrace
7141 0.00 0.43 0.00 0.00 sshd
7144 0.11 0.24 0.00 0.00 sshd
3 0.34 0.00 0.00 0.00 fsflush
7153 0.03 0.19 0.00 0.00 bash
99 0.00 0.22 0.00 0.00 nscd
7146 0.00 0.19 0.00 0.00 bash
52 0.00 0.17 0.00 0.00 vxconfigd
7175 0.07 0.09 0.00 0.00 sh
98 0.00 0.16 0.00 0.00 kcfd
<--table prustat ends-->

注意:表头<-table prustat开始->。这是强制性的,并且应遵循与上述相同的格式。在此, prustat应替换为下面说明的表名

设置脚本监视器

  • 遵循与标量相同的说明,直到第6点
  • 选择输出文件中的表复选框
  • 为表名提供一些名称(注意)。请注意,输出文件中的表标题(<-table prustat starts->)中应该包含相同的内容。
  • 对于数字属性区域,在脚本输出中提供数字的列名称:CPU,内存,磁盘,网络
  • 对于字符串属性,请在脚本输出中提供非数字的列名:PID,COM​​M
  • 为唯一列提供可以标识行数据的列名称。可以是单个值或多个值:PID,COM​​M
  • 对于列定界符,请提供列分隔符。默认值为空格。
  • 如果您有输出多个表的脚本,则可以选择更多并配置值。
  • 输入所有值后,点击添加监视器
您可以使用脚本监视器来监控SNMP OID

请查看以下创建脚本监视器的步骤,

  • / opt / ManageEngine / AppManager_Home / 目录下创建一个脚本文件(例如script.sh) 
  • 编辑该文件,然后在该文件中输入以下内容: 
    snmpwalk -v 1 -c public app-w2k1 CPQHLTH-MIB::cpqHeFltTolPowerSupplyRedundant.0.1| awk '{ y = $1; x = $4 ; gsub(/[a-zA-Z()]/, "", x)} {print y " = " x}'>> output.txt 
    snmpwalk -v 1 -c public app-w2k1 CPQHLTH-MIB::cpqHeFltTolPowerSupplyRedundant.0.2 | awk '{ y = $1; x = $4 ; gsub(/[a-zA-Z()]/, "", x)} {print y " = " x}' >> output.txt
  • 点击新建监视器,然后选择脚本监视器。然后使用以下参数创建新的监视器:
    脚本监视器  </opt/ManageEngine/AppManager_Home/script.sh>
    应从中执行脚本的目录</opt/ManageEngine/AppManager_Home/>
    在输出设置下的输出文件  </opt/ManageEngine/AppManager_Home/output.txt>
    数值属性    <CPQHLTH-MIB::cpqHeFltTolPowerSupplyRedundant.0.1>
    <CPQHLTH-MIB::cpqHeFltTolPowerSupplyRedundant.0.2>
  • 使用默认参数配置其余属性。

注意:如果属性没有任何数据,则脚本返回 N.D,其中 ND表示无数据。

REST API获取主机名

此API提供给定脚本监视器的主机名。

语法

http://[Host]:[Port]/AppManager/json/GetRemoteHost?apikey=[APIKEY]&resourceid=[RESOURCEID]

请求参数

执行此API请求所涉及的参数包括:

字段 描述
apikey 使用  管理标签中的生成API密钥选项生成的密钥
resourceid 需要轮询的监视器的resourceid。

示例请求

http://app-windows:9090/AppManager/json/GetRemoteHost?apikey=095cb3835ff015b01a3b3a6c4ab2c38a&resourceid=10000293

示例响应

{"response":{"result":[{"hostname":"app-w7-64-8"}],"uri":"/AppManager/json/GetRemoteHost"},"response-code":"4000"}

自定义监视器类型

通过Applications Manager中的自定义监视器类型,您可以将监视器类型与内部脚本相关联,以监控自己的应用程序。 除了默认可用的监视器类型之外,您还可以定义自己的监视器类型。 了解更多。