API接口文档
API接口文档
- 1: 安装软件相关接口
- 1.1: /install/run
- 1.2: /install/status
- 2: 插件相关接口
- 2.1: /plugin/reload
- 3: 服务器端相关接口
- 3.1: /server/info
- 4: 节点相关接口
- 4.1: /host/info
- 4.2: /host/list
- 4.3: /host/search
- 5: 流程编排相关接口
- 5.1: /layout/run
- 5.2: /layout/status
- 6: 命令行相关接口
- 6.1: /cmd/kill
- 6.2: /cmd/ps
- 6.3: /cmd/pty
- 6.4: /cmd/run
- 6.5: /cmd/status
- 6.6: /cmd/sync_run
- 7: 日志采集相关接口
- 7.1: /logging/config
- 7.2: /logging/remove
- 7.3: /logging/start
- 7.4: /logging/stop
- 7.5: /logging/task_info
- 8: 文件操作相关接口
- 8.1: /file/download
- 8.2: /file/ls
- 8.3: /file/upload_from
- 8.4: /file/upload
- 9: 主机信息采集相关接口
- 9.1: /hm/static
1 - 安装软件相关接口
安装软件相关接口,依赖install插件
1.1 - /install/run
安装软件
参数
id
: 机器iduri
: 下载uri,可选url
: 下载url,可选dir
: 安装或解压路径,可选timeout
: 超时时间,单位秒,可选,默认300auth
: sudo、su或空值,可选user
: 账号,可选pass
: 密码,可选
返回值
{
"code": 0,
"payload": 任务ID
}
错误,未找到机器
{
"code": 404,
"msg": "client not found"
}
错误,其他运行时错误
{
"code": 500,
"msg": 错误内容
}
说明
dir
参数仅当msi
、exe
或压缩包时有效url
和uri
参数必须传一个,且uri
参数的优先级高于url
参数- 目前仅支持
deb
、rpm
、tar
、tar.gz
、tar.bz2
、zip
、msi
和exe
类型的安装包
1.2 - /install/status
获取安装任务详情
参数
task_id
: 任务ID
返回值
{
"code": 0,
"payload": {
"done": 是否完成,
"actions": [
{
"action": 任务类型,
"name": 名称,
"time": 时间戳,
"ok": 是否成功,
"msg": 失败信息
}, ...
]
}
}
错误,任务不存在
{
"code": 404,
"msg": 错误信息
}
说明
- 任务类型包含以下几种:
download
: 下载安装包install
: 安装或解压安装包file
: 附加文件done
: 完成
name
字段定义:download
: 安装包下载路径install
: 安装包下载路径file
: 附加文件保存路径
2 - 插件相关接口
插件相关接口
2.1 - /plugin/reload
重载插件
参数
无
返回值
{
"code": 0
}
3 - 服务器端相关接口
服务器端相关接口
3.1 - /server/info
获取当前服务端信息
参数
无
返回值
{
"code": 0,
"payload": {
"clients": 连接客户端数量,
"plugins": 插件数量,
"version": 版本号,
"created": 安装时间
}
}
4 - 节点相关接口
节点相关接口
4.1 - /host/info
获取单个节点的基本信息
参数
id
: 机器ID
返回值
{
"code": 0,
"payload": {
"hostname": 主机名,
"os": linux或windows
}
}
4.2 - /host/list
查询节点列表
参数
ids
: 需获取主机ID列表,可选,csv
返回值
{
"code": 0,
"payload": [
{
"id": 机器ID,
"version": agent版本号,
"ip": ip地址,
"mac": mac地址,
"os": 操作系统(windows或linux),
"platform": 操作系统名称(centos或debian),
"arch": 操作系统位数(amd64或i386)
}, ...
]
}
说明
- 当不传ids参数时表示获取所有主机列表,否则获取给定ID的列表,若给定ID不存在则忽略
4.3 - /host/search
根据IP地址或MAC地址查找节点
参数
keyword
: IP地址或MAC地址
返回值
{
"code": 0,
"payload": 主机ID
}
错误,未找到
{
"code": 404,
"msg": "client not found"
}
5 - 流程编排相关接口
流程编排相关接口,目前仅支持exec和file插件
5.1 - /layout/run
执行编排文件
参数
ids
: id列表,csv格式mode
: 执行顺序,可选,默认sequencecontinue
: 出错时是否继续,可选,默认为falsefile
: 资源文件tar包user
: 账号,可选pass
: 密码,可选
返回值
{
"code": 0,
"payload": 任务ID
}
错误,检测未通过
{
"code": 1,
"msg": 错误内容
}
错误,指定agentid未找到
{
"code": 404,
"msg": 错误内容
}
说明
mode
参数支持以下执行方式:sequence: 顺序执行,按给定的id列表顺序一个一个agent执行 parallel: 并发执行,按给定的id列表同时执行,此时continue参数无效 evenodd: 奇偶模式执行,按给定的id列表顺序分为两组,分别执行
上传的tar包中必须包含main.yaml或main.json文件作为执行时的编排文件
tar包中不允许包含软链文件,在解压时软链文件将被忽略
5.2 - /layout/status
获取执行进度信息
参数
task_id
: 任务ID
返回值
{
"code": 0,
"payload": {
"done": 是否全部完成,
"created": 开始时间戳,
"finished": 结束时间戳未完成时为0,
"total_count": 总触达节点数量,
"finished_count": 完成节点数量,
"nodes": [
{
"id": 节点ID,
"created": 开始时间戳,
"finished": 结束时间戳未完成时为0,
"ok": 是否成功,
"msg": 错误信息
}, ...
]
}
}
错误,任务不存在
{
"code": 404,
"msg": 错误内容
}
6 - 命令行相关接口
命令行相关接口,依赖exec插件
6.1 - /cmd/kill
杀死正在执行的进程
参数
id
: 机器idpid
: 进程id
返回值
{
"code": 0
}
错误,未找到机器
{
"code": 404,
"msg": "(client|process) not found"
}
6.2 - /cmd/ps
列出当前正在执行的命令列表
参数
id
: 机器ID
返回值
{
"code": 0,
"payload": [
{
"id": 进程ID,
"channel": 输出信息的管道ID,
"name": 进程名称,
"start_time": 进程创建时间戳,
"up_time": 启动时间(秒)
}, ...
]
}
错误,未找到机器
{
"code": 404,
"msg": "client not found"
}
6.3 - /cmd/pty
获取脚本输出内容
参数
id
: 机器IDpid
: 进程ID
返回值
http_code=200
body=内容
pid不存在
http_code=404
body=process not found
错误,其他异常
http_code=500
body=错误内容
6.4 - /cmd/run
执行命令
参数
id
: 机器IDcmd
: 命令args
: 运行参数,csv,逗号用%2c%编码timeout
: 运行超时秒数,可选(默认3600)auth
: sudo、su或空值,可选user
: 账号,可选pass
: 密码,可选workdir
: 工作目录,可选env
: 环境变量,csv,逗号用%2c%编码defer_rm
: 运行完毕后删除的文件路径,可选callback
: 运行完毕后回调地址,可选
返回值
{
"code": 0,
"payload": {
"channel_id": "20220706-00002-f230bae72f2ca269", // 任务ID
"pid": 9655 // 进程id
}
}
错误,未找到机器
{
"code": 404,
"msg": "client not found"
}
错误,超时
{
"code": 408,
"msg": "timeout"
}
错误,命令执行失败
{
"code": 1,
"msg": "错误原因"
}
说明
- 当给定
defer_rm
参数时命令执行完毕后将会删除给定路径的文件 - 当给定
callback
参数时将会通过GET
的方式进行回调,同时将以下参数拼接在url内部agent_id
: 执行agent的IDpid
: 创建进程ID
6.5 - /cmd/status
获取进程运行状态
参数
id
: 机器IDpid
: 进程ID
返回值
{
"code": 0,
"payload": {
"id": 进程ID,
"channel": 该进程的channel id,
"created": 进程创建时间,
"running": 该进程是否在执行中,
"code": 返回码(仅当running=false时有效)
}
}
错误,未找到机器或进程
{
"code": 404,
"msg": 错误内容
}
6.6 - /cmd/sync_run
执行命令并同步等待其完成
参数
id
: 机器IDcmd
: 命令args
: 运行参数,csv,逗号用%2c%编码timeout
: 运行超时秒数,可选(默认60,最大60)auth
: sudo、su或空值,可选user
: 账号,可选pass
: 密码,可选workdir
: 工作目录,可选env
: 环境变量,csv,逗号用%2c%编码defer_rm
: 运行完毕后删除的文件路径,可选
返回值
{
"code": 0,
"payload": {
"code": 0, // 返回码(-65535表示执行失败或超时)
"data": "aGVsbG8gd29ybGQ=", // 返回内容经过base64编码
}
}
错误,未找到机器
{
"code": 404,
"msg": "client not found"
}
错误,超时
{
"code": 408,
"msg": "timeout"
}
错误,命令执行失败
{
"code": 1,
"msg": "错误原因"
}
说明
- 当给定
defer_rm
参数时当命令执行完毕后将会执行对应操作
7 - 日志采集相关接口
日志采集相关接口,依赖log-agent
7.1 - /logging/config
下发日志采集配置
参数
pid
: 项目IDtype
: k8s、docker、logtail中的任意一个exclude
: 去除日志的正则,可选batch
: 批量上报条数,默认1000buffer
: 批量上报数据量,单位字节,默认4096interval
: 批量上报间隔超时时间,单位秒,默认30
k8s参数
ns
: 所需采集的namespacename
: 所需采集的项目名,csvdir
: 文件路径,支持通配符api
: k8s接口地址token
: k8s采集时所需的token信息
docker参数
ids
: 目标机器id,csvct_name
: 容器名称ct_tag
: 容器tag,可选dir
: 文件路径,支持通配符
logtail参数
ids
: 目标机器id,csvdir
: 文件路径,支持通配符
返回值
{
"code": 0
}
错误:没有可用的采集节点
{
"code": 1,
"msg": 错误内容
}
说明
- 当
type
参数为k8s
或docker
且dir
参数为空时表示采集该容器的stdout输出信息
7.2 - /logging/remove
删除采集任务
参数
pid
: 项目ID
返回值
{
"code": 0
}
错误,任务不存在
{
"code": 404,
"msg": 错误内容
}
7.3 - /logging/start
启动采集任务
参数
pid
: 项目ID
返回值
{
"code": 0
}
错误,项目已启动
{
"code": 1,
"msg": 错误内容
}
错误,任务不存在
{
"code": 404,
"msg": 错误内容
}
7.4 - /logging/stop
停止采集任务
参数
pid
: 项目ID
返回值
{
"code": 0
}
错误,项目未启动
{
"code": 1,
"msg": 错误内容
}
错误,任务不存在
{
"code": 404,
"msg": 错误内容
}
7.5 - /logging/task_info
获取采集任务详情
参数
pid
: 项目ID
返回值
{
"code": 0,
"payload": {
"type": 任务类型,
"exclude": 去除日志的正则,
"batch": 批量上报条数,
"buffer": 批量上报数据量,
"interval": 批量上报间隔超时时间,
"created": 创建时间戳,
"nodes": [
{
"id": 节点ID,
"status": running或stoped,
"info": [
{ // k8s
"ns": namespace,
"name": 项目名,
"dir": 文件路径,
"pods": 上一次采集时的pod数量,定期上报
},
{ // docker
},
{ // file
"dir": 文件路径
}, ...
]
}, ...
]
}
}
}
错误,任务不存在
{
"code": 404,
"msg": 错误内容
}
8 - 文件操作相关接口
文件操作相关接口,依赖file插件
8.1 - /file/download
下载某个节点上的文件
参数
id
: 机器iddir
: 文件路径timeout
: 超时事件,默认10分钟
返回值
文件内容
错误,未找到机器或文件
http_code=404
body=(client/file) not found
错误,超时
http_code=408
body=timeout
错误,校验码错误
http_code=409
body=invalid checksum
错误,运行时错误
http_code=503
body=错误内容
8.2 - /file/ls
查询某个节点上的文件
参数
id
: 机器IDdir
: 目录
返回值
{
"code": 0,
"payload": {
"dir": 目录,
"files": [
{
"name": 名称,
"auth": 权限,
"user": 所属用户,
"group": 所属组,
"size": 文件大小,
"mod_time": 更新时间戳,
"is_dir": 是否是目录,
"is_link": 是否是软链
}, ...
]
}
}
错误,未找到机器或目录不存在
{
"code": 404,
"msg": "(client/directory) not found"
}
错误,超时
{
"code": 408,
"msg": "timeout"
}
错误,其他错误
{
"code": 500,
"msg": 错误内容
}
8.3 - /file/upload_from
从指定url上传文件到某个节点
参数
id
: 机器iddir
: 保存位置name
: 文件名uri
: 下载uriauth
: sudo、su或空值,可选user
: 账号,可选pass
: 密码,可选mod
: 文件权限,十进制,可选,默认0644own_user
: 文件所属用户own_group
: 文件所属分组timeout
: 超时时间,单位秒,可选,默认60
返回值
{
"code": 0,
"payload": {
"dir": 文件存放路径
}
}
错误,未找到机器
{
"code": 404,
"msg": "client not found"
}
错误,其他运行时错误
{
"code": 500,
"msg": 错误内容
}
错误,上传失败
{
"code": 1,
"msg": 错误内容
}
错误,文件内容错误
{
"code": 2,
"msg": 错误内容
}
8.4 - /file/upload
上传文件到某个节点
参数
id
: 机器iddir
: 保存位置auth
: sudo、su或空值,可选user
: 账号,可选pass
: 密码,可选mod
: 文件权限,十进制,可选,默认0644own_user
: 文件所属用户own_group
: 文件所属分组file
: http标准文件上传字段timeout
: 超时时间,单位秒,可选,默认60md5
: 文件md5,可选
返回值
{
"code": 0,
"payload": null
}
错误,未找到机器
{
"code": 404,
"msg": "client not found"
}
错误,其他运行时错误
{
"code": 500,
"msg": 错误内容
}
错误,上传失败
{
"code": 1,
"msg": 错误内容
}
错误,文件内容错误
{
"code": 2,
"msg": 错误内容
}
9 - 主机信息采集相关接口
主机信息采集相关接口,依赖host.monitor插件
9.1 - /hm/static
获取主机的静态监控数据
参数
id
: 机器ID
返回值
{
"code": 0,
"payload": {
"timestamp": 上报时间戳,
"host_name": 主机名,
"uptime": 启动时长,
"os_name": 系统类型,linux、windows,
"platform": 系统名称,如debian、centos,
"platform_version": 系统版本号,
"kernel_arch": 内核类型,如i386、amd64,
"kernel_version": 内核版本,如3.10.0-1062.el7.x86_64,
"physical_core": 物理核心数,
"logical_core": 逻辑核心数,
"cores": [
{
"processor": 该核心编号,
"model": 名称,如Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz,
"core": 所在物理核上的编号,
"cores": 某块CPU上的编号,
"physical": 物理CPU编号
}, ...
]
"physical_memory": 物理内存大小,
"swap_memory": swap内存大小,
"disks": [
{
"name": 名称,linux为挂载路径如/run,windows为盘符如C:,
"type": 文件系统类型,如NTFS,
"options": [附加参数,如rw,nosuid,nodev, ...],
"total": 总容量,
"inodes": inode数量
}, ...
],
"intfs": [
{
"index": 编号,
"name": 名称,
"mtu": mtu,
"flags": [附加信息, ...],
"mac": mac地址,
"addrs": [ip地址, ...],
}, ...
]
}
}
错误,未找到机器
{
"code": 404,
"msg": "client not found"
}
错误,超时
{
"code": 408,
"msg": "timeout"
}