在 Jpom 中如何使用 DSL 项目来管理 elasticsearch
# 前言
在日常使用中有很多需求是想管理,查看 es 状态,启动、重启、停止等操作。 一般情况是登录服务器去操作,如果您使用了 Jpom 那么可以使用 DSL 项目来实现简单管理 es
本文主要讲解如果使用 Jpom 中的 DSL 项目管理 elasticsearch
注意:本文采用一键安装同时基于 2.10.22 版本讲解,系统为 centos
声明
本文档想要建立在您对 Jpom 已经有一定的熟悉度后的高阶操作。 如果您还是新手入门 Jpom ,还想要您看看其他相关文档或者上手操作后再来看看本文档来找解决方案灵感。 并且本文也建立在您已经会管理 elasticsearch 了,本文不提供下载 es、基础安装 jdk 环境的文档、创建启动 es 的用户的文档。(如果您还不会请自行搜索解决)
# 创建项目
DSL 配置内容
# scriptId 可以是项目路径下脚本文件名或者系统中的脚本模版ID
description: 测试
run:
start:
# scriptId: project.sh
scriptId: 7a688459a4a24129968d06ebefd3b57c
scriptArgs: start
status:
# scriptId: project.sh
scriptId: 7a688459a4a24129968d06ebefd3b57c
scriptArgs: status
stop:
# scriptId: project.sh
scriptId: 7a688459a4a24129968d06ebefd3b57c
scriptArgs: stop
# restart:
## scriptId: project.sh
# scriptId: eb16f693147b43a1b06f9eb96aed1bc7
# scriptArgs: restart
# scriptEnv:
# "boot_active": test
file:
# 备份文件保留个数
# backupCount: 5
# 限制备份指定文件后缀(支持正则)
# backupSuffix: [ '.jar','.html','^.+\.(?i)(txt)$' ]
config:
# 是否开启日志备份功能
# autoBackToFile: true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
项目目录
# 配置 DSL 脚本
脚本内容
#!/bin/bash
Tag="org.elasticsearch.bootstrap.Elasticsearch"
Lib="${PROJECT_PATH}"
RETVAL="0"
cd "$Lib" || exit
# See how we were called.
function start() {
pwd
su -c "./bin/elasticsearch -d" es
}
function stop() {
pid=$(ps -ef | grep -v 'grep' | egrep $Tag | awk '{printf $2 " "}')
if [ "$pid" != "" ]; then
echo -n "boot ( pid $pid) is running"
echo
echo -n $"Shutting down boot: "
kill "$pid"
LOOPS=0
while (true); do
pid=$(ps -ef | grep -v 'grep' | egrep $Tag | awk '{printf $2 " "}')
if [ "$pid" == "" ]; then
echo "Stop and end, in $LOOPS seconds"
break
fi
((LOOPS++)) || true
sleep 1
done
else
echo "boot is stopped"
fi
status
}
function get_json_value() {
local json=$1
local key=$2
local value
value=$(echo "${json}" | awk -F "[{,:}]" '{for(i=1;i<=NF;i++){if($i~"'"${key}"'"){print $(i+1)}}}' | sed 's/\"//g')
value="$(trim "$value")"
echo "${value}"
}
function trim() {
str=$1
echo "${str}" | grep -o "[^ ]\+\( \+[^ ]\+\)*"
}
function status() {
# 这里的端口或者url 路径需要跟进你的项目端口和获取项目状态的接口来定
result_msg=$(curl -s -X GET --header 'Accept: application/json' --connect-timeout 1 -m 1 'http://elastic:xxx@127.0.0.1:9200')
cluster_name=$(get_json_value "${result_msg}" "cluster_name")
if [ "$cluster_name" == "my-application" ]; then
pid=$(ps -ef | grep -v 'grep' | egrep $Tag | awk '{printf $2 " "}')
echo "running:$pid"
else
echo "$cluster_name"
echo "not-running"
fi
}
# See how we were called.
RETVAL="0"
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
;;
*)
usage
;;
esac
exit $RETVAL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# 脚本解释
su -c "./bin/elasticsearch -d" es
指使用 es 用户去执行脚本 ./bin/elasticsearch -d
,实际中想要替换为您配置的 es 账号名
获取es 状态:使用 curl 调用 es 接口并且判断返回值中是否存在集群名称来判断 es 是否运行中
curl -s -X GET --header 'Accept: application/json' --connect-timeout 1 -m 1 'http://elastic:xxx@127.0.0.1:9200'
因为案例集群配置了账号密码,随意想要配置账号何密码来访问
# 管理 ES
帮助我们改善此文档 (opens new window)
上次更新: 2023/09/20, 13:11:05