栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 前沿技术 > 物联网 > 嵌入式开发

通过Spring Boot成为DevOps

通过Spring Boot成为DevOps

您是否曾经遇到过要完成一个项目的情况,并且打算将其交付给Ops团队。 您很高兴,因为这一次,您涵盖了所有基础:文档包含应用程序将使用的JNDI数据源名称,所有与环境有关的参数都已在属性文件中外部化并进行了记录,甚至确保日志记录具有已在代码中的关键点实现。 不幸的是,Ops拒绝您的交付,因为他们不知道如何监视新应用程序。 而且您错过了...肯定可以破解一些东西来满足此要求,但是该项目已经超预算了。 在某些(大多数?)公司中,这意味着必须责怪某人,并且开发商有可能承担所有负担。 时间一些不眠之夜。

Spring Boot是Spring的产品,为表带来了许多现成的功能。 约定优于配置,内存中默认数据源和嵌入式Tomcat是大多数已知功能的一部分。 但是,我认为有一个隐藏的宝石应该被更多地宣传。 执行器模块实际上提供了现成的指标和运行状况检查,以及一种添加自己的简便方法。 在本文中,我们将看到如何从HTTP访问那些度量并将其发送到JMX和Graphite。

作为示例应用程序,让我们使用由Boot创建的Spring Pet Clinic的更新 -感谢Arnaldo Piccinelli的工作。 起始点是提交790e5d0 。 现在,让我们立即添加一些指标。

第一步是在Maven POM中添加执行器模块启动器,然后让Boot发挥作用:


     org.springframework.boot 
     spring-boot-starter-actuator 

此时,我们可以使用mvn spring-boot:run Spring Pet Clinic,并导航至http:// localhost:8090 / metrics (请注意,该路径受Spring Security保护,凭据为user / password )以查看内容如下所示:

{
  "mem" : 562688,
  "mem.free" : 328492,
  "processors" : 8,
  "uptime" : 26897,
  "instance.uptime" : 18974,
  "heap.committed" : 562688,
  "heap.init" : 131072,
  "heap.used" : 234195,
  "heap" : 1864192,
  "threads.peak" : 20,
  "threads.daemon" : 17,
  "threads" : 19,
  "classes" : 9440,
  "classes.loaded" : 9443,
  "classes.unloaded" : 3,
  "gc.ps_scavenge.count" : 16,
  "gc.ps_scavenge.time" : 104,
  "gc.ps_marksweep.count" : 2,
  "gc.ps_marksweep.time" : 152
}

可以看出,Boot无需进一步配置即可提供与硬件和Java相关的指标。 更好的是,如果浏览应用程序(例如反复刷新根目录),则会出现新的指标:

{
  "counter.status.200.metrics" : 1,
  "counter.status.200.root" : 2,
  "counter.status.304.star-star" : 4,
  "counter.status.304.webjars.star-star" : 1,
  "gauge.response.metrics" : 72.0,
  "gauge.response.root" : 16.0,
  "gauge.response.star-star" : 8.0,
  "gauge.response.webjars.star-star" : 11.0,
  ...
}

这些指标实际上更具功能性,它们分为两个单独的组:

  • 量规是最简单的指标,并返回一个数字值, 例如 gauge.response.root是/metrics路径上次响应的时间(以毫秒为单位)
  • 计数器是可以递增/递减的指标, 例如 counter.status.200.metrics是/metrics路径返回HTTP 200代码的次数

此时,您的Ops团队可能会抓取返回的JSON并从中获取内容。 他们有责任定期轮询URL并以他们想要的方式使用数字。 但是,只需稍加努力,我们就可以通过将这些指标放入JMX来简化心爱的Ops团队的生活。

Spring Boot可以轻松地与Dropwizard指标集成。 通过将以下依赖项添加到POM,Boot可以为所有度量标准提供MetricRegistry ,Dropwizard注册表:


     io.dropwizard.metrics 
     metrics-core 
     4.0.0-SNAPSHOT 

使用提供的注册表,除了HTTP端点外,还可以将指标发送到JMX。 我们只需要一个简单的配置类以及一些API调用:

@Configuration
publicclassMonitoringConfig{

    @Autowired
    privateMetricRegistryregistry;

    @Bean
    publicJmxReporterjmxReporter(){
        JmxReporterreporter=JmxReporter.forRegistry(registry).build();
        reporter.start();
        returnreporter;
    }
}

启动jconsole让我们检查它是否正常:

现在,Ops团队只需从JMX获取指标,并将其推入其首选的图形显示工具(如Graphite)中 。 实现此目标的一种方法是通过jmx-trans 。 但是,也可以仅通过几个不同的API调用将指标直接发送到Graphite服务器:

@Configuration
publicclassMonitoringConfig{

    @Autowired
    privateMetricRegistryregistry;

    @Bean
    publicGraphiteReportergraphiteReporter(){
        Graphitegraphite=newGraphite(newInetSocketAddress("localhost",2003));
        GraphiteReporterreporter=GraphiteReporter.forRegistry(registry)
                                                    .prefixedWith("boot").build(graphite);
        reporter.start(500,TimeUnit.MILLISECONDS);
        returnreporter;
    }
}

鉴于几行代码,结果非常有趣:

请注意,使用JMX路由转到Graphite会使事情变得更容易,因为在开发环境中不需要专用的Graphite服务器。

翻译自: https://blog.frankel.ch/become-a-devops-with-spring-boot/

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/852673.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号