特性介绍
CM支持事件触发器,即在特定事件发生后,由CM自动触发用户自定义的脚本,执行相应的操作。
使用说明
事件触发器通过配置cm_agent的参数event_triggers来定义,参数类型为以字符串表示的json类型。
配置形式为:
'{"trigger_type_1”:"trigger_value_1”,…,"trigger_type_n”:"trigger_value_n”}'
其中:
- trigger_type为事件触发器类型,当前支持的事件触发器类型为:on_start、on_stop、on_failover、on_switchover
- trigger_value为发生对应事件时待执行的用户自定义触发器脚本,自定义脚本的输出会重定向至cm_agent日志目录下的system-callxxx.log中。
约束条件
trigger_value即自定义脚本,必须为真实存在的shell脚本,且为绝对路径,并且对当前用户至少有读取和执行权限。
使用cm_ctl set命令配置该参数时,参数值必须符合json格式,并且将json类型表示为字符串类型,中间不能包含换行和空格。
参数值最大长度为1024。
用户需要保证自定义脚本能够正确执行。
配置样例
‘{“on_start”:”/dir/on_start.sh",“on_stop”:”/dir/on_stop.sh",“on_failover”:”/dir/on_failover.sh",“on_switchover”:”/dir/on_switchover.sh"}’
测试
- 编辑测试脚本(以stop为例)
vi application.sh
#!/bin/bash
current_path=`dirname $(readlink -f $0)`
app_name="opengauss"
pid=’’
function is_running(){
pid=`ps aux|grep bin/gaussdb|grep -v grep|awk '{print $2}'`
if [ -z $pid ] ;then
return 0
echo "0"
else
return 1
echo "1"
fi
}
function stop(){
is_running
if [ $? -eq '0' ]; then
return 0
else
kill -9 $pid
return 1
fi
}
vi on_stop.sh
#!/bin/bash
current_path=`dirname $(readlink -f $0)`
. $current_path/application.sh
function stop_app(){
sleep 1s;date;
is_running
if [ $? -eq '0' ]; then
echo "${app_name} is not running"
else
echo "${app_name} is running"
fi
}
stop_app
echo "stop success!!!!!"
- 配置agent参数
cm_ctl set --param --agent -kevent_triggers='{"on_start":"/home/omm/script_qy/on_start.sh","on_stop":"/home/omm/script_qy/on_stop.sh","on_failover":"/home/omm/script_qy/on_failover.sh","on_switchover":"/home/omm/script_qy/on_switchover.sh"}'
- 执行stop
cm_ctl stop -n 1
- 查看system_call-current.log

最后修改时间:2023-12-18 10:53:15
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




