InterSystems:针对技术支持和DBMS互操作性管理的解决方案

这篇文章将介绍我每天都用的一款应用程序,用于在Intersystems IRIS平台上监控应用程序和集成解决方案,并且一旦有错误发生他可以很快定位该错误。

我在寻找Intersystems IRIS、Ensemble和Caché DBMS中对象变更日志记录的解决方案时,看到了一篇关于使用宏进行日志记录的好文章。受到这个想法的启发,我下载了这篇文章提到的项目,并针对一些特定需求进行了修改。最终的解决方案实现为创建了一个面板子类,%CSP.Util.Pane,它提供一个主窗口用于显示命令、“运行”按钮和启用的命令配置。我在寻找Intersystems IRISEnsembleCaché DBMS中对象变更日志记录的解决方案时,看到了一篇关于的好文章。受到这个想法的启发,我下载了这篇文章提到的项目,并针对一些特定需求进行了修改。最终的解决方案实现为创建了一个面板子类,%CSP.Util.Pane,它提供一个主窗口用于显示命令、“运行”按钮和启用的命令配置。

这款应用程序支持查看和编辑Global数组、执行查询(包括JDBC和ODBC)、将搜索结果以XLS文件压缩包的方式发送电子邮件、查看和编辑对象,以及几个用于系统协议的简单曲线图。

这款apptools-admin应用程序基于jQuery-UI、UiKit、chart.js和jsgrid.js开发。欢迎查看源代码。

安装

所有的安装方法都在repo中详细介绍了。但最简单的方法是使用zpm包管理器命令:

zpm "install apptools-admin"

[apptools-admin]        Reload START
[apptools-admin]        Reload SUCCESS
[apptools-admin]        Module object refreshed.
[apptools-admin]        Validate START
[apptools-admin]        Validate SUCCESS
[apptools-admin]        Compile START
[apptools-admin]        Compile SUCCESS
[apptools-admin]        Activate START
[apptools-admin]        Configure START

http://hp-msw:52773/apptools/apptools.core.LogInfo.cls
http://hp-msw:52773/apptools/apptools.Tabs.PanelUikitPermissMatrx.cls?autoload=Matrix
[apptools-admin]        Configure SUCCESS
[apptools-admin]        Activate SUCCESS

命令

在面板中,您可以运行实用程序、查看和编辑 Global 以及执行查询。每次启动都保存在命名空间右键菜单的历史记录中,方便查找并重复之前的启动。这里的“启动”指开始执行命令,而“命令”指我们在面板中输入的所有内容。这张截图显示了一个Global数组 ^%apptools.History 查看命令的示例。

我们知道,可以用Prometheus等流行的解决方案来自动进行错误检测和通知。但错误的严重程度往往可以肉眼判断。

我经常需要快速获取所有命名空间中的生产中的bug信息。

为此我实现了一个实用程序:

##class(apptools.core.Production).FindAndDrawAllErr

这样就可以每天请求搜索每个包含运行中产品的命名空间的错误,让您可以查看这些错误,快速进行肉眼检查。您可以像使用apptools面板中其他带 xec 前缀的实用程序一样运行这个程序。

 

所有有用的命令都可以被记录在Global扩展中,在此作用域右键菜单中,随时查找并重复。

 

Globals

这个apptools-admin应用程序主要用来处理Globals。可以倒序查看Globals,也可以对链接和数据添加过滤器。可以编辑或删除显示的备注。

 

您可以在Globals名称后输入 * 通配符来获取具有额外特征的Global列表。

第二个 * 会添加一个新字段“已分配MB”。

第三个会添加“已用MB”字段。此语法解析为两份报告的并集,报告一般都很长,星号将其分成多个方便处理的部分。

 

当您得到的Global列表是一份报告时(见上文截图),您可以通过活动链接查看Global本身。您还可以从管理门户以标准方式查看和编辑Global,点击许可字段中的 R W

debug项目时最常做的写入Gloabl是用于记录变量和对象的状态。对此我使用一个特殊的宏:

set $$$AppL("MSW","anyText")=$$$AppObJs(%request)

此例中,$$$AppL 生成一个链接,指向一个带 ^log 前缀的Global,以及索引值中的日期和时间。

$$$AppObJs 是对象序列化宏。

 

您可以在面板中查看协议Global,且对象以完全格式化的方式在窗口中显示。

查询

Globals一样常用的功能是查询。您可以输入一条命令语句来运行此功能。

例如,您可以执行一条SQL语句。

 

您还可以将结果保存在Global ^mtempSQLGN中。

  以后,保存在 Global 中的结果可以在面板中显示。

将报告转成Excel格式

标准管理门户中缺失的一项功能是,通过JDBCODBC对数据库执行查询,输出结果为XLS格式,并打包通过电子邮件发送文件。

要在应用程序中实现这一点,只需在执行命令前勾选“上传至Excel(Upload to Excel)”复选框。

这项功能为我的日常工作节省了大量时间,让我可以将现成的模块合并到新的应用程序和集成解决方案中。

 

为了启用这项功能,首先需要配置用于在服务器上创建文件的路径、用户凭证和邮件服务器。然后需要编辑Gloabl程序设置的节点,^%apptools.Setting

 

保存报告到Global

通常需要将报告执行结果保存到Global中。为此可以使用以下语句:

 函数
对于JDBC##class(apptools.core.sys).SqlToDSN
对于ODBC##class(apptools.core.sys).SaveGateway
对于SQL##class(apptools.core.sys).SaveSQL
对于Query##class(apptools.core.sys).SaveQuery

例如,使用 ##class(apptools.core.sys).SaveQuery 函数将查询结果 %SYSTEM.License:Counts 保存到Global ^mtempGN 中。

 

然后您可以用以下命令在面板中显示保存的内容:

result ^mtempGN("%SYSTEM.License:Counts", 0)

增强功能模块

还有哪些功能简化和自动化了我的工作呢?这些功能让我可以在生成查询字符串时执行自定义模块。我可以快速向报告中嵌入新功能——如:用于对数据进行额外操作的链接。让我们看几个例子。

我们使用以下函数在浏览器中显示查询结果:

##class(apptools.core.LogInfoPane).DrawSQL

 

让我们添加单词标记功能 ##class(apptools.core.LogInfo) MarkRed至第5个参数。

 

同样,您可以用其他特性来补充输出,例如:链接或工具提示。

这个解决方案中的Global编辑器是根据相同的原理实现的。

这是以表格形式输出Global和查询的函数列表:

 函数
对于global##class(apptools.core.LogInfoPane).DrawArray("^mtempSQLGN")
对于SQL##class(apptools.core.LogInfoPane).DrawSQL("select * From %SYS.ProcessQuery")
对于Query##class(apptools.core.LogInfoPane).DrawSQL("query %SYSTEM.License:Counts")
对于 global result##class(apptools.core.LogInfoPane).DrawSQL("result ^mtempSQLGN")

利用apptools.core.Parameter

这个链接将通过安装了apptools-admin 的实例的右键菜单,在浏览器中打开CSP应用程序:

http://localhost:52773/apptools/apptools.Form.Exp.cls?NSP=APP&SelClass=apptools.core.Parameter

或在面板中选择这个活动链接

 

这里会将一个CSP应用程序载入,用于编辑已存储类的实例,在这个例子中:

apptools.core.Parameter.

 

 

通过“表格浏览器”创建一个apptools.core.Parameter

如果您安装了apptools-admin的实例,则可通过右键菜单在浏览器中打开这个链接:

http://localhost:52773/apptools/apptools.Form.Exp.cls?panel=AccordionExp&NSP=APP

或在面板中选择这个活动链接

 

这个CSP应用程序将被载入,用于浏览和编辑已存储的类。

  简单CSP应用示例

如果您安装了apptools-admin的实例,则可在右键菜单中点选在浏览器中打开这个链接:

http://localhost:52773/apptools/apptools.Tabs.PanelSample.cls

或在面板中选择这个活动链接:

 

这个例子还展示了编辑类实例的功能 apptools.core.Parameter

  曲线图

为了将数据库的增长可视化,这个应用程序提供了一个页面,显示每月测量的数据库大小的曲线图。这个曲线图是根据IRIS file.log(对于Cachécconsole.log)中从当天往之前“扩展”的记录生成的。

这个程序遍历协议,查找数据库扩展记录,并从当前数据库大小中减去增量MB。这样就生成了数据库增长曲线图。

例如,下面这张截图显示了根据协议文件生成的InterSystems IRIS 中的事件曲线图。

  下面还有一个例子:根据系统协议 file.log (cconsole.log) 生成的系统事件时间表
  总结

本文讨论的这个应用程序的设计初衷是帮我执行我的日常任务。它包含的一些模块,您可以像搭积木一样,自定义您自己的管理员工具。如果能对您的工作有所帮助,我会很高兴。欢迎您将愿望和建议作为任务添加到项目中repo。本文讨论的这个应用程序的设计初衷是帮我执行我的日常任务。它包含的一些模块,您可以像搭积木一样,自定义您自己的管理员工具。如果能对您的工作有所帮助,我会很高兴。欢迎您将愿望和建议作为任务添加到项目中

查看原帖 由 @Sergey Mikhailenko 撰写Sergey Mikhailenko 撰写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值