SpringBoot部署测试与监控

这部分的内容实际就是devops的主要工作内容,当然一名合格的程序要也需要掌握这部分的知识。

  • 热部署

简单来说,在开发时,修改了任何的代码,IDE将自动编译运行及发布;在发布时,当前发布不影响线上服务的正常进行。

模板热部署:比如Thymeleaf,配置spring.thymeleaf.cache=false即可,那么页面随时更新。

开发热部署: Spring Loaded,在vm arg中添加 –javaagent: E:\xxx.jar -noverify; JRebel,热部署最佳工具,但是是收费的,不嗨森;spring-boot-devtools,最赞方案,只需添加到pom.xml即可。

  • 常规部署

jar形式: mvn package, java –jar xx.jar, 通过在pom.xml中修改plugin配置即可。

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <executable>true</executable>
                </configuration>
            </plugin>

在linux的/etc/systemd/system/目录中新建cm-bootweb.service文件
[Unit]
Description=cm-bootweb
After=syslog.target
[Service]
ExecStart= /usr/bin/java –jar /var/apps/cm-bootweb-0.0.1.jar
[Install]
WantedBy=multi-user.target

启动服务: systemctl start cm-bootweb
停止服务: systemctl stop cm-bootweb
服务状态: systemctl status cm-bootweb
开机启动: systemctl enable cm-bootweb
项目日志: systemctl -u cm-bootweb

war形式:将生成的war放在合适的servlet容器上运行即可。

  • 云部署(最帅选择)

主要的Paas平台都支持Docker镜像发布,通过编写Dockerfile来编译镜像,Dockerfile的指令如下表所示。

指令 阐述
FROM 指明当前镜像继承的基镜像,编译时会自动下载,如FROM Ubuntu
MAINTAINER 指明镜像作者, MAINRAINER xionger
RUN 可以在当前镜像上执行linux命令形成新的层,RUN /bin/bash –c "echo helloworld"
CMD 指明启动镜像容器的默认行为, CMD echo "this is my first docker project"
EXPOSE 指明镜像运行时的容器必须监听的端口
ENV 设置环境变量, ENV name=xionger
ADD 将当前工作目录的文件复制到镜像目录, ADD test.txt /mydir/
ENTRYPOINT 让容器相同一个可执行程序一样运行,这样镜像运行时可以像软件一样接受参数执行 ENTRYPOINT ["/bin/echo"] docker run –d image_name "this is a rebirth"

安装docker, yum install docker, 启动运行, systemctl start docker

将jar包放在/var/apps/cm-bootweb目录,并将Dockerfile也放在该目录,文件内容为

FORM java:8
MAINTAINER xionger
ADD cm-bootweb-0.0.1.jar app.jar
EXPOSE 8083
ENTRYPOINT ["java", "-jar","/app.jar"]

之后编译镜像:docker build –t cm-bootweb . (.表示当前路径,cm-bootweb为镜像名称)

运行: docker run –d --name bootweb -p 8083:8083 cm-bootweb

这部分需要好好思考下,就是linux环境中是必须安装好java,maven等环境,还是直接打好jar包,直接发布

Spring boot提供了运行时的应用监控和管理功能,可以通过http,jmx,ssh协议来操作,可以自动得到审计、健康及指标信息,常见的端点名如下。

端点名 描述
actuator 所有EndPoint列表,需加入spring HATEOAS支持
autoconfig 当前应用的所有自动配置
beans 当前应用中所有bean的信息
configprops 当前应用中所有的配置属性
dump 当前应用线程状态信息
env 当前应用环境信息
health 当前应用健康状况
info 当前应用信息
metrics 当前应用的各项指标信息
mappings 显示所有@RequestMapping映射的路径
shutdown 关闭当前应用(默认关闭)
trace 显示跟踪信息(默认最新http请求)

通过http监控spring boot项目非常简单,只需添加如下依赖即可,之后访问对应项目即可(如果添加了安全,需要对应的actuator角色)。

1         <dependency>
2             <groupId>org.springframework.boot</groupId>
3             <artifactId>spring-boot-starter-actuator</artifactId>
4         </dependency>
5         <dependency>
6             <groupId>org.springframework.hateoas</groupId>
7             <artifactId>spring-hateoas</artifactId>
8         </dependency>

Tip:

通过该网站可以获取maven配置,http://mvnrepository.com/artifact/org.springframework.hateoas/spring-hateoas

定制端点:修改端点id,endpoints.beans.id=mybeans;关闭端点,endpoints.beans.enabled=false;定制端点访问路径management.context-path=/manage;定制访问端口management.port=8080, -1关闭。

自定义端点:通过继承AbstractEndpoint类并实现ApplicationContextAware接口,创建自定义的端点类并注册到spring即可。

自定义HealthIndicator: 常见的Indicator包括datasource, jms, diskspace, redis等。

jconsole来实现JMX监控,在cmd输入jconsole命令,然后选择项目,查看MBean中的org.springframework.boot中的Endpoint即可。

SSH监控,需要添加spring-boot-starter-remote-shell依赖,然后访问2000端口即可,常见命令包括help, metrics等,可以在配置文件中加入shell.auth.simple.user.name/password,此外还可以通过Groovy来编制命令,有机会试试。

测试:springboot在创建时会自动加上spring-boot-starter-test依赖,因此测试变得非常简单,只需在测试类上添加@RunWith(SpringRunner.class)和@SpringBootTest注解即可。

参考资料

  1. 汪云飞. Spring Boot实战[M]. 北京:电子工业出版社, 2016.
时间: 2024-11-05 19:39:30

SpringBoot部署测试与监控的相关文章

一款类似loadRunner的优秀国产压力测试工具——kylinTOP测试与监控平台

市面上流行的压力/负载/性能测试工具多是来自国外,近年来国内的性能测试工具也如雨后春笋般崛起,但大部分产品是基于Jmeter开源内核包装起来的性能测试工具,其中也不乏佼佼者,如:kylinTOP测试与监控平台,它是一款集性能测试.自动化测试.业务监控于一体的B/S架构的测试平台,支持跨平台(WINDOWS/LINUX/SOLARIS/麒麟/MAC)运行.该工具没有基于任何开源免费组件,是一款完全国产化的性能测试工具,是目前国内一款非常难得好用的性能测试工具,可以完全替代国外的同类产品.目前在军工

Zabbix基于Proxy分布式部署实现Web监控

前言 在日常运维工作中,难免会遇到这样或那样的故障,如何能在第一时间发现故障,并及时定位故障原因,保证业务不受影响,我想这应该是做好一个运维必须要掌握的技能.但人力不可能实时掌控系统的变化,于是监控系统应运而生,监控便是运维的眼睛,把监控和性能管理做好后,运维就是一件很轻松的事情.目前比较流行的开源监控工具有Cacti.Nagios(Icinga).Zabbix等.本文带来的是Zabbix基于Proxy分布式部署实现Web监控. Zabbix 简介 Zabbix是一个基于Web界面提供分布式系统

部署点评Cat监控项目

在项目中监控代码运行的状况,可以采用点评的Cat项目来监控整个项目,但是按照官方的文档来部署cat,总会遇到各种问题,讲解的也不够简明清楚,现在用一个单机来部署运行cat监控项目. 首先,到项目的Git网页下载整个项目: https://github.com/dianping/cat 接着就是进入这个项目的目录,运行打包安装命令: mvn clean install -DskipTests  (需要maven) 执行完成后,运行 CAT 安装插件命令: mvn cat:install 会提示输入

Redis3.0 Sentinel部署测试

目录 u Redis介绍4 v Redis 优势4 v Redis与其他key-value存储有什么不同4 u Redis sentinel介绍4 u Redis HA 方案6 u 操作流程步骤6 u 拓扑图演变7 v 开始模式7 v Master redis宕机后,新主启动8 v 原master redis恢复后8 u Redis_sentinel软件包说明9 v Redis_sentinel工具包9 u 实验环境9 u 启动镜像9 u 安装依赖包9 u 安装tcl10 u redis10 v

LVS部署测试

防伪码:没有相当程度的孤独是不可能有内心的平和. 1.概念 1.1 介绍 负载均衡技术有很多实现方案,如基于DNS域名轮流解析的方法.基于客户端调度访问的方法.基于应用层系统负载的调度方法,还有基于IP地址的调度方法,在这些负载调度算法中,执行效率最高的就是IP负载均衡技术. LVS的IP负载均衡技术是通过ipvs内核模块来实现的,ipvs是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个

Ubuntu Server 安装部署 Cacti 服务器监控

Ubuntu Server 安装部署 Cacti 服务器监控 form :http://www.cnblogs.com/xuri/p/3379337.html

SCVMM 2012 R2部署测试之五向SCVMM中添加Hyper-V主机

1. 创建运行方式账户 打开SCVMM管理控制台,点击设置-创建运行方式账户 填写账户名称,这里用vmmadmin来作为运行方式账户,点击确定. 注:使用运行方式账户时不得与安装vmm时的服务账户使用同一账户 2. 创建主机组 打开管理控制台,点击VM和服务,在所有主机右键菜单中选择创建主机组. 输入主机组名称'HY Server'. 3. 添加Hyper-V主机 在HY Server文件夹右键菜单选择添加Hyper-v主机和群集.(添加主机的操作也可以在'构造'中配置),打开'添加资源向导'.

SCVMM 2012 R2部署测试之六创建hyper-v故障转移群集

1. 确认磁盘挂载状态 确保两块数据磁盘是联机状态,在创建群集时SCVMM会自动将小磁盘设置为仲裁磁盘,大磁盘作为数据磁盘.仲裁磁盘大小建议不超过5G. 2. 创建hyper-v故障转移群集 打开SCVMM管理控制台,点击构造-创建,选择Hyper-V群集,启动创建群集向导. 在创建群集向导中输入群集名称'vcluster',选择使用现有运行方式账户,点击浏览选择刚刚创建的运行方式账户. 主机组选择HY Server,将hy01.hy02两台主机添加至要群集的主机中,下一步. 勾选网络,输入群集

部署点评Cat监控项目(转)

原文地址: 在项目中监控代码运行的状况,可以采用点评的Cat项目来监控整个项目,但是按照官方的文档来部署cat,总会遇到各种问题,讲解的也不够简明清楚,现在用一个单机来部署运行cat监控项目. 首先,到项目的git网页下载整个项目: https://github.com/dianping/cat 接着就是进入这个项目的目录,运行打包安装命令: mvn clean install -DskipTests  (需要maven) 执行完成后,运行 CAT 安装插件命令: mvn cat:install