长期支持版本

    社区创新版本

      aops-cers部署指南

      一、aops-ceres介绍

      aops-ceres作为AOps模块的客户端,通过http协议与AOps管理中心进行数据交互,提供采集主机信息、数据采集工具管理(如gala-gopher)、响应并处理中心命令等功能。

      二、环境要求

      建议使用openEuler 22.03 LTS及以上环境运行。

      三、配置环境部署

      1. aops-ceres部署

      1. 使用yum安装:

        yum install aops-ceres

      2. 修改配置文件:

        vim /etc/aops/ceres.conf

        [gopher]
        ;gala-gopher默认配置文件路径,如需修改请确保文件路径的准确性
        config_path=/etc/gala-gopher/gala-gopher.conf
        
        ;aops-ceres采集日志配置
        [log]
        ;采集日志级别,可设置为DEBUG,INFO,WARNING,ERROR,CRITICAL
        log_level=INFO
        ;采集日志存放位置
        log_dir=/var/log/aops
        ;日志文件最大值
        max_bytes=31457280
        ;备份日志的数量
        backup_count=40
        

      2. 向aops-zeus注册

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

      注册前,须在zeus侧获取管理用户的当前token值,调用register命令向aops-zeus注册。注册成功后,并在前台展示注册结果。同时将本机相关信息存入到aops-zeus侧的数据库中,以便后续管理。

      1. 参考/opt/aops/register_example.json模板文件,将其中数据项的值改为真实数据。
      {
          
        "ssh_user": "root", // 本机远程登录用户名
        "password": "password", // 本机远程登录密码
        "ssh_port":22,  // 本机远程连接端口
        "zeus_ip": "192.168.1.2", // aops-zeus运行主机IP地址
        "zeus_port": 11111, // aops-zeus服务运行端口
        "host_name": "host_name", // 要注册的主机名称
        "host_group_name": "aops", // 主机组名称,确保该主机组已经存在
        "management": false, // 是否注册为管理机器
        "access_token": "token-string" // 当前管理用户登录后获取到的token
      }
      
      ```JSON
      {
          
        "ssh_user": "root", // 本机远程登录用户名
        "password": "password", // 本机远程登录密码
        "ssh_port":22,  // 本机远程连接端口
        "zeus_ip": "192.168.1.2", // aops-zeus运行主机IP地址
        "zeus_port": 11111, // aops-zeus服务运行端口
        "host_name": "host_name", // 要注册的主机名称
        "host_group_name": "aops", // 主机组名称,确保该主机组已经存在
        "management": false, // 是否注册为管理机器
        "access_token": "token-string" // 当前管理用户登录后获取到的token
      }
      ```
      
      **注意**:确保aops-zeus已在目标主机运行,如192.168.1.2,且注册的主机组要存在。
      
      1. 执行:aops-ceres register [-f <FILE>] [-d <register_host_info>]

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

        注册结果示例:

        注册成功

        [root@localhost ~]# aops-ceres register -f register.json
        Register Success
        

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

        [root@localhost ~]# aops-ceres register -f register.json
        Register Fail
        [root@localhost ~]#
        

        对应日志内容

        2022-09-05 16:11:52,576 ERROR command_manage/register/331: HTTPConnectionPool(host='192.168.1.2', 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'))
        

      四、插件支持

      4.1 gala-gopher

      4.1.1 介绍

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

      4.1.2 部署

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

      4.1.3 其他

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

      五、命令支持

      5.1 命令清单

      aops-ceres COMMAND [options]
      
      List of Main Commands:
      plugin          manage plugin
      collect         collect some information
      apollo          cve/bugfix related action
      
      General plugin options:
      --start <args>
      --stop  <args>
      --change-collect-items <args>
      --info <args>
      
      General info options: 
      --file <args>
      --application <args>
      --host <args>
      
      General apollo options:
      --set-repo <args>
      --scan <args>
      --fix <args>
      

      5.1.1、aops-ceres plugin --start <args>

      c61150af1872b1536003270cc3933875dca1af55

      • 描述:启动已安装但未运行的插件,目前仅支持gala-gopher插件。

      • args: gala-gopher

      5.1.2、aops-ceres plugin --stop <args>
      • 描述:使正在运行的插件停止,目前仅支持gala-gopher插件。

      • args: gala-gopher

      5.1.3、aops-ceres plugin --change-collect-items <args>
      • 描述:更改插件采集项的采集状态,当前仅支持对gala-gopher采集项的更改,gala-gopher采集项可在配置文件中查看/opt/gala-gopher/gala-gopher.conf

      • 参数示例:

        {
            "gala-gopher":{
                "redis":"auto",
                "system_inode":"on",
                "tcp":"on",
                "haproxy":"auto"
            }
        } 
        
      • 命令执行结果示例:

        {
            "resp": {
                "gala-gopher": {
                    "failure": [
                        "redis"
                    ],
                    "success": [
                        "system_inode",
                        "tcp",
                        "haproxy"
                    ]
                }
            }
        }
        
      5.1.4、aops-ceres plugin --info
      • 描述:采集目标应用集内正在运行的应用,当前目标应用集包含mysql, kubernetes, hadoop, nginx, docker, gala-gopher。

      命令执行结果示例:

      [
        {
            "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"
          }
        ]
      
      5.1.5、aops-ceres collect --host <args>
      • 描述:获取安装ceres主机的信息,包含系统版本,BIOS版本,内核版本,CPU信息以及内存信息。

      • 参数示例:

          ["memory", "os", "cpu", "disk"]  
        

        说明:memory、os、cpu、disk可选其中的任意一个或多个,传入空数组时,默认获取全部信息。

      • 命令执行结果示例:

        {
            "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"
                }
              ]
        }
        
      5.1.6、aops-ceres collect --application
      • 描述:采集目标应用集内正在运行的应用,当前目标应用集包含mysql, kubernetes, hadoop, nginx, docker, gala-gopher。

      • 命令执行结果示例:

          ["gala-gopher", "mysql"]
        
      5.1.7、aops-ceres collect --file <args>
      • 描述:采集目标配置文件内容、文件权限、文件所属用户等信息。当前仅支持读取小于1M,无执行权限,且支持UTF8编码的文本文件。

      • args:需采集文件完整路径的序列。

        示例:

        [ "/home/test.conf", "/home/test.ini", "/home/test.json"]
        
      • 命令执行结果示例:

        {
            "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"
            ]
        }
        
      5.1.8、aops-ceres apollo --set-repo <args>
      • 描述:设置repo源。

      • 请求参数示例:

        {
            "repo_info":{
                "name":"update",
                "dest":"/etc/yum.repos.d/aops-update.repo",
                "repo_content":"repo content"
            },
            "check_items":[],
            "check":false,
        }
        
      • 命令执行结果示例:

        {
         "code": "Succeed",
         "msg": "operate success"
        }
        
      5.1.9、aops-ceres apollo --scan <args>
      • 描述:执行CVE扫描

      • 请求参数示例:

        {
            "check":false,
            "check_items":[],
            "basic":true //目前仅支持true
        }
        
      • 命令执行结果示例:

        {
         "code": "Succeed",
         "msg": "operate success",
         "result": {
            "cves":[
              {
                "cve_id": "CVE-2022-4904", 
                "hotpatch": false
              },
              {
                "cve_id": "CVE-2022-25308", 
                "hotpatch": false
                }
            ],
            "installed_packages":[
              {
                "name": "zip", 
                "version": "3.0-30"
              },
              {
                "name": "python-sqlalchemy", 
                "version": "1.3.24-1"
              }
              ],
            "os_version":"openEuler 22.03 LTS"
            }
        }
        
      5.1.10、aops-ceres apollo --fix <args>
      • 描述:执行CVE修复动作

      • 请求参数示例:

          {
            "check_items": [],
            "check": false,
            "cves": [
                {
                  "cve_id": "CVE-2021-3781",
                  "hotpatch": true
                },
                {
                  "cve_id": "CVE-2021-3782",
                  "hotpatch": true
                }
              ]
          }
        
      • 命令执行结果示例:

        {
         "code": "Succeed",
         "msg": "operate success",
         "result": [
          {
           "cve_id": "CVE-2021-3782",
           "log": "fix succeed",
           "result": "succeed"
          },
          {
           "cve_id": "CVE-2021-3781",
           "log": "fix succeed",
           "result": "succeed"
          }
         ]
        }
        
      5.1.11、aops-ceres register [-f <file>] [-d <register_host_info>]
      • 描述:向aops-zeus服务注册

      • 请求参数示例:

          {
              "ssh_user": "root",           //SSH远程登录本机用户名
              "password": "password",       //SSH远程登录本机用密码
              "ssh_port":22,                //SSH远程登录本机端口
              "zeus_ip": "127.0.0.1",       //zeus服务所在IP
              "zeus_port": 11111,           //zeus服务所在port
              "host_name": "host_name",     //要注册的主机名
              "host_group_name": "aops",    //注册主机组组名
              "management": false,          //是否为管理节点
              "access_token": "token-string"//用户token
          }
        

      FAQ

      c61150af1872b1536003270cc3933875dca1af55

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

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

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

      4. 所有命令中列出的args均为json字符串。

      5. 对于插件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即可。
      文档捉虫
      编组 3备份