Jpom Jpom
🔖首页
  • 一键安装教程
  • Docker 容器安装教程
  • 离线安装教程
  • v2.9.X迁移到v2.10.X指南
  • v2.8.X迁移到v2.9.X指南
  • 数据库迁移到 mysql
  • 实践案例目录
  • 名词解释
  • 什么是 DSL
  • 权限说明
💡DSL说明
  • 加入社区讨论
  • 如何贡献
  • 贡献者们
🤝用户
  • 下载中心
  • Gitee (opens new window)
  • Github (opens new window)
🔖首页
  • 一键安装教程
  • Docker 容器安装教程
  • 离线安装教程
  • v2.9.X迁移到v2.10.X指南
  • v2.8.X迁移到v2.9.X指南
  • 数据库迁移到 mysql
  • 实践案例目录
  • 名词解释
  • 什么是 DSL
  • 权限说明
💡DSL说明
  • 加入社区讨论
  • 如何贡献
  • 贡献者们
🤝用户
  • 下载中心
  • Gitee (opens new window)
  • Github (opens new window)
❤️成为赞助商
  • 解决方案

    • 如何使用 Jpom 的在线构建为 Jpom 发版
    • 万能的 DSL 项目模板(Java)
    • 基于 Jpom 搭建应用部署系统
    • 一键安装实践
    • Docker 容器安装实践
    • 离线安装实践
    • 自定义第三方通知
  • 在线构建

    • 本地构建 + SSH 发布 java 项目
    • 本地构建 + Jpom Server 使用 SCP 发布项目
    • 本地构建 + 项目发布 node 项目
    • 本地构建 + SSH 发布 node 项目
    • 本地构建 + 自定义管理 python 项目
    • 容器构建 + 项目发布 java 项目
    • Gitee 提交代码后自动执行构建
    • 使用 gradle 本地构建打包项目并发布到节点
    • GitLab 提交代码后自动执行构建
    • 通过私人令牌导入仓库
  • docker

    • 管理 docker
    • 在线构建 docker 镜像
    • 在线构建 docker 镜像并推送至远程仓库
    • docker 安装 redis 流程
  • 节点管理

    • 管理编译安装的 nginx
  • 项目管理

    • 自定义管理 java 项目
    • DSL项目接口探活
    • 在 Jpom 中如何使用 DSL 项目来管理 TOMCAT
    • 在 Jpom 中如何使用 DSL 项目来管理 elasticsearch
      • 前言
      • 创建项目
      • 配置 DSL 脚本
        • 脚本解释
      • 管理 ES
  • 项目监控

    • 监控项目 + 邮件报警通知
    • DSL 项目接口探活监控报警
  • 在线脚本

    • 使用节点脚本定时备份 docker 中的 mysql 数据库
  • SSH管理

    • 在线管理 SSH 终端以及上传文件(SFTP)和执行命令历史
  • 日常管理

    • 如何开启 h2-console web 访问功能
  • 实践案例
  • 项目管理
bwcx_jzy
2023-02-24
目录

在 Jpom 中如何使用 DSL 项目来管理 elasticsearch

# 前言

在日常使用中有很多需求是想管理,查看 es 状态,启动、重启、停止等操作。 一般情况是登录服务器去操作,如果您使用了 Jpom 那么可以使用 DSL 项目来实现简单管理 es

本文主要讲解如果使用 Jpom 中的 DSL 项目管理 elasticsearch

注意:本文采用一键安装同时基于 2.10.22 版本讲解,系统为 centos

声明

本文档想要建立在您对 Jpom 已经有一定的熟悉度后的高阶操作。 如果您还是新手入门 Jpom ,还想要您看看其他相关文档或者上手操作后再来看看本文档来找解决方案灵感。 并且本文也建立在您已经会管理 elasticsearch 了,本文不提供下载 es、基础安装 jdk 环境的文档、创建启动 es 的用户的文档。(如果您还不会请自行搜索解决)

# 创建项目

img.png

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

项目目录

img_1.png

# 配置 DSL 脚本

img_2.png

脚本内容

#!/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

# 脚本解释

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

img_3.png

帮助我们改善此文档 (opens new window)
#elasticsearch
上次更新: 2023/02/24, 20:09:36
在 Jpom 中如何使用 DSL 项目来管理 TOMCAT
监控项目 + 邮件报警通知

← 在 Jpom 中如何使用 DSL 项目来管理 TOMCAT 监控项目 + 邮件报警通知→

最近更新
01
2023年
03-31
02
2022年
03-31
03
2021年
03-31
更多文章>
Theme by Vdoing | Copyright © 2017-2023 MIT License  京ICP备17044819号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×