采集器实时拨测命令
创建时间:2024-11-01 最近修改时间:2024-11-01
#1. 采集器实时拨测命令
该功能从 v6.5 版本开始支持
#1.1 支持的命令
ping、tcping、curl、dig、traceroute。 (命令由采集器代码实现,尽可能与原命令相同)
- ping
| 参数 | API 参数名 | 默认值 | 是否必填 | 说明 |
|---|---|---|---|---|
| destination | host | 是 | 目标地址。 | |
| -c count | count | 4 | 否 | 发送指定数量(count)的 ECHO_REQUEST 数据包后停止。 如果设置了截止时间选项,ping 将等待相应数量的 ECHO_REPLY 数据包,直到超时为止。 |
| -s packetsize | size(单位:Bytes) | 56 | 否 | 指定要发送的数据字节数,默认值为 56。 当与 ICMP 头部的 8 字节数据结合时,总共转换为 64 字节的 ICMP 数据。 |
| -i interval | interval(单位:秒) | 1 | 否 | 在发送每个数据包之间等待一定的时间间隔。 |
| -W timeout | timeout(单位:秒) | 1 | 否 | 等待响应的时间。 |
- tcping
| 参数 | API 参数名 | 默认值 | 是否必填 | 说明 |
|---|---|---|---|---|
| <ip addr> | host | 是 | 目标地址。 | |
| <port> | port | 是 | 设置要使用的目标端口。 | |
| count | 4 | 否 | 指定要发送的 TCP 连接请求的数量。 | |
| interval(单位:秒) | 1 | 否 | 指定发送 TCP 连接请求之间的时间间隔。 | |
| timeout(单位:秒) | 1 | 否 | 等待响应的时间。 |
- curl
| 参数 | API 参数名 | 默认值 | 是否必填 | 说明 |
|---|---|---|---|---|
| url | url | 是 | URL 语法依赖于协议。可以在 RFC 3986 中找到详细的描述。 | |
| -X | method | GET | 否 | 默认值:GET。指定要使用的请求方法。 |
| -d, --data | body | 否 | 以 POST 请求的形式向 HTTP 服务器发送指定的数据, 这与用户填写 HTML 表单并按下提交按钮时浏览器的操作方式相同。 | |
| -H, --header | headers | 否 | 向服务器传递自定义头部(headers),您可以同时 指定多个头部,各头部之间用换行符(\n)分隔。 | |
| -L, --location | location | false | 否 | 重定向。 |
| -v, --verbose | verbose | false | 否 | 详细输出操作。 |
- dig
| 参数 | API 参数名 | 默认值 | 是否必填 | 说明 |
|---|---|---|---|---|
| name | domain | 是 | 域名。 | |
| server | server | 8.8.8.8 | 否 | 指定 DNS 服务器。 |
| type | query_type | A | 否 | 查询类型包括(A, ANY, MX, NS, SOA, HINFO, AXFR, TXT, ...)等。 |
- traceroute
| 参数 | API 参数名 | 默认值 | 是否必填 | 说明 |
|---|---|---|---|---|
| host | host | 是 | 目标地址。 | |
| max_hops | 30 | 否 | 设置最大跳数(达到的最大生存时间,TTL)。 |
#1.2 API
通过代码调用 API 时,需要携带 API-KEY 进行授权,参见 API 请求认证
#1.2.1 获取拨测命令
- URL: /api/deepflow-server/v1/agent/${agent_name}/cmd/?type=probe
agent_name表示采集器的名称,可以通过采集器列表获取
- Method: GET
- Request: 无
- Response:
{
"OPT_STATUS": "SUCCESS", // API 触发的操作是否成功,SUCCESS 表示成功,其他值表示未成功
"DESCRIPTION": "", // API 触发的操作失败原因
"DATA": {
"remote_commands": [ // 采集器支持执行的命令
{
"cmd": "ping", // 命令名,用于执行命令
"output_format": 0, // 输出格式(0: 文本, 1: 文件),用于执行命令
"ident": "ping_p2g_$h2t_-c_$c3t_-s_$s2e_-i_$i6l_-W_$t5t", // 命令的唯一标识,用于执行命令
"params": [ // 命令支持的参数
{
"name": "host", // 参数名,用于执行命令
"regex": "^.*$", // 参数取值范围
"required": true, // 必填
"param_type": 0, // 参数类型(0: 字符串, 1: 布尔)
"description": "Destination Address" // 参数描述
},
{
"name": "count",
"regex": "^[1-9]\\d*$",
"required": false,
"param_type": 0,
"description": "Default value: 4.% Stop after sending count ECHO_REQUEST packets. With deadline option, ping waits for count ECHO_REPLY packets, until the timeout expires."
},
// ... 忽略剩余的参数
],
"type_name": "ping" // 命令类型
},
// ... 忽略剩余的拨测命令
]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#1.2.2 执行拨测命令
- URL: /api/deepflow-server/v1/agent/${agent_name}/cmd/run
agent_name表示采集器的名称,可以通过采集器列表获取
- Method: POST
- Request:
| 参数名称 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| output_format | int | 是 | 输出格式(0: 文本, 1: 文件)。 从获取命令接口的字段 remote_commands 获取。 |
| cmd | string | 是 | 命令名。 从获取命令接口的字段 cmd 获取。 |
| command_ident | string | 是 | 命令唯一标识。 从获取命令接口的字段 ident 获取。 |
| params | Param 列表 | 是 | 命令参数列表 |
Param 结构体
| 参数名称 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| key | strings | 根据 required 字段判断 | 命令参数名。 从获取命令接口中具体命令的 params 获取。 |
| value | string | 根据 required 字段判断 | 参数值。 字符串类型(布尔或整形填其字符串形式,如:"false", "1") |
请求体示例
{
"output_format": 0, // 输出格式,从获取命令接口的字段 remote_commands 获取
"cmd": "ping", // 命令名,从获取命令接口的字段 cmd 获取
"command_ident": "ping_p2g_$h2t_-c_$c3t_-s_$s2e_-i_$i6l_-W_$t5t", // 命令唯一标识,从获取命令接口的字段 ident 获取
"params": [ // 命令的执行参数
{
"key": "host", // 命令参数,从获取命令接口中具体命令的 params 获取
"value": "github.com" // 参数值,字符串类型(布尔或整形填其字符串形式,如:"false", "1")
},
{
"key": "count",
"value": "5" // 参数值,数字需写成字符串形式
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- Response:
{
"OPT_STATUS": "SUCCESS", // API 触发的操作是否成功,SUCCESS 表示成功,其他值表示未成功
"DESCRIPTION": "", // API 触发的操作失败原因
"DATA": "xxx", // 命令执行的返回结果, 与 xxx 相同
}
1
2
3
4
5
2
3
4
5