aops-agent部署指南

一、环境要求

1台openEuler机器,建议openEuler 20.03及以上版本运行。

二、配置环境部署

1. 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

2. aops-agent部署

  1. 基于yum源安装:yum install aops-agent

  2. 修改配置文件:将agent节点下IP标签值修改为本机IP,

    vim /etc/aops/agent.conf,以IP地址为192.168.1.47为例

    [agent]
    ;启动aops-agent时,绑定的IP与端口
    ip=192.168.1.47
    port=12000
    
    [gopher]
    ;gala-gopher默认配置文件路径,如需修改请确保文件路径的准确性
    config_path=/opt/gala-gopher/gala-gopher.conf
    
    ;aops-agent采集日志配置
    [log]
    ;采集日志级别,可设置为DEBUG,INFO,WARNING,ERROR,CRITICAL
    log_level=INFO
    ;采集日志存放位置
    log_dir=/var/log/aops
    ;日志文件最大值
    max_bytes=31457280
    ;备份日志的数量
    backup_count=40
    
  3. 启动服务:systemctl start aops-agent

3. 向aops-manager注册

为了辨别使用者的身份,避免接口被随意调用,aops-agent采用token验证身份,以减轻所部署主机的压力。

基于安全性考虑,项目采用主动注册的方式去获取token。注册前,须在agent侧准备好需要注册的信息,调用register命令向aops-manager注册。由于agent未配置数据库,注册成功后,自动将token保存到指定文件内,并在前台展示注册结果。同时将本机相关信息存入到aops-manager侧的数据库中,以便后续管理。

  1. 准备register.json 文件

    在aops-agent侧准备好注册所需信息以json格式存入文件中,数据结构如下:

{
    // 前端登录用户名
    "web_username":"admin",
    // 用户密码
    "web_password": "changeme",
    // 主机名称
    "host_name": "host1",
    // 主机所在组名称
    "host_group_name": "group1",
    // aops-manager运行主机IP地址
    "manager_ip":"192.168.1.23",
    // 是否注册为管理机器
    "management":false,
    // aops-manager运行对外端口
    "manager_port":"11111",
    // agent运行端口
    "agent_port":"12000"
}

注意:确保aops-manager已在目标主机运行,如192.168.1.23,且注册的主机组要存在。

  1. 执行:aops_agent register -f register.json,
  2. 前台展示注册结果,注册成功时,保存token字符串至指定文件;注册失败时,根据提示以及日志内容了解具体原因。(/var/log/aops/aops.log)

注册结果示例:

注册成功

[root@localhost ~]# aops_agent register -f register.json
Agent Register Success

注册失败,以aops-manager未启动为示例

[root@localhost ~]# aops_agent register -f register.json
Agent Register Fail
[root@localhost ~]#

对应日志内容

2022-09-05 16:11:52,576 ERROR command_manage/register/331: HTTPConnectionPool(host='192.168.1.23', port=11111): Max retries exceeded with url: /manage/host/add (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ff0504ce4f0>: Failed to establish a new connection: [Errno 111] Connection refused'))
[root@localhost ~]#

三、插件支持

3.1 gala-gopher

3.1.1 介绍

gala-gopher是基于eBPF的低负载探针框架,可用于对主机的CPU,内存,网络等状态的监控以及数据采集服务。可根据实际业务需求对已有采集探针采集状态进行配置。

3.1.2 部署
  1. 基于yum源安装:yum install gala-gopher
  2. 基于实际的业务需求,选择需要探针进行开启,探针信息可在/opt/gala-gopher/gala-gopher.conf下查看。
  3. 启动服务:systemctl start gala-gopher
3.1.3 其它

gala-gopher更多信息可参考文档https://gitee.com/openeuler/gala-gopher/blob/master/README.md

四、接口支持

4.1 对外接口清单

序号接口名称类型说明
1/v1/agent/plugin/startPOST启动插件
2/v1/agent/plugin/stopPOST停止插件
3/v1/agent/application/infoGET采集目标应用集内正在运行的应用
4/v1/agent/host/infoGET获取主机信息
5/v1/agent/plugin/infoGET获取agent中插件运行信息
6/v1/agent/file/collectPOST采集配置文件内容
7/v1/agent/collect/items/changePOST改变插件采集项的运行状态
4.1.1、/v1/agent/plugin/start
  • 描述:启动已安装但未运行的插件,目前仅支持gala-gopher插件。

  • HTTP请求方式:POST

  • 数据提交方式:query

  • 请求参数:

    参数名必选类型说明
    plugin_nameTruestr插件名
  • 请求参数示例

    参数名参数值
    plugin_namegala-gopher
  • 返回体参数

    参数名类型说明
    codeint/返回码
    msgstr状态码对应的信息
  • 返回示例

    {
        "code": 200,
        "msg": "xxxx"
    }
    
4.1.2、/v1/agent/plugin/stop
  • 描述:使正在运行的插件停止,目前仅支持gala-gopher插件。

  • HTTP请求方式:POST

  • 数据提交方式:query

  • 请求参数:

    参数名必选类型说明
    plugin_nameTruestr插件名
  • 请求参数示例:

    参数名参数值
    plugin_namegala-gopher
  • 返回体参数:

    参数名类型说明
    codeint返回码
    msgstr状态码对应的信息
  • 返回示例:

    {
        "code": 200,
        "msg": "xxxx"
    }
    
4.1.3、/v1/agent/application/info
  • 描述:采集目标应用集内正在运行的应用,当前目标应用集包含mysql, kubernetes, hadoop, nginx, docker, gala-gopher。

  • HTTP请求方式:GET

  • 数据提交方式:query

  • 请求参数:

    参数名必选类型说明
  • 请求参数示例:

    参数名参数值
  • 返回体参数:

    参数名类型说明
    codeint返回码
    msgstr状态码对应的信息
    respdict响应数据主体
    • resp
      参数名类型说明
      runningList[str]包含正在运行应用名称的系列
  • 返回示例:

    {
        "code": 200,
        "msg": "xxxx",
        "resp": {
            "running": [
                "mysql",
                "docker"
            ]
        }
    }
    
4.1.4、/v1/agent/host/info
  • 描述:获取安装agent主机的信息,包含系统版本,BIOS版本,内核版本,CPU信息以及内存信息。

  • HTTP请求方式:POST

  • 数据提交方式:application/json

  • 请求参数:

    参数名必选类型说明
    info_typeTrueList[str]需采集信息的名称,目前仅支持cpu、disk、memory、os
  • 请求参数示例:

    ["os", "cpu","memory", "disk"]
    
  • 返回体参数:

    参数名类型说明
    codeint返回码
    msgstr状态码对应的信息
    respdict响应数据主体
    • resp

      参数名类型说明
      cpudictcpu信息
      memorydict内存信息
      osdictOS信息
      diskList[dict]硬盘信息
    • cpu

      参数名类型说明
      architecturestrCPU架构
      core_countint核心数
      l1d_cachestr1级数据缓存大小
      l1i_cachestr1级指令缓存大小
      l2_cachestr2级缓存大小
      l3_cachestr3级缓存大小
      model_namestr模式名称
      vendor_idstr厂商ID
    • memory

      参数名类型说明
      sizestr总内存大小
      totalint内存条数量
      infoList[dict]所有内存条信息
      • info
        参数名类型说明
        sizestr内存大小
        typestr类型
        speedstr速度
        manufacturerstr厂商
    • os

      参数名类型说明
      bios_versionstrbios版本
      os_versionstr系统版本
      kernelstr内核版本
  • 返回示例:

    {
        "code": 200,
        "msg": "operate success",
        "resp": {
            "cpu": {
                "architecture": "aarch64",
                "core_count": "128",
                "l1d_cache": "8 MiB (128 instances)",
                "l1i_cache": "8 MiB (128 instances)",
                "l2_cache": "64 MiB (128 instances)",
                "l3_cache": "128 MiB (4 instances)",
                "model_name": "Kunpeng-920",
                "vendor_id": "HiSilicon"
            },
            "memory": {
                "info": [
                    {
                        "manufacturer": "Hynix",
                        "size": "16 GB",
                        "speed": "2933 MT/s",
                        "type": "DDR4"
                    },
                    {
                        "manufacturer": "Hynix",
                        "size": "16 GB",
                        "speed": "2933 MT/s",
                        "type": "DDR4"
                    }
                ],
                "size": "32G",
                "total": 2
            },
            "os": {
                "bios_version": "1.82",
                "kernel": "5.10.0-60.18.0.50",
                "os_version": "openEuler 22.03 LTS"   
            },
            "disk": [
                {
                    "capacity": "xxGB",
                    "model": "xxxxxx"
                }
                ]
        }
    }
    
4.1.5、/v1/agent/plugin/info
  • 描述:获取主机的插件运行情况,目前仅支持gala-gopher插件。

  • HTTP请求方式:GET

  • 数据提交方式:query

  • 请求参数:

    参数名必选类型说明
  • 请求参数示例:

    参数名参数值
  • 返回体参数:

    参数名类型说明
    codeint返回码
    msgstr状态码对应的信息
    respList[dict]响应数据主体
    • resp

      参数名类型说明
      plugin_namestr插件名称
      collect_itemslist插件采集项运行情况
      is_installedstr状态码对应的信息
      resourceList[dict]插件资源使用情况
      statusstr插件运行状态
      • resource
        参数名类型说明
        namestr资源名称
        current_valuestr资源使用值
        limit_valuestr资源限制值
  • 返回示例:

    {
        "code": 200,
        "msg": "operate success",
        "resp": [
            {
                "collect_items": [
                    {
                        "probe_name": "system_tcp",
                        "probe_status": "off",
                        "support_auto": false
                    },
                    {
                        "probe_name": "haproxy",
                        "probe_status": "auto",
                        "support_auto": true
                    },
                    {
                        "probe_name": "nginx",
                        "probe_status": "auto",
                        "support_auto": true
                    },
                ],
                "is_installed": true,
                "plugin_name": "gala-gopher",
                "resource": [
                    {
                        "current_value": "0.0%",
                        "limit_value": null,
                        "name": "cpu"
                    },
                    {
                        "current_value": "13 MB",
                        "limit_value": null,
                        "name": "memory"
                    }
                ],
                "status": "active"
            }
        ]
    }
    
4.1.6、/v1/agent/file/collect
  • 描述:采集目标配置文件内容、文件权限、文件所属用户等信息。当前仅支持读取小于1M,无执行权限,且支持UTF8编码的文本文件

  • HTTP请求方式:POST

  • 数据提交方式:application/json

  • 请求参数:

    参数名必选类型说明
    configfile_pathTrueList[str]需采集文件完整路径的序列
  • 请求参数示例:

    [ "/home/test.conf", "/home/test.ini", "/home/test.json"]
    
  • 返回体参数:

    参数名类型说明
    infosList[dict]文件采集信息
    success_filesList[str]采集成功文件列表
    fail_filesList[str]采集失败文件列表
    • infos

      参数名类型说明
      pathstr文件路径
      contentstr文件内容
      file_attrdict文件属性
      • file_attr
        参数名类型说明
        modestr文件类型权限
        ownerstr文件所属用户
        groupstr文件所属群组
  • 返回示例:

    {
        "infos": [
            {
                "content": "this is a test file",
                "file_attr": {
                    "group": "root",
                    "mode": "0644",
                    "owner": "root"
                },
                "path": "/home/test.txt"
            }
        ],
        "success_files": [
            "/home/test.txt"
        ],
        "fail_files": [
            "/home/test.txt"
        ]
    }
    
4.1.7、/v1/agent/collect/items/change
  • 描述:更改插件采集项的采集状态,当前仅支持对gala-gopher采集项的更改,gala-gopher采集项可在配置文件中查看/opt/gala-gopher/gala-gopher.conf

  • HTTP请求方式:POST

  • 数据提交方式:application/json

  • 请求参数:

    参数名必选类型说明
    plugin_nameTruedict插件采集项预期修改结果数据
    • plugin_name
      参数名必选类型说明
      collect_itemTruestring采集项预期修改结果
  • 请求参数示例:

    {
        "gala-gopher":{
            "redis":"auto",
            "system_inode":"on",
            "tcp":"on",
            "haproxy":"auto"
        }
    } 
    
  • 返回体参数:

    参数名类型说明
    codeint返回码
    msgstr状态码对应的信息
    respList[dict]响应数据主体
    • resp

      参数名类型说明
      plugin_namedict对应采集项修改结果
      • plugin_name
        参数名类型说明
        successList[str]修改成功的采集项
        failureList[str]修改失败的采集项
  • 返回示例:

    {
        "code": 200,
        "msg": "operate success",
        "resp": {
            "gala-gopher": {
                "failure": [
                    "redis"
                ],
                "success": [
                    "system_inode",
                    "tcp",
                    "haproxy"
                ]
            }
        }
    }
    

    FAQ:

  1. 若有报错,请查看日志/var/log/aops/aops.log,根据日志中相关报错提示解决问题,并重启服务。

  2. 建议项目在Python3.7以上环境运行,安装Python依赖库时需要注意其版本。

  3. access_token值可在注册完成后,从/etc/aops/agent.conf文件中获取。

  4. 对于插件CPU,以及内存的资源限制目前通过在插件对应service文件中的Service节点下添加MemoryHigh和CPUQuota标签实现。

    如对gala-gopher内存限制为40M,CPU限制为20%。

    [Unit]
    Description=a-ops gala gopher service
    After=network.target
    
    [Service]
    Type=exec
    ExecStart=/usr/bin/gala-gopher
    Restart=on-failure
    RestartSec=1
    RemainAfterExit=yes
    ;尽可能限制该单元中的进程最多可以使用多少内存,该限制允许突破,但突破限制后,进程运行速度会收到限制,并且系统会尽可能回收超出的内存
    ;选项值可以是以字节为单位的 绝对内存大小(可以使用以1024为基数的 K, M, G, T 后缀), 也可以是以百分比表示的相对内存大小
    MemoryHigh=40M
    ;为此单元的进程设置CPU时间限额,必须设为一个以"%"结尾的百分数, 表示该单元最多可使用单颗CPU总时间的百分之多少
    CPUQuota=20%
    
    [Install]
    WantedBy=multi-user.target
    

文档捉虫

“有虫”文档片段

问题描述

提交类型 issue
有点复杂...
找人问问吧。
PR
小问题,全程线上修改...
一键搞定!
问题类型
规范和低错类

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

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

● 英文中包含中文字符;

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

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

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

易用性

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

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

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

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

正确性

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

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

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

● 代码片段错误;

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

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

风险提示

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

内容合规

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

● 内容侵权;

您对文档的总体满意度

非常不满意
非常满意
提交
根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。