InterSystems IRIS 提供广泛的可配置安全选项,但许多开发人员主要使用角色和资源来保护整个表或例程。今天,我们将深入探讨。我们也可以分别确保单个列和行的安全,但这两种机制的操作方式截然不同。让我们从列开始。
列安全
为便于测试和演示,我们将保持表结构简洁明了。我们在 USER 名称空间中有一个名为 "Person "的表,其中包含 ID 列、出生日期列 (DOB)、名和姓。
InterSystems IRIS 提供广泛的可配置安全选项,但许多开发人员主要使用角色和资源来保护整个表或例程。今天,我们将深入探讨。我们也可以分别确保单个列和行的安全,但这两种机制的操作方式截然不同。让我们从列开始。
列安全
为便于测试和演示,我们将保持表结构简洁明了。我们在 USER 名称空间中有一个名为 "Person "的表,其中包含 ID 列、出生日期列 (DOB)、名和姓。
您检查了服务器,发现IRISTEMP增长过快。不必惊慌。让我们在存储空间耗尽之前调查一下这个问题。
在假设 IRISTEMP 是问题所在之前,让我们先检查一下它的实际大小。
在IRIS 终端运行以下命令:
%SYS>do ^%FREECNT出现提示时,输入
Database directory to show free space for (*=All)? /<your_iris_directory>/mgr/iristemp/如果输出结果显示可用空间非常小,则IRISTEMP 正在像拥挤的壁橱一样占满您的存储空间。但是,如果可用空间没有问题,但 IRISTEMP 数据库文件 (IRIS.DAT) 仍然很大(这可能就是你来这里的原因),这意味着临时数据已经被清理。在这种情况下,你的任务就是密切关注,按照下面的步骤在下一次行动中抓住它,并恢复宝贵的空间。
%SYS>do ^%GSIZEDirectory name: /<your_iris_dir>/mgr/iristemp/
All Globals? No => yes
33 items selected from
33 a在之前的帖子中,我展示了如何使用 pButtons 收集历史性能指标。 我首选 pButtons 是因为我知道它随每个数据平台实例(Ensemble、Caché、...)一起安装。 不过,还有其他方法可以实时收集、处理和显示 Caché 性能指标,以进行简单的监视,或进行更重要的并且复杂得多的运营分析和容量计划。 最常见的数据收集方法之一是使用 SNMP(简单网络管理协议)。
SNMP 是 Caché 向各种管理工具提供管理和监控信息的标准方式。 Caché 在线文档包含了 Caché 和 SNMP 之间接口的详细信息。 虽然 SNMP 应该可以直接与 Caché 配合工作,但仍有一些配置技巧和陷阱。 我经历了很多次错误的开始,并且在 InterSystems 其他同事的帮助下,才让 Caché 与操作系统 SNMP 主代理建立对话,所以我写了这篇帖子,希望您可以避免同样的痛苦。
在本帖中,我将介绍如何为 Red Hat Linux 上的 Caché 设置和配置 SNMP,您应该能够对其他 *nix 版本使用相同步骤。 我使用 Red Hat 写这篇文章是因为在 Linux 上进行设置更棘手一些;在 Windows 上,Caché 会自动安装一个 DLL 来与标准 Windows SNMP 服务连
^%IS 的更多功能^%IS 还可用于执行以下任务:
^%IS 实用程序时存在变量 IOP,则实用程序会自动尝试打开该设备,而不是请求设备。如果 ^%IS 不成功,则将变量 POP 设置为 1。Management Portal,可以配置不向用户请求任何设备信息的设备。^%IS Global 的结构^%IS 全局变量存储在 %SYS 命名空间中。它包含两个下标。第一个下标是在 Management Portal 中为设备配置的助记词名称。选择 System Administration、Configuration > Device Settings、IO Settings 以显示不同设备类型的默认助记词。第二个下标可以是 0 或 1。
节点 0 包含设备面板 Location 值:
^%IS(mnemonic,0) = Location
1 的内容节点 1 包含其他 Device panel 字段值,用插入符号 (^) 分隔:
^%IS(mnemonic,1) = Device #^Type^Subtype^Prompt code^not used
^Other Op一个实例上的最大命名空间数量是 2047. 但是,要使用这么大量的命名空间,你需要相应地配置好内存。
一个实例里可以创建的数据库的最大数量(包括远程数据库) 15998. 根据授权的类型,可能会有所限制。具体细节请参考以下文档。
Database Configuration [IRIS]
Database Configuration
在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
在第一篇文章中,我们介绍了 Git 基础知识、深度理解 Git 概念对现代软件开发至关重要的原因,以及如何使用 Git 开发软件。
在第二篇文章中,我们介绍了 GitLab 工作流 – 一个完整的软件生命周期流程,并介绍了持续交付。
在第三篇文章中,我们介绍了 GitLab 安装和配置以及将环境连接到 GitLab
在这篇文章中,我们将介绍编写 CD 配置。
首先,我们需要多个环境以及与之对应的分支:
| 环境 | 分支 | 交付 | 有权提交的角色 | 有权合并的角色 |
|---|---|---|---|---|
| 测试 | master | 自动 | 开发者、所有者 | 开发者、所有者 |
| 预生产 | preprod | 自动 | 无 | 所有者 |
| 生产 | prod | 半自动(按下按钮进行交付) | 无 | 所有者 |
作为示例,我们将使用 GitLab 流程开发一个新功能,并使用 GitLab CD 进行交付。

在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
在上一篇文章中,我们介绍了 Git 基础知识、深度理解 Git 概念对现代软件开发至关重要的原因,以及如何使用 Git 开发软件。 我们的侧重点仍是软件开发的实现部分,但本部分会介绍:
大家都搭建了测试环境。
有些人很幸运,可以在完全独立的环境中运行生产。
-- 佚名
.
在这一系列文章中,我想向大家介绍并探讨使用 InterSystems 技术和 GitLab 进行软件开发可以采用的几种方式。 我将介绍以下主题:
第一部分将介绍现代软件开发的基础 – Git 版本控制系统和各种 Git 流程。
出于实际原因,可能需要在 Linux 服务器重启后自动启动 IRIS 实例。
下面是在 Linux 服务器重启时通过 systemd 自动启动 IRIS 的步骤:
1. 在 /etc/systemd/system/iris.service 中创建一个 iris.service 文件,其中包含以下信息
[Unit]
Description=InterSystems IRIS Data Platform
After=network.target
[Service]
Type=forking
User=irisusr
ExecStart=/usr/bin/iris start iris
ExecStop=/usr/bin/iris stop iris quietly
Restart=on-failure
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target注意:User应该填入IRIS实例的所有者。
2. 重新加载 systemd 配置管理器
sudo systemctl daemon-reload3. 启用IRIS服务,使其自动启动
sudo systemctl enable iris
激活后将创建软链接,自动启动 IRIS:
Synchronizing state o转发自Eduard Lebedyu的原文
在本系列文章中,我将介绍并讨论使用 InterSystems 技术和 GitLab 进行软件开发的几种可行方法。我将涉及以下主题:
ISC 开发者们,我向你们致敬 👑。
如果您想在InterSystems 产品启动时执行一个操作系统可执行文件,命令或者程序,可以在SYSTEM^%ZSTART routine里面写明流程 ( %ZSTART routine在 %SYS 命名空间里面创建).
在 SYSTEM^%ZSTART 里面写代码之前, 请确保他可以在任何情况下能正常工作
如果 ^%ZSTART routine 写的不对,或者没有响应或者发生错误,InterSystems 产品可能会无法启动。
更多信息,请参考一下文档。
About writing %ZSTART and %ZSTOP routines [IRIS]
About writing %ZSTART and %ZSTOP routines
有两篇很棒的有关删除消息关联的孤儿记录的内容以及如何处理孤儿的问题的WRC议最佳实践文章Ensemble Orphaned Messages | InterSystems Developer Community | Best DeleteHelper - A Class to Help with Deleting Referenced Persistent Classes (intersystems.com)
本文并不是要取代 Intersystems 专业人员撰写的这些文章,而是要在此基础上介绍我们如何利用这些信息和其他讨论(包括我们实际清理这些数据的方法)来帮助我们的数据库变得更加紧凑。
我们的备份越来越多。年初的时候,我们遇到过一台服务器被强制故障的情况,需要进行还原。由于数据库庞大,即使复制这个数据库也需要很长时间,更不用说还原重建shadow服务器了。因此,我们不得不决定最终解决这一增长问题。最初的原因已经确定
理解你的数据您在数据库中存储了哪些数据?您是否有必
.png)
%SYS.Journal.Record 类有一个查询(query), List, 可以列出Journal文件中记录的数据修改历史。例如,要查询谁对global节点^QP(1,2)做过修改,可以使用如下代码。它查询Journal文件(输入参数pFilePath)中的global节点(输入参数pSearchGlobal)的操作:
ClassMethod SearchGlobal(pSearchGlobal = "^QP(1,2)", pFilePath = "C:\InterSystems\IRISHealth\mgr\journal\20220525.003")
{
Set tRS = ##class(%ResultSet).%New("%SYS.Journal.Record:List")
Set tSC = tRS.Execute(pFilePath)
While (tRS.Next())
{
Set address = tRS.Data("Address")
Set globalNode = tRS.Data("GlobalNode")
Set newValue = tRS.Data("NewValue")
Set type = tRS.Data("TypeName")
Set processid = tRS.Data("如果系统24小时没有停止,旧的日志文件将根据“日志文件删除设置”在0:30删除。
导致日志文件保留的时间早于“日志文件删除设置”的一个可能原因是存在仍处于开放状态的事务。
在这种情况下,您将能够通过搜索执行事务的进程并完成事务来删除日志文件。
下面的示例检查是否存在未完成的事务,如果存在,则输出目标文件名和日志记录信息。
(示例可以从这里下载
*注意*如果要检查的日志文件较大或日志文件较多,则执行需要时间,因此请联系我们的支持中心。
Class ISJ.JournalUtility { ClassMethod GetOpenTransaction() As%Status { set status= $$$OK#dim ex As%Exception.AbstractException#dim rset As%ResultSettry { //current journal file write !, "Current journal file name:" , ##class ( %SYS.Journal.System ).GetCurrentFileName(),!! // Open transaction file // Get info about journals recorded in WIJ $$$Th作为针对数据导入处理性能和错误(锁定表已满)的衡量标准,可能需要调整常规内存堆 (gmheap) 和锁定表大小 (locksiz) 参数。
事实上,您可以使用终端和管理门户来检查当前分配了多少通用内存堆。
★终端用
// 一般メモリヒープサマリUSER> w $system .Config.SharedMemoryHeap.GetUsageSummary() 4992226 , 6029312 , 59441152通用内存堆摘要以使用量、分配量和配置量(字节)的形式显示返回值。
使用量是分配的锁表、进程表等实际使用的量。
分配量是gmheap区域中锁表、进程表等分配的量。
配置量为gmheap(KB)+IRIS系统附加区,即当前最大可用量(实际通用内存堆区值)。
如上所述,配置数量与配置参数 gmheap 的独立值不匹配。
这是因为IRIS自动将内部使用的内存区域添加到配置参数gmheap中来配置通用内存堆区域。详情请参阅下面的文档。
您可以使用以下命令获取锁表的使用情况:
返回值显示为可用量、用户可用量和已用量(字节)。详情请参阅这篇文章。
%SYS > w##class (SYS. Lock ).GetLockSpaceInfo() 16772624 , 16764624 , 4592
★用于管理门户
您可以从“系统操作”>“系统使用情况”
.png)
最近在多家现场都遇到了备机长时间宕机导致镜像日志写满磁盘的问题。在这里我将对这个问题发生的原因、发生后的处理、和如何预防这类问题发生进行一些讨论。
问题的发生一般始于一些原因导致的主机(如,01)宕机,进而触发镜像的主备切换。切换后备机(如,02)成为主机,并无缝接管业务。由于业务不受影响,如果不注意监控环境的话,很可能现场技术人员长时间都注意不到镜像的备机(01)是宕机状态。
备机长时间宕机会导致如下问题:
1. 这种情况下如果主机(02)再次遇到问题宕机,镜像将无法发挥其高可用性,无法保持业务稳定运行。
2. 主机(02)产生的镜像日志将无法同步到备机(01)。未同步的日志将一直被保存在主机(02)上不被删除。长此以往镜像日志磁盘将被写满,同样导致主机(02)宕机。
问题发现时切记不要手动从文件夹直接删除主机(02)上的镜像日志。未同步的日志一旦手动删除,镜像将无法自动同步,需要重做主备镜像。
问题发现时如果主机(02)还未宕机,此时尝试解决备机(01)问题,启动备机(01),等待镜像自动同步即可。同步完成之后镜像日志将可以被定时任务定时清除。如果遇到较为复杂的情况,现场请第一时间联系您的软件供应商,软件供应商将协同系联软件全球响应中心一起来解决您遇到的具体问题。
为了避免以上的问题发生,现场运维需要对镜像的状态和磁盘的状态配置监控。
镜像的状态可以通过配置产品
生产环境下我们部署和使用IRiS引擎,往往采用其主备镜像模式,虽然此架构简单但是往往我们需要持续在电脑前点击或者操作1到2小时,如果中间有个环节出现了问题有时我们可能需要部署一天.
接下来我分享的是IRIS自带的一个功能帮助我们部署---manifest-安装清单。他的主要使用方式是提前通过配置约定好我们期望的安装设置,在安装的过程中由IRIS程序直接执行脚本,简化IRIS集群的部署,减少运维人员的操作步骤,让我们有更多的精力放在实际项目和业务上。
%Installer 实用程序允许您定义描述和配置特定 InterSystems IRIS 配置的安装清单,而不是分步安装过程。为此,我们需要创建一个类,其中包含描述所需配置的 XData 块,使用包含通常在安装期间提供的信息(超级服务器端口、操作系统等)的变量。我们还可以在类中包含一个使用 XData 块生成代码以配置实例的方法。本文提供了安装清单的示例,您可以复制和粘贴这个示例尝试使用。
定义清单后,可以在安装期间、从终端会话或代码调用它。注意:清单必须在 %SYS 命名空间中运行。
此成品展示的是一个一键安装主、备、仲裁的机器命令,此方法的使用可以便捷快速的安装主备环境,其基本每一行都有注释其说明:
Include %occInclude/// Cla※如果您想比较使用Mirror、Shadow或其他机制复制的数据库,请使用此方法。
您可以使用 DATACHECK 实用程序来比较Global。请参阅下面的文档。
DataCheck 概述 [IRIS]
***
Routines比较使用系统例程 %RCMP 或管理门户。
以下是如何在管理门户中使用它。
.png)
本文讨论了在使用或维护InterSystems产品中遇到问题时,试图确定问题时可能用到的思路和工具。
确定问题发生的地点和时间
审查日志中的警告、错误和警报
以下日志可能包含有关该问题的有用信息。可以尝试在以下日志中寻找问题开始前后的警告或报错。
检查实例是否可以访问足够的存储空间
检查CPU活动
上篇文章IRIS, Caché监控指导 - 警告和告警 发出后收到要求介绍一下发送SNMP通知的具体操作,这里介绍一下。
我省去了SNMP的原理,这个有需要的可以网上查找。这里只做一个配置的操作:测试怎么从一个Windows上安装的IRIS实例发送IRIS Alert给另一台Linux服务器。
因为安全原因,Windows 10不再默认安装中启动SNMP,用户需要手工安装SNMP启动服务。以下两个文章是古老的Window 2003和新的Windows 10中配置SNMP的安装,给各位做个参考。
简单的总结一下:Windows系统中有两个服务:

++ 更新:2018 年 8 月 1 日
使用内置于 Caché 数据库镜像的 InterSystems 虚拟 IP (VIP) 地址有一定的局限性。特别是,它只能在镜像成员驻留在同一网络子网时使用。当使用多个数据中心时,由于增加了网络复杂性( 此处有更详细的讨论),网络子网通常不会“延伸”到物理数据中心之外。出于类似的原因,当数据库托管在云端时,虚拟 IP 通常无法使用。
负载均衡器(物理或虚拟)等网络流量管理设备可用于实现相同级别的透明度,为客户端应用程序或设备提供单一地址。网络流量管理器自动将客户端重定向到当前镜像主服务器的真实 IP 地址。自动化旨在满足灾难后 HA 故障转移和 DR 升级的需求。
Caché, IRIS在系统产生了最严重的问题时会产生错误信息并通知客户,但这并不足够。一是客户需要更多更灵活的通知消息,二是客户通常会有第3方的监控系统,因此得到Cache, IRIS的监控指标是必须的。
在所有的指标中,用户最关心的是以下几类:
除此之外,第3方监控系统还需要获得Caché的一些系统信息,比如版本,instance名字等等。
有以下几个获得指标的方法
Caché的系统仪表板显示的数据包括:系统性能;系统运行状态 (运行时间,上一次备份,数据库,Journal状况等; 事务和进程情况;软件许可使用情况;任务,ECP等,还有就是错误和警告的数量。
系统仪表板包含4个子面板:Global和Routine统计数据;ECP统计数据;磁盘和缓冲器统计数据;系统资源统计数据。(IRIS和Caché稍有不同,缺少了“磁盘和缓冲器统计数据”) 。它们分别对应主仪表板中的相应模块,给出了更详细的数据。
Monitoring Web Service默认随系统的启动而开启,远程用户或者第3方系统可以访问该服务得到所以的系统监控指标,也就是系统仪表板上的所

当系统发生严重危机,一般错误,以及其他需要管理员关注的其他事件发生时, 管理员必须及时的收到系统发出的警告信息。
上篇文章中介绍了控制台日志。这是个文本文件,包含几乎所有的系统级别的错误信息,并且有严重级别的标识,那么使用工具来监控控制台日志文件,并给管理员发送通知是可行的方案吗?
当然。实际上,有些用户正是这样来管理Caceh'/IRIS的。他们有自己熟悉的监控工具,实时读取控制台日志,分析内容,并完成警告通知的发送。
这篇文章我来介绍的是Cache'/IRIS内置的处理警告的机制和配置方法。 通过把严重的错误和事件写入另一个文本文件alert.log,并配置邮件,SNMP, API接口发送通知,可以基本的实现caceh'/IRIS系统的警告通知工作。
控制台日志中最严重的两个级别(级别2和3), 的记录会被写入另一个文本文件,名字是Alert.log。 默认存储于\installDir\mgr\路径。
在操作门户中“系统>系统日志>控制台日志” ,你会发现 Alerts.log的内容会以红色的字体显示在最上方。比如下图中有2个严重级别的Alert。
另外, 告警的条目数量会显示在系统仪表板的“错误和告警”模块中的‘严重告警’(Serious Alerts)栏。

注意,这里的数值只显示30分钟内非启动过程中的Alert条目数。比如上面例子中产生了一
** 2018 年 2 月 12 日修订
虽然本文是关于 InterSystems IRIS 的,但它也适用于 Caché、Ensemble 和 HealthShare 发行版。
介绍
内存以页为单位进行管理。 Linux 系统上的默认页面大小为 4KB。 Red Hat Enterprise Linux 6、SUSE Linux Enterprise Server 11 和 Oracle Linux 6 引入了一种根据系统配置提供 2MB 或 1GB 大小的增加页面大小的方法,称为 HugePages。
起初 HugePages 需要在启动时分配,如果管理或计算不当可能会导致资源浪费。因此,各种 Linux 发行版引入了默认启用 2.6.38 内核的Transparent HugePages。这是一种自动创建、管理和使用 HugePages 的方法。以前的内核版本也可能具有此功能,但可能未标记为 [always] 而是设置为 [madvise]。
Transparent Huge Pages (THP) 是一种 Linux 内存管理系统,它通过使用更大的内存页面来减少在具有大量内存的机器上进行Translation Lookaside Buffer (TLB) 查找的开销。然而,在当前的 Linux 版本中,THP 只能映射单个进程的堆栈空间。
InterSystems公司的技术支持中心WRC(World Response Center)提供的服务包括故障报修,升级和数据迁移支持等等。当客户报告了系统故障或性能问题给WRC时, 会被要求收集以下的两份报告,以了解系统的运行情况和性能表现,它们是:诊断报告(Diagnostic Report)和系统性能报告。
有关诊断报告,您需要知道:
进入管理门户页面,“系统管理>诊断报告”(System Operation > Diagnostic Reports),点击运行。
报告收集通常需要5-10分钟
执行开始后屏幕会出现提示:诊断报告在…时间运行.报告将储存在…目录中。成功后可以在“系统管理>任务管理器>任务历史“看到记录收集成功的记录。
在运行前,您可以选择报告存放的位置(Diectory for archived reports).
如果不填写,默认报告保存的目录是install-dir\mgr
⚠️ :收集报告由内部用户irisuser执行,所以您选
以下是我们应客户的要求拟定的Caché系统健康检查的建议。InterSystems的工程师们认为其中的项目足以了解客户当前的系统健康状况。
这些项目中有些,比如Buttons, pButtons报告是必须的,其他内容,尤其是问卷部分,越多回答对系统健康的了解也越清楚。InterSystems公司的技术支持中心WRC(World Response Center),在合适的条件下可以协助用户解读健康检查的结果。
在后面的内容中, 我会详细介绍这些检查的项目,比如报告的执行步骤,已经如何简单的发现问题。
检查的内容也适用于IRIS,仅仅是执行的步骤上有细微的区别,后面文章会详细说。
本健康检查只用于Caché系统本身的内容, 不包括Caché上使用的各种应用。
建议用户收集下列两部分数据和资料:
所有Caché实例服务器的网络架构图,包含所有的数据服务器,应用服务器,镜像服务器,灾备服务器。还应该包含网段的划分, 相关的Web服务器,负载均衡设备的部署等情况。以及一切客户认为和Caché工作相关的网络配置的情况。
Caché数据库使用的存储设备的信息, 不限于类型,大小,品牌等等任何可以帮助了解存储设备的信息。
所有数据库上一次的完整性检查报告。
所有Caché实例的
系统监控检查报告(Buttons)
24小时系统性能报告
本文章是一个系列,主要目的是介绍给IRIS,Caché的终端用户如何方便的监控您的系统。
InterSystems系统的监控很难吗?需要学习很多技术吗? 我的答案是还好。
关于Caché和IRIS监控,无论是那部分内容,在InterSystems的在线文档或者开发者论坛,其实都能找到相关的说明和方案。但问题是太多,太杂乱,没有一个“操作维护手册”的东西。结果是,如果您是一个新手的InterSystems产品的维护工程师或者管理员,您要花很多的时间在大量的文档里找答案。
还有一个问题是文档中很多章节的内容又太深,包含了一些开发人员才关心的内容,这是Caché或者IRIS的特性造成的,因为它首先是一个开发平台。结果是,对于管理员,很多文档的很不友好。
因此,我要写的这个文章的的目的是这样的:
简单。只介绍管理维护人员需要的内容。只介绍和监控相关的内容。其他比如备份恢复,扩容,修改配置等等基本不涉及。
易学。文章的期待读者是系统管理员,因此不需要您有编程能力或者InterSystems编程语言的基础。我系统对您的每个日常工作和关注的主题,给出最容易实现的操作步骤。
对读者的要求低,您只需要了解基本的Caché操作,包括
Caché的用户维护界面
基本的Caché命令的格式
让我们进入主题。有几个要点要先交代一下。
上线一个新的集成平台production或者组件是需要很多精力的,用户常常需要对每一个组件所满足的需求和所能提供的功能,使用到的协议,以及组件对系统资源的调用有深入细致的了解。在配置好一个production之后,您可能需要将这个production推送到测试或者正式环境,或者需要将一个写好的组件代码应用到不同的项目上。这些时候,production的导出功能可以方便您传输production或组件的配置和代码。
导出
需要导出production时,您可以移步到管理门户 - Interoperability - 相应的命名空间 - 列表 - Production 页面,选择您需要导出的production,再点击页面上的导出键进行导出。如下图1所示:
在弹出的对话框中,您可以选择在导出文件中您想包括的内容。如下图2所示:
您也可以通过管理门户 - Interoperability - 相应的命名空间 - 配置 - Production 页面,点击“Production 设置” - “操作”选项卡 - “导出”键进行导出。弹出的对话框同样如图2所示,会自动包括大部分production及其组件所需要的类。如果需要添加或更改导出的类,可以在此对话框进行操作。
如果您需要导出单个组件的代码和设置,可以在Production配置页面,选择您想导出的组件,点击“操作”
.png)