使用云助手插件

acs-plugin-manager是云助手内置的插件管理工具,通过命令行即可完成插件的查询、执行、状态检查、删除和测试等全生命周期管理。

使用限制

确保云助手Agent版本不低于以下版本:

  • Windows:1.0.0.137

  • Linux:1.0.2.510

查看或升级 Agent 版本,请参考升级、禁止自动升级云助手Agent

运行方式

云助手插件支持以下两种方式运行:

核心命令参考

查询插件

  • 查询线上所有的云助手插件

    sudo acs-plugin-manager --list
  • 查询本地已安装的云助手插件

    sudo acs-plugin-manager --list --local

输出示例

Name                         Version  Publisher  OsType  Arch  PluginType  
config_ecs_instance_connect  1.20     aliyun     LINUX   X64   Once
ecs_tools_test               1.4      aliyun     LINUX   ALL   Persist     

输出字段说明

参数名

说明

Name

插件名称。

Version

插件版本。

Publisher

插件提供者。

OsType

插件支持的操作系统。可能值:LINUX、WINDOWS或者BOTH(两者均支持)。

Arch

插件支持的架构。可能值:X64、X86、ARMALL(全部支持)。

PluginType

插件类型。可能值:

  • Once:一次性插件,执行结束后即终止。

  • Persist:常驻插件,以常驻进程的方式运行。

  • Commander:组件,Agent主程序之外的独立程序,能够按照约定的通信协议从Agent主进程接收任务内容并返回执行结果。

运行插件

  • 运行云助手插件

    默认情况下,此命令会优先执行本地已安装的插件。如果本地未安装,或线上存在更新的版本,则会自动从线上下载并执行。

    sudo acs-plugin-manager --exec --plugin <plugin name>
  • 运行本地已安装的云助手插件

    使用--local参数后,将不会检查线上版本或下载插件,仅在本地查找并执行。如果本地未安装,命令会报错。

    sudo acs-plugin-manager --exec --local --plugin <plugin name>

运行示例

  • 从插件包文件执行插件

    acs-plugin-manager --exec --file /root/ecs_tools_test.zip --params "--start,--on"
    # --file 指定插件包文件路径
    # --params 指定插件的执行参数,默认用英文逗号分隔多个参数
    # --separator 可以指定其他的参数分隔符,例如 --separator '#'
  • 从线上拉取插件执行

    acs-plugin-manager --exec --plugin ecs_tools_test --pluginVersion 1.2 --params --start
    # --plugin 指定插件名称(必填)
    # --pluginVersion 指定插件版本号,如果不填自动拉取最新的版本
    # 会同时从本地和线上按插件名ecs_tools_test查询插件,如果pluginVersion非空的话插件版本也会作为检索条件
    # 如果本地存在就执行本地插件,否则从线上拉取插件包
  • 限制执行本地插件

    acs-plugin-manager --exec --local --plugin ecs_tools_test  --params --start
    # --local 限制只从本地已安装的插件中查找ecs_tools_test并执行,即使本地没有也不会从线上拉取

查看插件状态

查询已安装的常驻插件(Persist)的运行状态。

sudo acs-plugin-manager --status

输出示例

[
  {
    "name": "ecs_tools_test",
    "status": "PERSIST_RUNNING",
    "version": "1.2"
  },
  {
    "name": "ecs_tools_test_1",
    "status": "PERSIST_RUNNING",
    "version": "1.2"
  }
]

status字段显示插件的当前状态,PERSIST_RUNNING表示正在运行。

测试插件

--verify命令会将插件文件解压到Linux/usr/local/share/aliyun-assist/plugin/verify_plugin_test或者WindowsC:\ProgramData\aliyun\assist\plugin\verify_plugin_test目录下,然后执行插件的可执行文件,相当于临时执行,插件信息并不会记录到本地的installed_plugins文件中,查询插件列表、查看插件状态都不会包含该插件的信息。

运行示例

acs-plugin-manager --verify --url https://aliyun-client-assist-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/ecs_tools_test/linux/ecs_tools_test_1.2.zip --params --upgrade

--verify:表示测试插件,将插件包解压到verify_plugin_test目录。

--url:指定插件包的地址,可以是http(s)或者file协议的地址,例如:

  • linux:file:///root/assistpluginlinux.zip

  • windows:file:///C:/ProgramData/aliyun/assist/2.1.3.282/assistpluginwindows.zip

删除插件

sudo acs-plugin-manager --remove --plugin <plugin name>

删除插件时,acs-plugin-manager 的行为因插件类型而异:

  • 一次性插件(Once):直接删除插件文件目录。

  • 常驻插件(Persist):会先尝试调用插件的 --stop 和 --uninstall 接口以实现优雅卸载,成功后才会删除文件目录。

运行示例

acs-plugin-manager --remove --plugin ecs_tools_test
# --plugin 指定要删除的插件名称
# 对于一次性插件:直接删除目录 /usr/local/share/aliyun-assist/plugin/<plugin-name>
# 对于常驻插件;先依次调用插件的--stop、--uninstall接口。如果--uninstall返回值为0就继续删除插件目录,否则终止删除插件的操作
# 删除插件会将该插件的整个目录删除,包括里面的所有版本子目录

获取帮助

查看acs-plugin-manager支持的所有命令和参数的完整列表。

sudo acs-plugin-manager --help
Flags:
  --help,-h          --help, 打印此帮助页
  --version,-v       --version, 打印版本号
  --local,-L          
  --plugin,-P        通过名称指定插件
  --pluginId         通过插件id指定插件
  --pluginVersion,-n 指定插件版本号
  --params,-p        设置插件的运行参数,通过--separator设置参数的分隔符
  --paramsV2         设置插件的运行参数,不使用分隔符分割
  --url,-u           指定插件地址
  --separator,-s     指定插件参数的分隔符,默认为逗号
  --file,-F          指定插件文件
  --verbose,-V       --verbose, 打印更多的日志
  --list,-l          --list, 列出所有插件
                     --list --local, 只列出本地已安装的插件
  --verify,-f        --verify --url <> --params <>, 验证插件
  --status,-S        --status, 打印所有插件的状态
  --exec,-e          --exec --plugin <> --params <>, 执行插件,优先从线上查找插件
                     --exec --local --plugin <> --params <>, 仅从本地查找执行插件
                     --exec --file <> --params <>, 从插件包文件执行插件
  --fetchTimeout     允许获取插件过程消耗的最长时间,单位为秒。默认为20秒。设为0表示不限获取时间
  --timeout          允许插件运行的最长时间,单位为秒。默认使用插件包中定义的超时时间值。设为0表示不限运行时间
  --remove,-r        --remove --plugin <>, 移除本地插件,会删除掉该插件的目录文件

常见云助手插件示例

配置kdump

kdumpLinux内核的一个功能,可在发生内核错误时创建核心转储。通过ecs_dump_config插件,开启、关闭或查询dump功能。

  • 开启dump

    sudo acs-plugin-manager --exec --plugin=ecs_dump_config --params --enable
  • 关闭dump

    sudo acs-plugin-manager --exec --plugin=ecs_dump_config --params --disable
  • 查询dump状态

    sudo acs-plugin-manager --exec --plugin=ecs_dump_config --params --status

自动配置弹性网卡

一般情况下添加弹性网卡后,您需要手动设置所添加网卡的网络配置。通过multi-nic-util插件可以自动配置网卡的相关网络配置。

sudo acs-plugin-manager --exec --plugin=multi-nic-util

配置IPv6

通过ecs-utils-ipv6插件为已分配IPv6地址的ECS实例一键配置IPv6地址,或者为没有分配IPv6地址的ECS实例一键清理IPv6配置。ecs-utils-ipv6插件支持开启、关闭、自动配置(默认)、手动配置IPv6。ecs-utils-ipv6插件集成ecs-util-ipv6工具,更多信息,请参见IPv6通信

  • 开启IPv6

    sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6 --params --enable
  • 关闭IPv6

    sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6 --params --disable
  • 自动配置IPv6

    sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6
  • 手动配置IPv6

    sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6 --params --static,<dev>,<ip6s>,<prefix_len>,<gw6>

    示例如下所示。

    sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6 --params --static,eth0,fe80::216:3eff:****:****,64,2408:400a:108:8300:ffff:ffff:****:****

配置网卡多队列

多队列指实例规格支持的最大网卡队列数,单个ECS实例vCPU处理网络中断存在性能瓶颈时,通过网卡多队列功能可以将实例中的网络中断分散给不同的CPU处理。通过执行ethtool -l ethname命令查看网卡当前队列数及支持的队列数。

通过ecs_tools_multiqueue插件可以将所有网卡的队列数设置为支持的最大值。

sudo acs-plugin-manager --exec --plugin=ecs_tools_multiqueue

Intel超线程HT管理

在裸金属实例规格中,部分业务场景下需要关闭Intel的超线程,您可以通过ecs_disable_intel_hyper-threading插件来实现。

插件实现原理是在grub文件中增加内核参数nr_cpus=实例规格vCPU/2。参数nr_cpus会限定内核支持的最大CPU数,从而实现关闭HT的效果。

增加内核参数后,需重启实例才能生效。插件执行后,输出信息中会有提示您需重启实例的相关信息。

说明

此插件不支持在非裸金属实例规格上关闭HT。在非裸金属规格实例上执行此插件后,会提示该实例非裸金属实例规格并退出。

sudo acs-plugin-manager --exec --plugin=ecs_disable_intel_hyper-threading

管理安全补丁

ECS实例上的安全漏洞需要及时处理并修复,否则将带来严重的安全隐患。通过补丁管理插件patch_manager,您可以扫描和安装ECS实例内部缺失的安全补丁。

  • 扫描安全补丁

    sudo acs-plugin-manager --exec --plugin=patch_manager --params --operation,scan
  • 安装安全补丁,系统根据需要自动重启ECS实例

    sudo acs-plugin-manager --exec --plugin=patch_manager --params --operation,install,--reboot,ifneed
  • 只安装安全补丁,不重启ECS实例

    sudo acs-plugin-manager --exec --plugin=patch_manager --params --operation,install,--reboot,no