首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Unix/Linux 系统自动化管理 日志管理篇(2)

Unix/Linux 系统自动化管理 日志管理篇(2)

AIX Error log 监控自动化AIX 操作系统为 Error log 提供了一种通过 ODM 类 errnotify 进行错误通知 (Error Notification) 的机制。用户可以通过添加一个 errnotify 的 ODM 类实例来实现 AIX Error log 的错误通知,即当 AIX Error log 机制记录了错误条目后,errnotify 会调用预先定义好的命令通知系统管理员或者进行其它的修复动作。
AIX Error log 的错误通知机制的功能完全符合了监控自动化的要求,我们可以通过添加一个 errnotify 类实例来实现对 AIX Error log 的监控,当定义的错误发生后,errnotify 会调用相应的命令来通知系统管理员。需要注意的是只有 root 用户才能添加 errnotify 类实例。
以下是添加 errnotify 类实例以及利用 errnotify 机制自动监控 AIX Error log 的具体步骤:
  • 生成一个 ODM errnotify 类实例的 stanza 文件生成一个 ODM errnotify 类实例的 stanza 文件需要指定若干选项,各主要选项的说明如下:
    en_name:errnotify 类实例的名字,名字需要全局唯一。
    en_persistenceflg:在系统重新引导时是否自动删除该实例,0 为在系统重新引导时自动删除该实例,1 为在系统重新引导时不删除该实例。
    en_type:指定仅监控特定严重程度的 Error log 条目如 INFO、PEND 等。
    en_class:指定仅监控特定类别的 Error log 条目如 H、S 等。
    en_method:定义在监测到 AIX Error log 条目后所采取的动作,动作可以为任何的脚本程序或者操作系统命令。errnotify 自动设置了关于 Error log 条目信息的变量可供监控程序使用:
    $1 error log 条目的序号
    $2 error log 条目的 ID
    $3 error log 条目的事件类别
    $4 error log 条目的事件严重程度
    $5 error log 条目的 Alert flags
    $6 error log 条目的产生的组件名称
    $7 error log 条目的产生的组件种类 (Type)
    $8 error log 条目的产生的组件类 (Class)
    $9 error log 条目的错误标签
    关于 errnotify 类实例的各字段的具体说明,请参见 AIX 文档《 General Programming Concepts: Writing and Debugging Programs 》
    例如我们可以生成一个 errnotify 类实例的 stanza 如下:
    清单 2. errnotify 类实例 stanza
    1
    2
    3
    4
    5
    6
    errnotify:
       en_name = "errlog_notify"
       en_persistenceflg = 1
       en_method = "mail -s \"Events occured in Error log: sequence = $1 error_id = $2
       class = $3 type = $4 alert_flags = $5 res_name = $6 res_type = $7 res_class = $8
       label = $9\" root"




    该 stanza 的内容可解释为当任何的 AIX Error log 事件发生时,都会给 root 用户发送一个邮件,邮件的内容中包含了 Error log 条目的具体信息。
  • 将类实例添加到 ODM 数据库AIX 命令 odmadd 可以将 ODM 类实例添加到 ODM 数据库中。
    如 : odmadd  /errnotifystanza
  • 验证 ODM errnotify 类实例可以用命令 odmget 来验证 errnotify 类实例已经被正确添加。
    清单 3. 使用 odmget 命令查看 errnotify 类实例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    [node01][/]> odmget -q en_name="errlog_notify" errnotify

    errnotify:
         en_pid = 0
         en_name = "errlog_notify"
         en_persistenceflg = 1
         en_label = ""
         en_crcid = 0
         en_class = ""
         en_type = ""
         en_alertflg = ""
         en_resource = ""
         en_rtype = ""
         en_rclass = ""
         en_symptom = ""
         en_err64 = ""
         en_dup = ""
         en_method = "mail -s \"Events occured in Error log: sequence = $1 error_id = $2
         class = $3 type = $4 alert_flags = $5 res_name = $6 res_type = $7 res_class = $8
         label = $9  contents = \n`errpt -a -l $1\n\" root"




  • 手动生成 Error log 条目测试监控是否工作在确认 errnotify 类实例已经被正确添加后即可以通过 errologger 手动生成 Error log 条目测试监控是否工作。如:
    清单 4. 使用 errlogger 命令生成测试日志
    1
    errlogger "this is a test for Error log monitoring"




    然后即可以查看 root 的邮件中是否已经收到了该 Error log,如果工作正常 root 的邮件中会收到内容如下的邮件:
    清单 5. mail 命令
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Message 37:
    From root Fri Mar 20 02:43:15 2009
    Date: Fri, 20 Mar 2009 02:43:15 -0400
    From: root
    To: root
    Subject: Events occured in Error log: sequence = 142983 error_id = 0xaa8ab241
    class = O type = TEMP alert_flags = FALSE res_name = OPERATOR res_type = NONE
    res_class = NONE label = OPMSG  contents =

    ---------------------------------------------------------------------------
    LABEL:          OPMSG
    IDENTIFIER:     AA8AB241

    Date/Time:       Fri Mar 20 02:43:14 EDT 2009
    Sequence Number: 142983
    Machine Id:      000181404C00
    Node Id:         hacsmdev3
    Class:           O
    Type:            TEMP
    Resource Name:   OPERATOR

    Description
    OPERATOR NOTIFICATION

    User Causes
    ERRLOGGER COMMAND

            Recommended Actions
            REVIEW DETAILED DATA

    Detail Data
    MESSAGE FROM ERRLOGGER COMMAND
    this is a test for Error log monitoring




  • 停止监控 AIX Error log如果想停止通过 errnotify 监控 AIX Error log,只需要将 errnotify 类实例从 ODM 数据库中删除即可。
    清单 6. 删除 errnotify 类实例
    1
    2
    [node01][/]> odmdelete -q en_name="errlog_notify" -o errnotify
    1 objects deleted




返回列表