由于集群较多,节点也多,当出现异常时,从20多个BE找关键字有些麻烦,所以偷个懒。
用go封装了SSH来完成 一些需要查看所有StarRocks节点 FE,BE,BROKER服务日志、IOStat、Pstack堆栈、Jstack堆栈的信息,支持打包,压缩,回传。
- 程序配置文件(.pjstack.yaml)
configdb: Host: 127.0.0.1 Port: 3306 User: root Pass: xxxxxxxxxxxx Schema: Connect: chengken.sr_slow_query_manager common: # pstack命令所在位置 Pstack: xxxxxx # jstack命令所在位置 Jstack: xxxxx # SSH账号 User: starrocks # SSH端口 Port: 22 # 账号私钥 Private: xxxxxx # 打包回传日志,放在这 LogPath: /xxxxxx logger: LogPath: /xxxx
- 程序配置表 (这个表用的也是慢查询拦截那个表)
-- chengken.sr_slow_query_manager definition CREATE TABLE `sr_slow_query_manager` ( `app` varchar(100) NOT NULL COMMENT '集群名称(英文)', `feip` varchar(200) NOT NULL COMMENT '集群连接地址(必填)F5,VIP,CLB,FE', `user` varchar(200) NOT NULL COMMENT '集群登录账号(必填) 建议是管理员角色的账号', `password` varchar(500) NOT NULL COMMENT '集群登录密码(必填)', `feport` int(11) NOT NULL DEFAULT '9030' COMMENT '集群登录端口,默认9030', `address` varchar(500) DEFAULT NULL COMMENT 'MANAGER地址,如果填了MANAGER地址,那么将触发定时检查LICENSE是否过期(企业级)', `expire` int(11) DEFAULT '30' COMMENT 'LICENSE是否过期(企业级)过期提醒倒计时,单位day', `status` int(11) NOT NULL DEFAULT '0' COMMENT 'LICENSE是否过期(企业级)开关,0 off, 1 on', `fe_log_path` varchar(500) NOT NULL COMMENT 'FE 日志目录', `be_log_path` varchar(500) NOT NULL COMMENT 'BE 日志目录', `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='StarRocks登录配置,manager地址,(定期检查license过期日期)';
从【所有FE】或【固定FE】节点中搜索“关键字”日志(-k “关键字” -e fe)
从【所有BE】或【固定BE】节点中搜索“关键字”日志(-k “关键字” -e be)
从【所有FE/BE】或【固定FE/BE】中压缩打包好日志文件拉回本地
从【所有FE/BE】或【固定FE/BE】中打一个pstack/jstack并把日志拉回本地