长期支持版本

    社区创新版本

      AI阈值慢盘检测插件

      用户可通过AI阈值慢盘检测插件进行慢盘故障检测,当巡检插件检测到系统存在慢盘时,会将结果上报给xalarmd服务,用户可通过注册告警或get_alarm命令的方式查看告警结果(注册告警和get_alarm命令可参考《安装和使用》。

      使用限制

      1. AI阈值慢盘检测插件可检出以下四种情况的慢盘:
        • 压力大导致的慢盘,上报告警日志中含有关键字"io_press";
        • 盘故障导致的慢盘,上报告警日志中含有关键字"driver_slow";
        • IO栈异常导致的慢盘,上报告警日志中含有关键字"kernel_slow";
        • 未知故障导致的慢盘,上报告警日志中含有关键字"unknown"。
      2. AI阈值慢盘检测插件运行时占用系统性能(cpu利用率、内存使用率、io吞吐等)不超过整个运行环境的5%。
      3. 仅支持openEuler-20.03-LTS-SP4版本,并使用4.19.90内核。
      4. 支持对nvme-ssd、sata-ssd、sata-hdd盘进行慢盘检测。
      5. 仅支持对nvme-ssd、sata-ssd、sata-hdd盘进行慢盘检测,区分盘的方法请参考常见问题与解决方法 - Q2
      6. 启动平均阈值巡检前,请确认sysSentry、xalarmd、sentryCollector服务均处于运行状态。

      安装插件

      前置条件

      已安装sysSentry巡检插件,sentryCollector采集服务已配置io相关采集项(请参考《安装和使用》进行配置)

      安装软件包

      yum install -y ai_block_io pysentry_notify pysentry_collect python3-numpy
      

      将ai_block_io加入框架管理

      [root@openEuler ~]# sentryctl reload ai_block_io
      

      配置文件说明

      ai_block_io插件配置文件路径:/etc/sysSentry/plugins/ai_block_io.ini,配置文件修改会在下一次启动巡检任务时生效。

      配置段配置项配置项说明默认值必选项
      [log]level记录日志的等级,可配置范围是debug/info/warning/error/critical,未配置或值异常时使用默认参数infoY
      [common]disk磁盘名称,由逗号分隔,default表示当前环境上所有盘,配置异常时仅保留正确字段defaultY
      [common]stage监控阶段,由逗号分隔,目前已支持throtl/wbt/gettag/plug/deadline/hctx/requeue/rq_driver/bio九个阶段,根据盘种类不同提供的stage可能有不同,配置default表示盘支持的所有阶段,未配置时使用默认配置,配置异常时报错退出;注:用户自行配置时,必须包含bio阶段defaultY
      [common]iotypeio类别,由逗号分隔,共支持两种场景:read、write,未配置时使用默认配置,配置异常时报错退出read,writeY
      [common]period_time插件的巡检周期,整形类型,单位为秒,数值应为sentryCollector采集周期的整数倍,且倍数不超过sentryCollector的max_save(请参考sentryCollector配置文件)1Y
      [algorithm]train_data_durationAI阈值算法训练数据采集时长,单位h, 浮点类型,该字段值越大,算法统计结果越稳定。范围为0~720,未配置时使用默认配置,配置异常时报错退出24Y
      [algorithm]train_update_durationAI阈值算法阈值更新时长,浮点类型,单位h, 该字段值越小,阈值更新越快,误报越高。范围为0~train_data_duration,未配置时使用默认配置,配置异常时报错退出2Y
      [algorithm]algorithm_typeAI阈值算法类型,字符串类型,该字段取值可选项为:boxplot/n_sigma,未配置时使用默认配置,配置异常时报错退出boxplotY
      [algorithm]boxplot_parameterboxplot算法的参数,浮点类型,该字段值越大,对异常的敏感程度就越低。范围为0~10,未配置时使用默认配置,配置异常时报错退出1.5N
      [algorithm]n_sigma_parametern_sigma算法的参数,浮点类型,该字段值越大,对异常的敏感程度就越低。范围为0~10,未配置时使用默认配置,配置异常时报错退出3.0N
      [algorithm]win_typeAI阈值算法检测窗口类型,适用于不同的检测目的,字符串类型,该字段取值可选项为:not_continuous/continuous/median。未配置时使用默认配置,配置异常时报错退出not_continuousY
      [algorithm]win_sizeAI阈值算法检测窗口长度,慢IO检测时只判断窗口内的数据是否为异常,整数类型,范围为0~300。未配置时使用默认配置,配置异常时报错退出30Y
      [algorithm]win_thresholdAI阈值算法超阈值数量,整形类型,该字段值越小,算法上报异常速度越快,误报越高。范围为1~win_size,未配置时使用默认配置,配置异常时报错退出6Y
      [latency_DISK_TYPE]read_avg_lim读时延平均值上限,单位us,代表窗口中读IO平均时延限制,数值越大,算法漏报率越高,未配置时使用默认配置,配置异常时报错退出见下方注释3Y
      [latency_DISK_TYPE]write_avg_lim写时延平均值上限,单位us,代表窗口中写IO平均时延限制,数值越大,算法漏报率越高,未配置时使用默认配置,配置异常时报错退出见下方注释3Y
      [latency_DISK_TYPE]read_tot_lim读时延绝对上限,单位us,读时延超过此数据即为异常数据,数值越大,算法漏报率越高,未配置时使用默认配置,配置异常时报错退出见下方注释3Y
      [latency_DISK_TYPE]write_tot_lim写时延绝对上限,单位us,写时延超过此数据即为异常数据,数值越大,算法漏报率越高,未配置时使用默认配置,配置异常时报错退出见下方注释3Y
      [iodump]read_iodump_lim读iodump绝对上限,整形类型,读iodump数量超过此数据即为异常数据,数值越大,算法漏报率越高,未配置时使用默认配置,配置异常时报错退出0Y
      [iodump]write_iodump_lim写iodump绝对上限,整形类型,写iodump数量超过此数据即为异常数据,数值越大,算法漏报率越高,未配置时使用默认配置,配置异常时报错退出0Y

      说明:

      1. latency_[DISK_TYPE]、iodump配置段的所有参数调整均会影响算法的准确性,且优劣并存:若数值越大,算法漏报率越高,则数值越小,算法误报率越高。需要根据经验进行取舍。
      2. [DISK_TYPE]为磁盘类型,目前仅支持三类:sata_ssd、nvme_ssd、sata_hdd。
      3. 目前不同磁盘read_avg_lim/write_avg_lim/read_tot_lim/write_tot_lim默认配置不同,详情如下:
        • sata_ssd盘默认read_avg_lim为10000us, write_avg_lim为10000us, read_tot_lim为50000us, write_tot_lim为50000us;
        • nvme_ssd盘默认read_avg_lim为300us, write_avg_lim为300us, read_tot_lim为500us, write_tot_lim为500us;
        • sata_hdd盘默认read_avg_lim为15000us, write_avg_lim为15000us, read_tot_lim为50000us, write_tot_lim为50000us。
      4. win_type选择检测类型时,各选项分别代表以下含义:
        • not_continuous:检测窗口内异常点不要求连续;
        • continuous:检测窗口内异常点要求连续;
        • median:检测窗口内所有数据点的中位数是否超过阈值。
      5. 当选择算法类型是boxplot,boxplot_parameter是必需的;当选择算法类型是n_sigma,n_sigma_parameter是必需的。

      使用AI阈值慢盘检测插件

      1. 启动巡检

        sentryctl start ai_block_io
        
      2. 查看巡检插件状态

        sentryctl status ai_block_io
        

        状态为RUNNING即为运行中,状态为EXITED为退出

      3. 查看告警信息

        sentryctl get_alarm ai_block_io -s 1 -d
        

        示例:

         [
             {
                 "alarm_id": 1002,
                 "alarm_type": "ALARM_TYPE_RECOVER",
                 "alarm_level": "MINOR_ALARM",
                 "timestamp": "2024-10-28 09:53:41",
                 "alarm_info": {
                     "alarm_source": "ai_block_io",
                     "driver_name": "sda",
                     "io_type": "write",
                     "reason": "driver_slow",
                     "block_stack": "bio,rq_driver",
                     "alarm_type": "latency",
                     "details": {
                         "latency": "{'read': {'bio': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'rq_driver': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, 'write': {'bio': [17.8, 17.9, 18.0, 69.5, 79.2, 79.6, 80.4, 79.9, 81.2, 79.9, 76.2, 81.3, 78.7, 81.0, 81.0, 77.8, 79.1, 78.4, 82.1, 79.2, 80.1, 77.6, 79.5, 81.7, 78.4, 80.6, 77.5, 81.9, 81.1, 78.3], 'rq_driver': [15.1, 15.2, 15.3, 23.7, 28.8, 25.6, 27.0, 24.5, 28.2, 28.0, 26.0, 28.1, 27.3, 28.2, 28.7, 26.4, 26.8, 26.0, 28.1, 26.4, 27.5, 24.8, 27.7, 27.0, 25.7, 29.2, 25.6, 28.8, 27.9, 26.5]}}",
                         "iodump": "{'read': {'bio': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'rq_driver': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, 'write': {'bio': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'rq_driver': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}}",
                     }
                 }
             }
         ]
        

        输出结果中各字段介绍:

        字段描述
        alarm_id用户上报告警的id,AI阈值慢盘检测插件的告警id固定为1002
        alarm_type告警的类型,AI阈值慢盘检测插件的告警类型为ALARM_TYPE_OCCUR,代表告警产生
        alarm_level告警的等级,AI阈值慢盘检测插件的告警等级为MINOR_ALM,代表系统存在异常,并且已经尝试自动隔离等方式修复
        timestamp告警上报的时间
        alarm_info告警内容详细信息,由AI阈值慢盘检测插件的自定义内容,不同的巡检插件上报的内容不一致

        alarm_info中各字段解释如下:

        alarm_info中字段描述
        alarm_source告警插件名称,AI阈值慢盘检测插件的固定值为ai_block_io
        driver_name告警磁盘名称,如sda
        io_type告警io类型,可能存在两种告警:
        1. read:读io慢盘故障告警
        2. write:写io慢盘故障告警
        reason告警原因,AI阈值慢盘检测插件可能存在以下四种不同告警原因:
        1. io_press,压力大导致的慢盘告警;
        2. driver_slow,盘故障导致的慢盘告警;
        3. kernel_slow,IO栈异常导致的慢盘告警;
        4. unknown,未知故障导致的慢盘告警;
        block_stack慢io出现异常的阶段,可能出现的阶段为bio/throtl/wbt/bfq/rq_driver/gettag/plug/deadline/hctx/requeue共九个阶段的组合,九个阶段的详细介绍可参考《二次开发指南》 - 插件事件告警上报
        details告警日志内记录的信息,仅在get_alarm执行包含"-d/--detailed"选项时展示,内容为上报异常磁盘的latency(io时延数据)和iodump(io超时未完成数量)的信息
      4. 停止巡检

        sentryctl stop ai_block_io
        
      5. 查看巡检结果信息

        在巡检停止后可查看巡检结果信息:

        sentryctl get_result ai_block_io
        

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份