文章
· 五月 4, 2023 阅读大约需 6 分钟

IRIS, Caché监控指导 - 警告和告警

当系统发生严重危机,一般错误,以及其他需要管理员关注的其他事件发生时, 管理员必须及时的收到系统发出的警告信息。

上篇文章中介绍了控制台日志。这是个文本文件,包含几乎所有的系统级别的错误信息,并且有严重级别的标识,那么使用工具来监控控制台日志文件,并给管理员发送通知是可行的方案吗?

当然。实际上,有些用户正是这样来管理Caceh'/IRIS的。他们有自己熟悉的监控工具,实时读取控制台日志,分析内容,并完成警告通知的发送。

这篇文章我来介绍的是Cache'/IRIS内置的处理警告的机制和配置方法。 通过把严重的错误和事件写入另一个文本文件alert.log,并配置邮件,SNMP, API接口发送通知,可以基本的实现caceh'/IRIS系统的警告通知工作。

Alerts.log

控制台日志中最严重的两个级别(级别2和3), 的记录会被写入另一个文本文件,名字是Alert.log。 默认存储于\installDir\mgr\路径。

  • 在操作门户中“系统>系统日志>控制台日志” ,你会发现 Alerts.log的内容会以红色的字体显示在最上方。比如下图中有2个严重级别的Alert。

另外, 告警的条目数量会显示在系统仪表板的“错误和告警”模块中的‘严重告警’(Serious Alerts)栏。

注意,这里的数值只显示30分钟内非启动过程中的Alert条目数。比如上面例子中产生了一条“Failed to allocate…”的告警,因为是启动过程中的记录,因此仪表板中的严重告警数值为1。而如果30分钟内不再发生 “Winter is coming”的告警,此数值会减为0.

关于alerts.log, 您还需要知道:

  • 每次系统重启该文件也会清除重置。
    • 对alerts.log的内容,用户可以使用系统工具^MONMGR配置发送告警邮件
    • 除了来自控制台日志,Alerts.log的记录还可以是来自其他来源

是的。底层的系统内核以及开发工具可以直接写告警信息到Alert.log, 而不通过控制台日志,应用监视器%Monitor.Adaptor就是这么一个开发工具,有些开发者使用它来向alert.log直接写入记录。

细心的读者可能注意到上面图中有个告警内容是“Winter is coming”,它是为了测试用以下命令产生的。

do ##class(%SYS.System).WriteToConsoleLog("winter is coming",,2)

这也是为什么要单独保留一个Alert日志文件,在设计者的想法里, alert.log不是只从控制台日志拿记录,它还可以有多个可能的来源。

可以把控制台日志中的“警示性错误(Warning)”写入Alert.log吗?

可以,但管理员必须清楚的知道这样会收到很多不严重的警示信息。通常这样做的理由是用户有自己的监控手段监控Alert.log这个文件,那么先把Warning写入Alert.log,随后用自己的方式去过滤,这是个合理的解决方案。

读取控制台日志到Alert.log的工具在早期版本中被称为Caché Monitor,这是个非常恼人的名字,好在新版本里改称为“Log Monitor”。默认的配置中,Log Monitor每10秒扫描一下控制台日志,将级别2,3的记录写入Alert.log。配置和修改log monitor使用终端工具^MONMGR,它可以修改写入错误的级别选择和采样的间隔(Monitor Interval)。

%SYS>do ^MONMGR

1) Start/Stop/Update MONITOR
2) Manage MONITOR Options
3) Exit

Option? 2 

1) Set Monitor Interval
2) Set Alert Level
3) Manage Email Options
4) Exit

Option? 2
Alert on Severity (1=warning,2=severe,3=fatal)? 2 => 

1) Set Monitor Interval
2) Set Alert Level
3) Manage Email Options
4) Exit

Option? 4

Alert.log内容的发送

系统内嵌的发送通知的方式有以下几种:

发送告警邮件

这是系统默认的Alert的通知方式。使用^MONMGR配置配置您的邮件地址和服务器。

SYS>do ^MONMGR

1) Start/Stop/Update MONITOR
2) Manage MONITOR Options
3) Exit

Option? 2

1) Set Monitor Interval
2) Set Alert Level
3) Manage Email Options
4) Exit

Option? 3

1) Enable/Disable Email
2) Set Sender
3) Set Server
4) Manage Recipients
5) Set Authentication
6) Test Email
7) Exit

Option?

SNMP Trap

通过SNMP Trap发送通知/警告也是非常常用的方案。无论是Cache'还是IRIS, 您都可以在SNMP客户端使用SNMP收集采样指标,接收alert消息。具体的操作内容,我会在单独的文章介绍。这里只是简单的描述下步骤:

  • 确认操作系统的SNMP服务已启动
  • 在Cache'/IRIS管理门户“System>Security Management >Services”启动%Service_Monitor服务.
  • 到“Monitor Setting"页面确认“the monitor service is Enabled"
  • 重启实例。

以下是使用snmptrapd命令接收的alert的例子:

Received 113 byte packet from UDP: [172.16.58.200]:60620->[0.0.0.0]:0
0000: 30 6F 02 01  00 04 06 70  75 62 6C 69  63 A4 62 06    0o.....public�b.
0016: 0A 2B 06 01  04 01 81 81  33 01 02 40  04 AC 10 3A    .+......3..@.�.:
0032: C8 02 01 06  02 01 0F 43  02 5D 33 30  44 30 1A 06    �......C.]30D0..
0048: 12 2B 06 01  04 01 81 81  33 01 01 01  01 01 04 48    .+......3......H
0064: 53 41 50 04  04 48 53 41  50 30 26 06  12 2B 06 01    SAP..HSAP0&..+..
0080: 04 01 81 81  33 01 01 01  01 08 04 48  53 41 50 04    ....3......HSAP.
0096: 10 77 69 6E  74 65 72 20  69 73 20 63  6F 6D 69 6E    .winter is comin
0112: 67

注意: snmp trap的发送发生在alerts.log的写入时。重复消息写入Alert的时限是30分钟。切换执行的进程,比如重新打开另一个terminal进程会重新计数。

REST API

通过REST接口查看alert内容是IRIS的新特性。下面的查看结果中有4个alert记录。原始输出的json是给机器读的,堆在一起很难看,我做了格式化,更方便人读。

注意的一点: 通过REST读取alert的内容每次只能读到新的alerts。也就是说,当再次GET的时候, 如果和上次查看的间隔中没有新alert记录出现,GET的结果是空,虽然这时候alert.log的文件里还是有很多记录。

hma@CNMBPHMA ~ % curl http://localhost:52773/api/monitor/alerts
[
    {
        "time": "2023-05-04T02:12:05.647Z",
        "severity": "2",
        "message": "Preserving journal files /usr/irissys/mgr/journal/20230421.002 and later for journal recovery and transaction rollback"
    },
    {
        "time": "2023-05-04T02:13:35.671Z",
        "severity": "2",
        "message": "[SYSTEM MONITOR] DiskPercentFull(/external/demo/) Alert: DiskPercentFull = 91.34, 91.34, 91.34 (Max value is 90)."
    },
    {
        "time": "2023-05-04T02:13:35.671Z",
        "severity": "2",
        "message": "[SYSTEM MONITOR] DiskPercentFull(/external/oeesp/) Alert: DiskPercentFull = 91.34, 91.34, 91.34 (Max value is 90)."
    },
    {
        "time": "2023-05-04T02:13:35.672Z",
        "severity": "2",
        "message": "[SYSTEM MONITOR] DiskPercentFull(/external/smart/) Alert: DiskPercentFull = 91.34, 91.34, 91.34 (Max value is 90)."
    }
]

Monitoring Web Service

Caché Monitoring Web Service是一个提供系统采样值的Web服务,简单的说,您在用户界面上看到的所有指标,都可以从这个Web服务得到。

它的其中一个服务是EventSubscribe,用户调用这个服务,订阅Caché Event, 提供用户自己的Web服务调用地址,服务规范拷贝Monitoring Web Service中的EventSink服务,这是服务就是专门提供给客户的一个WSDL模板。当Caché产生Warning或者Alert时,Caché会调用用户的Web服务发送通知。这是一个不太常用的方案,感兴趣的用户可以查看产品手册中“Monitoing Caché Using Web Services”部分。

讨论 (0)1
登录或注册以继续