Skip to main content
Version: 1.7.3

blade prepare

本文档主要介绍blade prepare命令使用

Usage

应用层场景在create注入之前,将应用层 agent 挂载到目标进程中,目前只有JavaC++应用层场景需要。 该命令只有在主机上进行应用层故障(这里只支持 jvm\cpluse)注入(create)之前是需要使用(k8s 容器环境会自动进行 agent 挂载,不需要手动执行),其相对应的是./blade create jvm **./blade create cpluse *相关执行演练实验场景

Usage:
blade prepare
blade prepare [command]

Aliases:
prepare, p

blade check [target] [flags]

Exec

进入解压包本地所放置的路径,可通过./blade prepare -h查看所有支持的 target,目前支持两种

  • Java:挂载相应的 Java Agent 到目标 Java 进程中
  • Cplus:挂载相应的 C++ Agent 到目标 C++进程中
[root@test chaosblade]# ./blade prepare -h
Prepare to experiment, for example, attach agent to java process or deploy agent to kubernetes cluster.

Usage:
blade prepare
blade prepare [command]

Aliases:
prepare, p

Examples:
prepare jvm --process tomcat

Available Commands:
cplus Active cplus agent.
jvm Attach a type agent to the jvm process

Flags:
-h, --help help for prepare

Global Flags:
-d, --debug Set client to DEBUG mode

Use "blade prepare [command] --help" for more information about a command.

Options

可通过./blade prepare jvm -h查看具体 Jvm prepare 时支持参数。以下以 Java 为例,cplus 类似

[root@test chaosblade]# ./blade prepare jvm -h
Attach a type agent to the jvm process for java framework experiment.

Usage:
blade prepare jvm

Examples:
prepare jvm --process tomcat

Flags:
-a, --async whether to attach asynchronously, default is false
-e, --endpoint string the attach result reporting address. It takes effect only when the async value is true and the value is not empty
-h, --help help for jvm
-j, --javaHome string the java jdk home path
-n, --nohup used to internal async attach, no need to config
--pid string the target java process id
-P, --port int the port used for agent server
-p, --process string the java application process name (required)
-u, --uid string used to internal async attach, no need to config

Global Flags:
-d, --debug Set client to DEBUG mode
Name, shorthandDefaultDencryption
-a, --asyncfalsewhether to attach asynchronously
-e, --endpoint stringthe attach result reporting address. It takes effect only when the async value is true and the value is not empty
-j, --javaHome$JAVA_HOMEthe java jdk home path
-P, --portthe port used for agent server
--pidthe target java process id(Choose one of pid and process)
-p, --processthe java application process name(Choose one of pid and process)
-u, --uidused to internal async attach, no need to config
-d, --debugfalseSet client to DEBUG mode for log

Examples

指定 pid 执行 java agent 挂载

对 pid 为 26652 的 Java 进程进行探针挂载

blade prepare jvm --pid 26652
# 命令也可简写为
blade p jvm --pid 26652

指定 process 执行 java agent 挂载

对进程中含有tomcat关键词的 Java 进程进行探针挂载

[root@test chaosblade]# ./blade prepare jvm --process tomcat

卸载 java agent

执行成功,会返回实验准备的 UID,例如:

{"code":200,"success":true,"result":"2552c05c6066dde5"}

2552c05c6066dde5 就是实验准备对象的 UID,执行卸载操作需要用到此 UID,例如

blade revoke 2552c05c6066dde5
# 命令也可简写为
blade r 2552c05c6066dde5

如果 UID 忘记,可通过以下命令查询

blade status --type prepare --target jvm
# 命令也可简写为:
blade s --type p --target jvm

挂载 java agent 操作是个比较耗时的过程,在未返回结果前请耐心等待

常见问题

Q: {"code":500,"success":false,"error":"cannot get port from local, please execute prepare command first"} A: 没有挂载所需的 java agent,执行 prepare jvm 命令挂载

Q: {"code":602,"success":false,"error":"less --process or --pid flags"} A: 缺少必要参数用于指定 java 应用进程