一、aops-ceres介绍
aops-ceres作为AOps模块的客户端,通过http协议与AOps管理中心进行数据交互,提供采集主机信息、数据采集工具管理(如gala-gopher)、响应并处理中心命令等功能。
二、环境要求
建议使用openEuler 22.03 LTS及以上环境运行。
三、配置环境部署
1. aops-ceres部署
使用yum安装:
yum install aops-ceres
修改配置文件:
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侧的数据库中,以便后续管理。
- 参考
/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
}
注意:确保aops-zeus已在目标主机运行,如192.168.1.2,且注册的主机组要存在。
- 执行:
aops-ceres register [-f <FILE>] [-d <register_host_info>]
- 前台展示注册结果,注册成功时,保存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'))
[root@localhost ~]#
四、插件支持
4.1 gala-gopher
4.1.1 介绍
gala-gopher是基于eBPF的低负载探针框架,可用于对主机的CPU,内存,网络等状态的监控以及数据采集服务。可根据实际业务需求对已有采集探针采集状态进行配置。
4.1.2 部署
- 基于yum源安装:
yum install gala-gopher
- 基于实际的业务需求,选择需要探针进行开启,探针信息可在
/opt/gala-gopher/gala-gopher.conf
下查看。 - 启动服务:
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>
描述:启动已安装但未运行的插件,目前仅支持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
- 描述:采集目标应用的运行信息,包括但不限于CPU与内存的使用情况与资源限制情况,当前采集应用只支持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:
若有报错,请查看日志/var/log/aops/aops.log,根据日志中相关报错提示解决问题,并重启服务。
建议项目在Python3.7以上环境运行,安装Python依赖库时需要注意其版本。
access_token值可在注册完成后,从
/etc/aops/ceres_token.json
文件中获取。所有命令中列出的args均为json字符串。
对于插件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