# Visor管理控制台
# 1.命令行接口
# 1.1.概述
Visor命令行接口为Ignite提供了脚本化的监控能力,它可以用于从网格获得与节点、缓存和任务有关的统计数据,显示与拓扑有关的各种指标的一般细节,还有节点的配置属性也可以在这里看到,它还可以用于启动和停止远程节点。
# 1.2.使用
Ignite附带了IGNITE_HOME/bin/ignitevisorcmd.{sh|bat}
脚本,用于启动命令行管理接口。
要获得帮助以及希望入门,输入type
或者?
命令,要将visor接入网格,输入open
命令。
# 1.3.命令
命令 | 别名 | 描述 |
---|---|---|
ack | 所有远程节点的Ack参数 | |
alert | 提示用户定义的事件 | |
cache | 输出缓存的统计数据,清理缓存,从缓存输出所有条目的列表 | |
close | 将visor从网格断开 | |
config | 输出节点的配置 | |
deploy | 将文件或者文件夹复制到远程主机 | |
disco | 输出拓扑变更日志 | |
events | 从一个节点输出事件 | |
gc | 在远程节点运行GC | |
help | ? | 输出Visor控制台帮助 |
kill | 杀掉或者重启节点 | |
log | 启动或者停止网格范围的事件日志 | |
mclear | 清除Visor控制台内存变量 | |
mget | 获取Visor控制台内存变量 | |
mlist | 输出Visor控制台内存变量 | |
node | 输出节点统计数据 | |
open | 将Visor接入网格 | |
ping | ping节点 | |
quit | 退出Visor控制台 | |
start | 在远程主机启动或者重启节点 | |
status | ! | 输出Visor控制台状态 |
tasks | 输出任务执行统计数据 | |
top | 输出当前的拓扑 | |
vvm | 打开节点的VisualVM |
# 2.alert命令
# 2.1.alert命令规范
注册alert: alert -r {-t=<sec>} {-<metric>=<condition><value>} ... {-<metric>=<condition><value>}
取消注册:alert -u {-id=<alert-id>|-a}
alert选项: -n:报警名字 -u:取消注册的报警,‘-a’标志或者‘id’参数需要二选一,注意同时只允许‘-u’和‘-r’其中之一,如果‘-r’或者‘-u’都没有提供,会输出所有的报警。 -a:如果提供了‘-a’,所有的报警都会被取消。 -id=<alert-id>:如果提供了‘-u’,匹配id的报警会被取消。 -r:通过有助记忆的谓语注册新的报警,注意同时只允许‘-u’和‘-r’其中之一,如果‘-r’或者‘-u’都没有提供,会输出所有的报警。 -t:定义通知的频率(秒),默认是60秒,注意这个参数只可以和‘-r’配套使用。 -s:当报警触发时执行的脚本,要配置调节时间间隔,可以看-r参数。脚本可以接收如下的参数: 1)当名字没有定义时,报警名字或者报警ID; 2)字符串形式的报警条件; 3)按照报警指令的顺序的报警条件值。
-i:配置报警通知的最小调节时间间隔(秒),默认是60秒;
-<metric>:定义了有助记忆的可度量的指标: 集群范围(不是特定节点的): cc:网格内的有效CPU数量; nc:网格内的节点数量; hc:网格内的物理主机数量; cl:网格内当前的平均CPU负载(%);
每节点的当前指标: aj:节点的活动作业; cj:节点取消的作业; tc:节点的线程数; ut:节点的正常运行时间; 注意:<num>可以有‘s’,‘m’或者‘h’后缀,分别代表秒,分和时,默认值(没有后缀)是毫秒。 je:节点的作业执行时间; jw:节点的作业等待时间; wj:节点的等待作业数; rj:节点的拒绝作业数; hu:节点使用的堆内存(MB); cd:节点的当前CPU负载; hm:节点的堆内存最大值(MB);
<condition>定义指标的条件
有助记忆谓词的比较部分:
eq:等于‘=’<value>
数
neq:不等于‘!=’<value>
数
gt:大于‘>’<value>
数
gte:大于等于’>=’<value>
数
lt:小于‘<’NN
数
lte:小于等于‘<=’<value>
数
# 2.2.示例
alert 输出当前注册的所有报警。
alert -u -a
取消当前所有已注册的报警。
alert -u -id=12345678
取消指定id的报警。
alert -r -t=900 -cc=gte4 -cl=gt50
注册一个报警,如果网格内有大于等于4个CPU以及大于50%的CPU负载,每隔15分会发出通知。
alert -r -n=Nodes -t=15 -nc=gte3 -s=/home/user/scripts/alert.sh -i=300
注册一个报警,如果网格内有大于等于3个节点每隔15秒会发送通知,并且每隔不小于5分钟重复执行脚本“/home/user/scripts/alert.sh”。
# 2.3.自定义脚本
注册下面这个报警,每隔15秒,如果网格内有大于等于2个节点,并且CPU数小于等于16,重复间隔不能小于5分钟,执行如下脚本/home/user/myScript.sh
:
alert -r -t=5 -n=MyAlert -nc=gte2 -cc=lte16 -i=15 -s=/home/user/myScript.sh
报警处理脚本:
echo ALERT [$1] CONDITION [$2] alarmed with node count [$3] and cpu count [$4]
会在终端生成如下输出:
ALERT [MyAlert] CONDITION [-nc=gte2 -cc=lte16] alarmed with node count [2] and cpu count [8]
注意,这里$1指的是报警名,$2指的是报警条件,$3,$4……指的是每个子条件的值。
# 3.start指令
# 3.1.start指令规范
在远程主机上启动或者重启节点。
start -f=<path> {-m=<num>} {-r}
start -h=<hostname> {-p=<num>} {-u=<username>} {-pw=<password>} {-k=<path>} {-n=<num>} {-g=<path>} {-c=<path>} {-s=<path>} {-m=<num>} {-r}
选项:
-f=<path>
:包含网络规范的INI文件的路径,它有如下属性:[host name]
:特定主机的名字段;host=<hostname>
:IP地址或者主机名;port=<num>
:SSH端口;uname=<username>
:SSH用户名;passwd=<password>
:SSH密码;key=<path>
:SSH密钥文件路径;nodes=<num>
:启动节点数量;igniteHome=<path>
:Ignite主路径;cfg=<path>
:Ignite配置文件路径;script=<path>
:Ignite节点启动脚本。-h=<hostname>
:启动节点的主机名,如果IP是连续的,可以定义一组主机,比如一个范围:192.168.1.100~150,意味着包含从192.168.1.100到192.168.1.150的所有IP;-p=<num>
:端口号(默认22);-u=<username>
:用户名(如果未定义,会使用本地用户名);-pw=<password>
:密码(如果未定义,必须定义私有密钥文件);-k=<path>
:私有密钥文件的路径,如果使用了密钥验证需要定义;-n=<num>
:希望启动的节点数量,如果部分节点已经启动,那么只会启动剩下的节点,如果该值等于当前的节点数量,并且未指定-r
标志,那么什么都不会发生;-g=<path>
:Ignite安装文件夹路径,如果未指定,远程主机必须定义IGNITE_HOME环境变量;-c=<path>
:配置文件路径(相对于Ignite主目录),如果未指定,会使用默认的Ignite配置文件;-s=<path>
:启动脚本路径(相对于Ignite主目录),对于Linux默认为bin/ignite.sh
,对于Windows为bin\ignite.bat"
;-m=<num>
:定义一台主机可以并行启动的节点的最大值,这个实际上等于每台SSH服务器的并行SSH连接数,默认值为5;-t=<num>
:定义连接超时(毫秒,默认值为2000);-r
:标识主机的已有节点会被重启,默认如果没有这个标志,已有节点会保留。
# 3.2.示例
使用默认的配置文件启动三个节点(密码验证):
start "-h=10.1.1.10 -u=uname -pw=passwd -n=3"
使用默认的配置文件,在5台主机启动25个节点(每台主机5个节点),使用基于密钥的验证:
start "-h=192.168.1.100~104 -u=uname -k=/home/uname/.ssh/is_rsa -n=5"
启动start-nodes.ini
文件中定义的拓扑,已有节点停止:
start "-f=start-nodes.ini -r"
start-nodes.ini
# section with settings for host 1
[host1]
# ip address or host name
host=192.168.1.1
# ssh port
port=22
# ssh login
uname=userName
# ssh password
passwd=password
# ssh key path
key=~/.ssh/id_rsa
# start node count
nodes=1
# ignite home path
igniteHome=/usr/lib/ignite
# ignite config path
cfg=/examples/exmaple-ignite.xml
# ignite node start script
script=/bin/ignite.sh
# 4.批处理模式
# 4.1.使用批处理模式启动Visor
Visor命令行可以开启一个批处理模式(运行一组命令)。
运行ignitevisorcmd.{sh|bat} -?
后,会显示可用的选项:
ignitevisorcmd.{sh|bat} -?
Usage:
ignitevisorcmd.bat [? | -help]|[{-v}{-np} {-cfg=<path>}]|[{-b=<path>} {-e=command1;command2;...}]
Where:
?, /help, -help - show this message.
-v - verbose mode (quiet by default).
-np - no pause on exit (pause by default).
-cfg=<path> - connect with specified configuration.
-b=<path> - batch mode with file.
-e=cmd1;cmd2;... - batch mode with commands.
# 4.2.使用带有命令的文件的批处理模式
这个批处理模式会从文件中读取命令,所有的命令都要从新的一行开始:
commands.txt
open
0
status
使用
ignitevisorcmd.{bat|sh} -np -b=commands.txt
这会使用索引值为0
的配置接入集群,然后执行status
命令。
# 4.3.使用命令列表的批处理模式
这个批处理模式指令会从-e
选项读取,命令必须用分号分割:
使用
ignitevisorcmd.{bat|sh} -np -e="open;0;status"
如果命令包含空格符,它们需要加上额外的单引号:
ignitevisorcmd.{bat|sh} -np -e="'open -cpath=config/default-config.xml;status'"
这会和上面的例子做同样的事情。
注意
在批处理模式中,Visor命令行只是简单地按照给定的命令一个一个地执行,就和通过键盘输入时一样的。
18624049226
控制脚本 →