GaussDB-Anomaly detection-使用指导
GaussDB-Anomaly detection-使用指导
假设指标采集系统运行正常,并且用户已经初始化了配置文件目录confpath,则可以通过下述命令实现本特性的功能:
异常检测功能
gs_dbmind service start --conf confpath --only-run anomaly_detection
gs_dbmind component anomaly_detection --conf confpath --action overview --metric metric_name --start-time timestamps1 --end-time timestamps2
gs_dbmind component anomaly_detection --conf confpath --action overview --metric metric_name --start-time timestamps1 --end-time timestamps2 --host ip_address
gs_dbmind component anomaly_detection --conf confpath --action overview --metric metric_name --start-time timestamps1 --end-time timestamps2 --anomaly anomaly_type
gs_dbmind component anomaly_detection --conf confpath --action overview --metric metric_name --start-time timestamps1 --end-time timestamps2 --host ip_address --anomaly anomaly_type
gs_dbmind component anomaly_detection --conf confpath --action plot --metric metric_name --start-time timestamps1 --end-time timestamps2 --host ip_address --anomaly anomaly_type
运行异常诊断后台任务:
参考Slow Query Diagnosis中的方法,其对应定时任务为: anomaly_detection
指标异常分析功能
curl -X 'GET' http://127.0.0.1:8080/v1/api/app/metric-diagnosis/?metric_name=os_cpu_user_usage&metric_filter={"from_instance":"127.0.0.1","from_job":"node_exporter","instance":"127.0.0.1:8181","job":"reprocessing_exporter"}&alarm_cause=["high_cpu_usage"]&start=1691482728000&end=1691482728000 -H 'accept: application/json' -H 'Content-Type: application/json' -H "Authorization: bearer xxx"
如果使用HTTPS协议,则查询示例为:
curl -X 'GET' 'https://127.0.0.1:8080/v1/api/app/metric-diagnosis/?metric_name=os_cpu_user_usage&metric_filter={"from_instance":"127.0.0.1","from_job":"node_exporter","instance":"127.0.0.1:8181","job":"reprocessing_exporter"}&alarm_cause=["high_cpu_usage"]&start=1691482728000&end=1691482728000' -H 'accept: application/json' -H 'Content-Type: application/json' -H "Authorization: bearer xxx" --cacert xx.crt --key xx.key --cert xx.crt
返回结果格式参考:
{"data":{[{'reason1': 0.0, 'reason2': 1.0}, 'conclusion', 'advice']},"success":true}
gs_dbmind service stop --conf confpath
指标异常分析支持的场景详细情况如下:
- 场景1:用户CPU使用率异常
异常判断条件:用户CPU使用率10分钟内持续高于80%
可能的异常根因:
- 场景2:线程池使用率异常
异常判断条件:默认规则线程池使用率10分钟内持续高于80%
可能的异常根因:
- 磁盘读写时延过高导致
分析:查看产生报警的节点的数据盘每次读写时间的相关性
建议:若发现磁盘读写时延频繁过高或者有明显劣化趋势,则继续定位是否磁盘硬件故障
- 慢SQL导致
现象:期间有明显的statement_responsetime_percentile_p95与statement_responsetime_percentile_p80增高
分析:查看产生报警的节点的数据盘每次读写时间的相关性
建议:如果statement_responsetime_percentile_p95与statement_responsetime_percentile_p80持续高,CPU使用率也一直保持很高,线程池使用率反复超过阈值,没有恢复迹象,则需要联系相关人员进行进一步定位分析
- 磁盘读写时延过高导致
- 场景3:动态内存使用率异常
异常判断标准:系统内存超过阈值(默认10分钟连续超过80%),再进行动态内存使用率异常分析
可能的异常根因:
- 场景4:共享内存使用率异常
异常判断标准:系统内存超过阈值(默认10分钟连续超过80%),再进行共享内存使用率异常分析
可能的异常根因:
- 场景5:磁盘空间占用高异常
异常判断标准:磁盘空间占用超过阈值(默认80%)
可能的异常根因:
- 场景6:磁盘IO读取时延异常
异常判断标准:磁盘IO使用率超过阈值(默认80%)
可能的异常根因:
- 场景7:扫描攻击
异常判断标准:SQL执行错误率和用户越权率加权得分超过阈值(默认阈值:提示0.2,告警0.6,严重0.8)
- 场景8:暴力登录
异常判断标准:用户无效登录率和用户锁定率指标加权得分超过阈值(默认阈值:提示0.1,告警0.3,严重0.4)
可能的异常根因:
- 场景9:违规操作
-
异常判断标准:用户越权率指标超过阈值(默认阈值:提示0.2,告警0.6,严重0.8)
可能的异常根因:
其中,场景7~9的约束如下:
- 用户需有Monitor admin和Audit admin权限,如果没有Audit admin权限,会导致审计指标数据全为0,导致诊断结果不可用。
- 需要开启audit_enabled、audit_log_logout、audit_user_locked和audit_user_violation参数。
- 审计总开关GUC参数audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。
- 审计项audit_login_logout:默认值为7,表示开启用户登录、退出的审计功能。设置为0表示关闭用户登录、退出的审计功能。
- 审计项audit_user_locked:默认值为1,表示开启审计用户锁定和解锁功能。
- 审计项audit_user_violation:默认值为0,表示关闭用户越权操作审计功能。通过命令 gs_guc reload -Z datanode -N all -I all -c "audit_user_violation=1"开启
- 如无开启审计相关参数,只能处理扫描攻击场景。
亚健康诊断功能
亚健康状态是系统介于健康状态和故障状态之间的一种状态,系统仍在运行且功能正常但处于降级模式的一种情况,它的存在会造成系统性能严重低于预期。
亚健康诊断支持的场景如下:
- 场景1:潜在慢盘监测
DBMind默认初始化"slow_disk_detector"检测器,在每一次触发异常检测定时任务时对潜在慢盘进行监测。
- 现象:“慢盘”现象普遍存在于存储架构之中,由于硬盘体质或者频繁读写的原因,部分硬盘会出现性能故障,IO负载过高等情况进而导致延时变大,读写变慢的现象。
- 检测逻辑:在最近的过去7天~30天(收集的数据小于7天不进行检测),其磁盘IO平均读写时间长期在30ms以上并呈现出上升趋势,则认为其发生潜在慢盘。
- 场景2:内存泄漏监测
DBMind默认初始化"mem_leak_detector"检测器,在每一次触发异常检测定时任务时对内存泄漏进行监测。
- 现象:程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。内存泄漏缺陷具有隐蔽性、积累性的特征,比其他内存非法访问错误更难检测。
- 检测逻辑:最近的过去7天~30天(收集的数据小于7天不进行检测),其内存占用呈现出上升趋势,则认为其发生内存泄漏。
- 场景3:锁冲突监测
DBMind默认初始化"deadlock_detector"检测器,在每一次触发异常检测定时任务时对锁冲突进行监测。
- 现象:当发生所冲突时,日志中会记录锁冲突的详细信息。
- 检测逻辑:当内核日志记录到死锁日志时,则认为其发生锁冲突,并对死锁信息进行收集。
- 在输入anomaly detection的参数时,start-time设置时间至少要早于end-time设置时间30秒以上。
- 异常检测功能依赖于异常检测器,可以通过异常检测器的查询接口/v1/api/app/anomaly-detection/detectors/{name}查看当前已添加的全部异常检测器。
- 添加检测器或更改检测器参数会将检测器状态变为启用。
- 对于初始化时默认的长期指标检测器(如slow_disk_detector和mem_leak_detector),其检测器的监测时间窗口长度是固定的,不支持修改,对于其duration参数的修改是无效的。
- 对于长期指标检测器,当收集到的数据低于一个星期时,不会进行检测。当数据已经长达一小时没有更新时,不会进行检测。
- 异常检测器的落盘存储依赖于元数据库,请勿在元数据库中对异常检测器进行手动修改。
- 当前版本仅支持,在主备切换、扩容和剔除节点的场景下,同一集群的检测器配置参数会被继承与保留,其他场景均不支持。

浙公网安备 33010602011771号