采集器实时拨测命令

创建时间: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

#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
  • Response:
{
    "OPT_STATUS": "SUCCESS",  // API 触发的操作是否成功,SUCCESS 表示成功,其他值表示未成功
    "DESCRIPTION": "",        // API 触发的操作失败原因
    "DATA": "xxx",            // 命令执行的返回结果, 与 xxx 相同
}
1
2
3
4
5