文章
· 一月 12, 2023 阅读大约需 10 分钟

IRIS, Caché监控指导 - 诊断报告和性能报告

InterSystems公司的技术支持中心WRC(World Response Center)提供的服务包括故障报修,升级和数据迁移支持等等。当客户报告了系统故障或性能问题给WRC时, 会被要求收集以下的两份报告,以了解系统的运行情况和性能表现,它们是:诊断报告(Diagnostic Report)和系统性能报告

诊断报告(Diagnostic Report)

有关诊断报告,您需要知道:

  1. 诊断报告是当前系统的运行状况的数据收集。
  2. 是给InterSystems技术支持工程师的,维护人员基本不需要读它。
  3. 当出现紧急故障需要重启系统时,先做一次诊断报告的收集,会对WRC在故障过后分析故障原因提供极大的便利。

报告收集的步骤

进入管理门户页面,“系统管理>诊断报告”(System Operation > Diagnostic Reports),点击运行

  • 报告收集通常需要5-10分钟

  • 执行开始后屏幕会出现提示:诊断报告在…时间运行.报告将储存在…目录中。成功后可以在“系统管理>任务管理器>任务历史“看到记录收集成功的记录。

  • 在运行前,您可以选择报告存放的位置(Diectory for archived reports).

    • 如果不填写,默认报告保存的目录是install-dir\mgr

      ⚠️ :收集报告由内部用户irisuser执行,所以您选择的存放目录要有irisuser的读写权限。如果没有,点击“运行”时您并不能得到 提示错误,需要到“系统管理>任务管理器>任务历史“, 才能发现其实报告收集的任务没有执行。

  • 如果有公网连接,可以配置邮件信息,报告会直接发送给WRC

  • 如果开设了WRC工单,请输入WRC工单号码

  • 万一您已经无法登录管理门户,还是有紧急的故障要收集诊断报告,您需要在Terminal执行命令收集诊断报告(附录1)

报告的内容细节

诊断报告是一个HTML文件,名字是license中您的机构名称+时间, 比如这样:MyCompany202301051144.html

请记住2点:

  1. 收集的数据分基本信息(Basic information)和高级信息(Advanced Information)。对于维护人员,基本信息可以在操作维护的各个页面上查看,没必要去读报告。而高级信息,不要求维护人员读懂或者分析内容。

    具体内容如果如下,您可以选择跳过,或者从文档中了解更多的内容:在线文档:Caché的诊断报告内容, 在线文档:IRIS的诊断报告内容

    报告的内容是系统当前的运行状态,主要包括:

    • 配置信息:

    主要有服务器硬件信息,操作系统信息,许可证信息,实例的配置情况(CPF文件),数据库的配置,bin目录下的文件等等

    • 当前系统的基本运行情况

    • 数据库大小,占用的百分比

    • Journal的信息
    • 许可证的使用情况
    • 安全设置,审计(Audit)日志
    • 网络的状态。比如在Linux系统,其实是执行 netstat -an 的输出结果
    • 进程的状态
    • 内存的状态, cstat, core dump等等
    • GloStat ..., 不一一罗列
  2. cconsole.log,或者messages.log 不包含在诊断报告中。通常情况下, 您需要把这个日志文件和诊断报告一起提交WRC

问题和回答

Q: 需要定期做诊断报告吗?
A: 定期做系统健康检查吧,里面包括了诊断报告

Q: 要创建定时任务做诊断报告吗?
A: 没必要。除非您要指定一个时间,比如要了解凌晨1AM的系统运行状况。

性能报告(SystemPerformance Report)

有关性能报告,您需要了解:

  • 收集的数据包括操作系统的性能指标,Caché的设置,Caché性能指标等等。Caché性能指标大多数是每秒平均值。

  • 报告收集

    • Windows服务器:在Termial执行收集命令。

    • Linux/Unix服务器:除了Terminal执行收集命令外,可以在管理门户设置定时任务(Task)执行。

    为什么Windows服务器不能使用定时任务:

    性能报告的收集中会使用Windows系统的Perform.exe,也就是Windows系统性能监视程序。从用户管理门户设置Task, 或者使用当前非管理员权限的用户打开Terminal收集性能报告,会因权限不足导致内部调用Windows Perfom的失败,也就无法得倒操作系统的性能指标。

  • 因为只是将系统默认收集的指标打包归档,所以它对系统性能影响很小。可以在任何时间执行。

  • 即使没有故障要处理,定期的收集性能报告也是InterSystems推荐的。定期的报告保留了一个系统正常运行时的性能基线,便于今后的性能故障的原因分析,以及了解资源耗费情况的趋势。

如果操作中需要了解更多的内容,请参考在线文档:Monitoring Performance Using ^SystemPerformance(for IRIS), Monitoring Performance Using ^pButtons(for Caché)。

在Terminal收集性能报告

Windows环境

  1. 打开一个以管理员权限运行的Windows命令窗口。一般是找到CMD, 右键, “以管理员身份运行“。

  2. 输入命令进入Caché或者IRIS终端。

  • Caché: `
  • IRIS : iris console instanceName 或者 iris terminal instanceName
  1. 在%sys命名空间执行以下命令Routine:
  • Caché: do ^pButtons (见下面的例子)

  • IRIS : do ^SystemPerfromance

    ```zsh
    %SYS>do ^pButtons
    Current log directory: c:\intersystems\hsap\mgr\/intersystems\
    Windows Perfmon data will be left in raw format.
    Available profiles:
    1 12hours - 12 hour run sampling every 10 seconds
    2 24hours - 24 hour run sampling every 10 seconds
    3 30mins - 30 minute run sampling every 1 second
    4 4hours - 4 hour run sampling every 5 seconds
    5 8hours - 8 hour run sampling every 10 seconds
    6 test - A 5 minute TEST run sampling every 30 seconds

    select profile number to run: 2
    Collection of this sample data will be available in 86520 seconds.
    The runid for this data is 20200123_142501_24hours.

    %SYS>do Collect^pButtons
    Current Performance runs:
    20200123_142501_24hours ready in 24 hours 1 minute 48 seconds
    nothing available to collect at the moment.
    ```

do Collect^pButtons命令显示程序执行的状态。这是一个24小时的收集任务,显示的执行时间“ready in 24 hours 1 minute 48 seconds”比24小时略长,多出的2分钟用于^pButtons将整理日志并将数据转换为html格式。

Linux/Unix环境

进入iris terminal并执行收集命令do ^pButtons或者do ^SystemPerformance , 以下是在

$ iris session iris
Node: af34ddc4655b, Instance: IRIS
USER>zn "%sys"
%SYS>do ^SystemPerformance
Current log directory: /usr/irissys/mgr/
Available profiles:
     1  12hours     - 12 hour run sampling every 10 seconds
     2  24hours     - 24 hour run sampling every 10 seconds
     3  30mins      - 30 minute run sampling every 1 second
     4  4hours      - 4 hour run sampling every 5 seconds
     5  8hours      - 8 hour run sampling every 10 seconds
     6  test        - A 5 minute TEST run sampling every 30 seconds

Select profile number to run:

管理页面创建任务收集性能报告

对于Linux/Unix系统上安装的IRIS或者Caché, 到管理门户的“系统操作>任务管理器>新任务“,创建的新任务,

image

选项中,命名空间为“%SYS", 任务类型为”运行传统任务”(RunLegacyTask), 执行代码::

  • Caché: do run^pButtons(“ProfileName”)
  • IRIS: do run^SystemPerformance(“ProfileName”)

ProfileName也就是收集数据的时间长度, Profile定义数据采样的时间长度和频率,选项为:30mins, 4hours, 8hours, 12hours, 24hours, test。

  • 24hours: 最常用。任务执行的起始时间无所谓。如果设为零点,这样最后得到的数据图横轴是0点到24点,讨好细节控。

  • test: 多用于24小时的收集工作前的预操作,查看5分钟的收集数据结果。

其他有关报告收集的注意事项

  1. 多个收集任务可并行。

    比如为了分析某个性能问题, 客户可以从早上9点执行两个收集任务,一个4小时的任务收集早晨业务繁忙时段的数据,一个24小时的任务收集全天的数据。

  2. 默认报告保存位置是"<安装目录>/mgr"文件夹。

    一个24小时报告的尺寸通常在10MB - 100MB。如果要保留的报告很多,可以考虑执行命令修改保存目录(注意确保Caché具有该目录的写权限)。
    %SYS>do setlogdir^pButtons("/somewhere_with_lots_of_space/perflogs/")

  3. 还可以创建另一个定时任务,清除历史报告,只保留一段时间的。

  4. 在一个长的报告收集过程中,可以使用Preview^SystemPerformance命令在[不中断收集的情况下,读取已经收集的性能报告的数据。如果需要, 请阅读在线文档中生成报告的部分

  5. 如果可以要收集整个商业周期,比如一周或一个月的数据,需要创建新性能采样profile(附录2)

  6. 最后, 有一些内部的开关可以设置^pButtons采集更多的数据,比如硬盘访问的更详细的记录。通常这样的操作可能要消耗大量资源,请在WRC指导上使用。

性能报告的内容

性能报告是一个html文件, 默认的文件名为服务器,实例名称, 时间的组合,比如bjse01_IRIS_20220628_103554_30mins.html

内容主要为:

  • 配置, cpf文件,license等等
  • 系统级别问题诊断,比如系统hang, 网络问题,性能问题等。(有兴趣可以去在线文档了解“cstat"或者“irisstat")
  • Caché,IRIS性能表现的采样, 比如Global的读写速度, Rdration等指标,有兴趣可以去在线文档了解“mgstat')
  • 操作系统的性能数据
    • Windows Performance Monitor
    • Linux Info, ps, sar, vmstat...

具体内容请阅读: InterSystems IRIS Performance Data Report for Microsoft Windows Platforms , InterSystems IRIS Performance Data Report for Linux Platforms

性能报告内容的展现

性能报告是一个html文件。内容中的简单的数据,可以直观的在html中阅读, 但表格数据,比如cpu, 内存使用,IO, Global访问等等, 展现,或者说画图工具是有必要的。

如果维护人员或用户想阅读性能报告,可以考虑以下工具:

性能报告数据转csv : 这是一个windows PowerShell的程序, 方便使用EXCEL展现性能数据。

YASPE : 作者是Murrayo Oldfield,开源的工具,代码是python, 提供docker image下载。操作简单。数据可以生成图表,像下面的样子,而且可以zoom in/out。

example

WRC内部工具:如果您有了一个WRC工单,并且就当前问题提交了性能报告。您可以请你的技术支持提供一个报告中数据图表呈现。WRC问题有生成图表的工具,但仅供内部使用。

附录

万一您已经无法登录管理门户,还是有紧急的故障要收集诊断报告,您需要在Terminal操作。

这个操作命令叫Buttons. 据说,名字的出处是最初开发者任务收集报告应该简单的像“按一个按钮”,所以后面开发的性能报告,干脆就被称为pButtons, p是performance的字头。因为被使用的可能性太小,iris的文档中其实已经找不到Buttons的内容。下面的步骤只是简单的给您一个印象。如果有一天不幸您非要用它,WRC会详细的指导您。

USER>zn "%sys"
%SYS>do ^Buttons
(以下步骤省略)... 

执行^Buttons可以选择收集某一个命名空间的ensemble production的信息。如果有需要,请按WRC的要求操作。

Profile定义收集数据的时长和频率, 比如24hours的profile是每10秒采样一次运行24小时。如果可以希望收集其他时间长度的数据,或者减小采样频率以减小结果文件的大小,可以考虑自己定制Profile。比如下面的my_24hours_30sec:

//创建24小时配置文件,30秒采样间隔。30sec*2880=1440mins=24hours
%SYS>write $$addprofile^pButtons("My_24hours_30sec","24 hours 30 sec interval",30,2880)
%SYS>do ^pButtons
Current log directory: /db/backup/benchout/pButtonsOut/
Available profiles:
1  12hours     - 12 hour run sampling every 10 seconds
2  24hours     - 24 hour run sampling every 10 seconds
3  30mins      - 30 minute run sampling every 1 second
4  4hours      - 4 hour run sampling every 5 seconds
5  8hours      - 8 hour run sampling every 10 seconds
6  My_24hours_30sec- 24 hours 30 sec interval
7  test        - A 5 minute TEST run sampling every 30 seconds

select profile number to run:
讨论 (0)1
登录或注册以继续