Skip to content

openeuler-mirror/gala-anteater

Repository files navigation

gala-anteater

介绍

gala-anteater 是一款基于 AI 的操作系统灰度故障的异常检测平台,其集成了多种异常检测算法,针对不同场景和应用,实现实时地系统级故障发现、以及故障点的上报。

anteater 基于系统历史数据,进行自动化模型预训练、线上模型的增量学习和模型更新,能够很好地适应多场景、多指标型数据,实现分钟级模型推理能力。

支持的异常检测场景汇总

当前 anteater 支持 3 大故障类别,13 种不同子场景的异常检测。

类别 诊断场景 KPI 故障注入方式
应用级 应用时延(RTT) gala_gopher_sli_rtt_nsec chaosblade: network loss/delay, disk fill/burn, cpu
应用吞吐量(TPS) gala_gopher_sli_tps chaosblade: network loss/delay, disk fill/burn, cpu
系统级 TCP建链性能 gala_gopher_tcp_link_syn_srtt chaosblade: network delay
TCP传输性能 gala_gopher_tcp_link_srtt chaosblade: network loss
系统I/O性能 gala_gopher_block_latency_req_max chaosblade: disk burn
进程I/O性能 gala_gopher_proc_bio_latency
gala_gopher_proc_less_4k_io_read
gala_gopher_proc_less_4k_io_write
gala_gopher_proc_greater_4k_io_read
gala_gopher_proc_greater_4k_io_write
chaosblade: disk burn
磁盘吞吐量 gala_gopher_disk_r_await
gala_gopher_disk_w_await
chaosblade: disk full
网卡发送丢包 gala_gopher_nic_tc_sent_drop chaosblade: network loss
JVM OutOfMemory Heapspace gala_gopher_jvm_mem_bytes_used
gala_gopher_jvm_mem_pool_bytes_used
java code: JavaOOMHttpServer
GC Overhead gala_gopher_jvm_mem_bytes_used
gala_gopher_jvm_mem_pool_bytes_used
java code: JavaOOMHttpServer
Metaspace gala_gopher_jvm_class_current_loaded java code: JavaOOMHttpServer
Unable to create new native thread gala_gopher_jvm_threads_current java code: JavaOOMHttpServer
Direct buffer memory gala_gopher_jvm_buffer_pool_used_bytes java code: JavaOOMHttpServer

安装部署

前置条件

  • 支持的python版本:3.7+;
  • anteater 依赖于 gopher 采集的数据,请先完成 gopher 的安装部署;
  • anteater 直接从 Prometheus 中获取时序指标型数据,需要完成 Prometheus 的安装部署;
  • anteater 依赖于 gopher 上报的 meta 数据(上报至 Kafka),因为需要确保 Kafka 安装部署完成。

方法一:Docker镜像安装(适用于普通用户)

Docker镜像制作

请在工程./gala-anteater目录下,执行下面的命令,将gala-anteater工程文件打包成Docker镜像。

docker build -f Dockerfile -t gala-anteater:1.1.0 .

注:根据环境网络情况,可能需要修改Dockfile文件中的pip源地址

Docker镜像运行

执行下面的命令,运行Docker镜像。首次运行会将配置文件gala-anteater.yaml文件映射到宿主机/etc/gala-anteater/config文件中, 请配置gala-anteater.yaml里面的参数,配置方式,请参考配置文件介绍

docker run -v /etc/gala-anteater:/etc/gala-anteater -it gala-anteater:1.1.0

方法二:从本仓库源码安装运行(适用于开发者)

下载源码

 git clone https://gitee.com/openeuler/gala-anteater.git

安装

工程./gala-anteater目录下执行下面命令:

python3 setup.py install

参数配置

配置参数会被映射到/etc/gala-anteater/config文件中,需要首先设置相应的参数,配置方式,请参考配置文件介绍

注:在配置文件中,最重要的是完成配置文件中中间件的配置,如其中Kafka server/portPrometheus server/port

运行

systemctl start gala-anteater

日志

日志文件默认路径:/var/gala-anteater/logs/,也可以根据配置文件log.settings.ini去修改日志文件的路径。

异常上报

gala-anteater输出异常检测结果到Kafka,如果检测到异常,检测结果输出到Kafka中,默认Topic为:gala_anteater_hybrid_model,也可以在gala-anteater.yaml中修改配置。查看异常检测结果,具体命令如下:

./bin/kafka-console-consumer.sh --topic gala_anteater_hybrid_model --from-beginning --bootstrap-server localhost:9092

异常检测结果

异常检测结果默认输出到Kafka中,也可存储到ArangoDB中,供第三方运维系统查询、集成。数据格式遵循OpenTelemetry V1规范,具体方式请参考 Kafka to ArangoDB。如下介绍异常检测输出格式

输出数据

输出数据格式

参数 参数含义 描述
Timestamp 时间戳 异常事件上报时间戳
Attributes 属性值 主要包括:
1. entity_id命名规则:<machine_id><table_name><keys>
2. entity_id事件ID:<timestamp>_<entity_id>
3. event_type: 事件主要类型(APP/SYS/JVM)
4. event_source:事件上报来源
5. keywords(optional):事件关键词,用于快速搜索
Resource 资源 异常检测模型输出的信息,主要包括:
1. metric: 异常检测的主指标
2. labels: 异常metric标签信息(例如:Host/PID/COMM/IP)
3. score:事件的异常分数
4. root_causes (optional): 推荐的 Top N 根因信息
SeverityText 异常事件类型 INFO, WARN, ERROR, FATAL
SeverityNumber 异常事件编号 9, 13, 178, 21 ...
Body 异常事件信息 字符串类型,表示对当前异常事件的描述
格式:<timestamp> - <header> - <description> - <details>

输出数据示例

示例一:

{
    "Timestamp": 1669343170074,
    "Attributes": {
        "entity_id": "7c2fbaf8-xxx-xxx-xxx-xxx_sli_xxx_16859_POSTGRE_0",
        "event_id": "1669343170074_7c2fbaf8-xxx-xxx-xxx-xxx_sli_2187425_16859_POSTGRE_0",
        "event_type": "app",
        "event_source": "gala-anteater",
        "keywords": [
            "sli",
            "tcp"
            ]
    },
    "Resource": {
        "metric": "gala_gopher_sli_tps",
        "labels": {
            "Host": "110f3138-xxx-xxx-xxx-xxxx-xxx",
			"PID": "1188486",
			"COMM": "xxx-server",
			"IP": "xx.xxx.xxx.xxx"
        },
        "score":0.36,
        "root_causes": [
            {
                "metric": "gala_gopher_net_tcp_retrans_segs",
                "labels": {
                    "instance": "xxx.xxx.xxx.xxx:x",
                    "job": "prometheus-xxx.xxx.xxx.xxx:x",
                    "machine_id": "7c2fbaf8-xxx-xxx-xxx-xxx",
                    "origin": "/proc/dev/snmp"
                },
                "score": 16.9
            },
            {
                "metric": "gala_gopher_cpu_user_total_second",
                "labels": {
                    "cpu": "6",
                    "instance": "10.xxx.xxx.xxx:18001",
                    "job": "prometheus-10.xxx.xxx.xxx:8001",
                    "machine_id": "7c2fbaf8-xxx-xxx-xxx-xxx"
                },
                "score": 6.1
            }
        ]
    },
    "SeverityText": "WARN",
    "SeverityNumber": 13,
    "Body": "2023-xx-xx xx:xx:xx - System Failure - xxx协议请求RTT"
}

示例二:

{
    "Timestamp": 1693385669409,
    "Attributes": {
        "entity_id": "110f3138-xxx-xxx-xxx-xxx-xxx.xxx.xxx.xxx_jvm_xxx",
        "event_id": "1693385669409_110f3138-xxx-xxx-xxx-xxx_jvm_xxx",
        "event_type": "jvm",
        "event_source": "gala-anteater",
        "keywords": [
            "jvm"
            ]
    },
    "Resource": {
        "metric": "gala_gopher_jvm_mem_pool_bytes_used","labels": {
            "PID": "xxx",
            "COMM": "java"
        },
        "score": 0.1,
        "root_causes": []
    },
    "SeverityText": "WARN",
    "SeverityNumber": 13,
    "Body": "2023-08-30 08:54:29 - JVM OutOfMemory - 给定JVM内存池的已使用字节数 - {'PS Old Gen Usage': 0.99}"
}

项目路线图

异常检测能力

特性 发布时间 发布版本
单维时序数据异常检测(Redis / PG应用性能劣化) 22.12 openEuler 22.03 SP1
多维时序数据异常检测(TCP建链 / 传输 / 系统IO ) 22.12 openEuler 22.03 SP1
多维阈值异常检测(JAVA OOM类异常) 23.09 openEuler 22.03 SP1, openEuler 23.09
异常检测准确率提升(训练集压缩感知离群点过滤技术 + 多指标重构技术 + 异常度动态阈值技术) 23.09 openEuler 22.03 SP1, openEuler 23.09
异常检测泛化能力提升(平稳 / 非平稳背景流自适应技术) 23.09 openEuler 22.03 SP1, openEuler 23.09
异常检测泛化能力提升(在线学习 + 增量学习技术) 23.09 openEuler 22.03 SP1, openEuler 23.09
白名单应用性能劣化异常检测 24.03 openEuler 24.03

根因定位能力

特性 发布时间 发布版本
基于专家规则的应用性能劣化根因定位(虚拟化、分布式存储场景网络IO / 磁盘IO类故障) 22.12 openEuler 22.03 SP1
基于因果图构建、因果传播分析的根因定位(根因传播推导技术 + 根因路径溯源技术) 23.09 openEuler 22.03 SP1, openEuler 23.09
根因定位准确率提升(PC算法因果图 + 专家经验) 24.03 openEuler 24.03
资源类异常通用根因定位(基于图谱的多变量时间序列) 24.03 openEuler 24.03
多模态应用性能劣化根因定位(基于Metric、Logging、Tracing) 24.09 openEuler 24.09

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages