当前位置: 首页 > news >正文

深圳建设网站上市网站页面设计主要包括

深圳建设网站上市,网站页面设计主要包括,装修案例,兰州市城乡建设局网站s104项目作者 | Richard_Yi责编 | 徐威龙稿源 | 掘金封图| CSDN 下载于视觉中国本文为作者个人经验#xff0c;供大家参考。去年我们项目做了微服务1.0的架构转型#xff0c;但是服务监控这块却没有跟上。这不#xff0c;最近我就被分配了要将我们核心的微服务应用全部监控起来的任务… 作者 | Richard_Yi 责编 | 徐威龙稿源 | 掘金封图| CSDN 下载于视觉中国本文为作者个人经验供大家参考。去年我们项目做了微服务1.0的架构转型但是服务监控这块却没有跟上。这不最近我就被分配了要将我们核心的微服务应用全部监控起来的任务。我们的微服务应用都是SpringBoot 应用因此就自然而然的想到了借助Spring Boot 的Actuator 模块。本篇是我在完成这个工单之后对Spring Boot Actuator模块 学习应用的总结。在本篇文章中你可以学习到1、Spring Boot Actuator 的快速使用入门2、Spring Boot Actuator 的一些重要的endpoints的介绍3、如何通过Actuator 模块实时查看当前应用的线程 dump信息4、如何通过Actuator 模块实时查看当前应用的堆信息5、如何通过Actuator 模块实时修改当前应用的日志打印等级6、...之后我还会介绍TODOSpringBoot 微服务应用集成Prometheus Grafana实现监控告警什么是 Spring Boot ActuatorSpring Boot Actuator 模块提供了生产级别的功能比如健康检查审计指标收集HTTP 跟踪等帮助我们监控和管理Spring Boot 应用、Bean加载情况、环境变量、日志信息、线程信息JVM 堆信息等 。这个模块是一个采集应用内部信息暴露给外部的模块上述的功能都可以通过HTTP 和 JMX 访问。因为暴露内部信息的特性Actuator 也可以和一些外部的应用监控系统整合Prometheus, Graphite, DataDog, Influx, Wavefront, New Relic等。这些监控系统提供了出色的仪表板图形分析和警报可帮助你通过一个统一友好的界面监视和管理你的应用程序。Actuator使用Micrometer与这些外部应用程序监视系统集成。这样一来只需很少的配置即可轻松集成外部的监控系统。Micrometer 为 Java 平台上的性能数据收集提供了一个通用的 API应用程序只需要使用 Micrometer 的通用 API 来收集性能指标即可。Micrometer 会负责完成与不同监控系统的适配工作。这就使得切换监控系统变得很容易。对比 Slf4j 之于 Java Logger 中的定位。快速开始创建一个Spring Boot Actuator Demo我们先创建一个demo应用。你可以通过Spring Boot CLI 创建spring init -dweb,actuator -nactuator-demo actuator-demo 或者通过Spring Initializr 创建对应的maven依赖dependencies... dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-actuator/artifactId /dependency... /dependencies 对应的Gradle 依赖dependencies {compile(org.springframework.boot:spring-boot-starter-actuator) } Endpoints 介绍Spring Boot 提供了所谓的 endpoints 下文翻译为端点给外部来与应用程序进行访问和交互。打比方来说 /health 端点 提供了关于应用健康情况的一些基础信息。metrics 端点提供了一些有用的应用程序指标JVM 内存使用、系统CPU使用等。这些 Actuator 模块本来就有的端点我们称之为原生端点。根据端点的作用的话我们大概可以分为三大类应用配置类获取应用程序中加载的应用配置、环境变量、自动化配置报告等与Spring Boot应用密切相关的配置类信息。度量指标类获取应用程序运行过程中用于监控的度量指标比如内存信息、线程池信息、HTTP请求统计等。操作控制类提供了对应用的关闭等操作类功能。详细的原生端点介绍请以官网为准这里就不赘述徒增篇幅。需要注意的就是1、每一个端点都可以通过配置来单独禁用或者启动2、不同于Actuator 1.xActuator 2.x 的大多数端点默认被禁掉。Actuator 2.x 中的默认端点增加了 /actuator前缀。默认暴露的两个端点为 /actuator/health和 /actuator/info端点暴露配置我们可以通过以下配置来配置通过JMX 和 HTTP 暴露的端点。PropertyDefaultmanagement.endpoints.jmx.exposure.excludemanagement.endpoints.jmx.exposure.include*management.endpoints.web.exposure.excludemanagement.endpoints.web.exposure.includeinfo,healt可以打开所有的监控点management.endpoints.web.exposure.include* 也可以选择打开部分* 代表暴露所有的端点如果指定多个端点用,分开management.endpoints.web.exposure.excludebeans,trace Actuator 默认所有的监控点路径都在 /actuator/*当然如果有需要这个路径也支持定制。management.endpoints.web.base-path/minitor 设置完重启后再次访问地址就会变成 /minitor/*。现在我们按照如下配置# * 代表暴露所有的端点 如果指定多个端点用,分开 management.endpoints.web.exposure.include* # 赋值规则同上 management.endpoints.web.exposure.exclude 启动DEMO程序访问 http://localhost:8080/actuator查看暴露出来的端点上面这样显示是因为chrome 浏览器安装了 JSON-handle 插件实际上就是返回一大段json下面我会着重介绍几个比较重要的端点。重要端点解析5.1 /health端点/health端点会聚合你程序的健康指标来检查程序的健康情况。端点公开的应用健康信息取决于management.endpoint.health.show-detailsalways 该属性可以使用以下值之一进行配置NameDescriptionnever不展示详细信息up或者down的状态默认配置when-authorized详细信息将会展示给通过认证的用户。授权的角色可以通过 management.endpoint.health.roles配置always对所有用户暴露详细信息按照上述配置配置成 always之后我们启动项目访问 http://localhost:8080/actuator/health端口可以看到这样的信息是不是感觉好像健康信息有点少先别急那是因为我们创建的是一个最基础的Demo项目没有依赖很多的组件。/health端点有很多自动配置的健康指示器如redis、rabbitmq、db等组件。当你的项目有依赖对应组件的时候这些健康指示器就会被自动装配继而采集对应的信息。如上面的 diskSpace 节点信息就是 DiskSpaceHealthIndicator 在起作用。上述截图取自官方文档这是我另一个项目的 /health端点信息。当如上的组件有一个状态异常应用服务的整体状态即为down。我们也可以通过配置禁用某个组件的健康监测。management.health.mongo.enabled: false 或者禁用所有自动配置的健康指示器management.health.defaults.enabled: false ⭐自定义 Health Indicator当然你也可以自定义一个Health Indicator只需要实现 HealthIndicator 接口或者继承 AbstractHealthIndicator类。/*** author Richard_yyf* version 1.0 2020/1/16*/ Component publicclassCustomHealthIndicatorextendsAbstractHealthIndicator{ Override protectedvoid doHealthCheck(Health.Builder builder) throwsException{ // 使用 builder 来创建健康状态信息 // 如果你throw 了一个 exception那么status 就会被置为DOWN异常信息会被记录下来builder.up() .withDetail(app, 这个项目很健康) .withDetail(error, Nothing, Im very good); } } 最终效果5.2 /metrics端点/metrics端点用来返回当前应用的各类重要度量指标比如内存信息、线程信息、垃圾回收信息、tomcat、数据库连接池等。{ names: [ tomcat.threads.busy, jvm.threads.states, jdbc.connections.active, jvm.gc.memory.promoted, http.server.requests, hikaricp.connections.max, hikaricp.connections.min, jvm.memory.used, jvm.gc.max.data.size, jdbc.connections.max, .... ] } 不同于1.xActuator在这个界面看不到具体的指标信息只是展示了一个指标列表。为了获取到某个指标的详细信息我们可以请求具体的指标信息像这样http://localhost:8080/actuator/metrics/{MetricName} 比如我访问 /actuator/metrics/jvm.memory.max返回信息如下你也可以用query param的方式查看单独的一块区域。比如你可以访问 /actuator/metrics/jvm.memory.max?tagid:Metaspace。结果就是5.3 /loggers端点/loggers 端点暴露了我们程序内部配置的所有logger的信息。我们访问 /actuator/loggers可以看到你也可以通过下述方式访问单独一个loggerhttp://localhost:8080/actuator/loggers/{name} 比如我现在访问 root logger http://localhost:8080/actuator/loggers/root{ configuredLevel: INFO, effectiveLevel: INFO } ⭐改变运行时的日志等级/loggers端点我最想提的就是这个功能能够动态修改你的日志等级。比如我们可以通过下述方式来修改 root logger的日志等级。我们只需要发起一个URL 为 http://localhost:8080/actuator/loggers/root的 POST请求POST报文如下{ configuredLevel: DEBUG } 仔细想想这个功能是不是非常有用。如果在生产环境中你想要你的应用输出一些Debug信息以便于你诊断一些异常情况你你只需要按照上述方式就可以修改而不需要重启应用。如果想重置成默认值把value 改成 null5.4 /info端点/info端点可以用来展示你程序的信息。我理解过来就是一些程序的基础信息。并且你可以按照自己的需求在配置文件 application.properties中个性化配置默认情况下该端点只会返回一个空的json内容。info.app.nameactuator-test-demo info.app.encodingUTF-8 info.app.java.source1.8 info.app.java.target1.8 # 在 maven 项目中你可以直接用下列方式引用 maven properties的值 # info.app.encodingproject.build.sourceEncoding # info.app.java.sourcejava.version # info.app.java.targetjava.version 启动项目访问 http://localhost:8080/actuator/info{ app: { encoding: UTF-8, java: { source: 1.8.0_131, target: 1.8.0_131 }, name: actuator-test-demo } } 5.5 /beans端点/beans端点会返回Spring 容器中所有bean的别名、类型、是否单例、依赖等信息。访问 http://localhost:8080/actuator/beans返回如下5.6 /heapdump 端点访问http://localhost:8080/actuator/heapdump会自动生成一个 Jvm 的堆文件 heapdump。我们可以使用 JDK 自带的 Jvm 监控工具 VisualVM 打开此文件查看内存快照。5.7 /threaddump 端点这个端点我个人觉得特别有用方便我们在日常定位问题的时候查看线程的情况。主要展示了线程名、线程ID、线程的状态、是否等待锁资源、线程堆栈等信息。就是可能查看起来不太直观。访问 http://localhost:8080/actuator/threaddump返回如下5.8 /shutdown端点这个端点属于操作控制类端点可以优雅关闭 Spring Boot 应用。要使用这个功能首先需要在配置文件中开启management.endpoint.shutdown.enabledtrue 由于 shutdown 接口默认只支持 POST 请求我们启动Demo项目向 http://localhost:8080/actuator/shutdown发起 POST请求。返回信息{ message: Shutting down, bye... } 然后应用程序被关闭。由于开放关闭应用的操作本身是一件非常危险的事所以真正在线上使用的时候我们需要对其加入一定的保护机制比如定制Actuator的端点路径、整合Spring Security进行安全校验等。不是特别必要的话这个端点不用开整合Spring Security 对端点进行安全校验由于端点的信息和产生的交互都是非常敏感的必须防止未经授权的外部访问。如果您的应用程序中存在Spring Security的依赖则默认情况下使用基于表单的HTTP身份验证来保护端点。如果没有只需要增加对应的依赖即可dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-security/artifactId /dependency 添加之后我们需要定义安全校验规则来覆盖Spring Security 的默认配置。这里我给出了两个版本的模板配置import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest; import org.springframework.boot.actuate.context.ShutdownEndpoint; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; /*** author Richard_yyf*/ Configuration publicclassActuatorSecurityConfigextendsWebSecurityConfigurerAdapter{ /** version1:* 1. 限制 /shutdown端点的访问只允许ACTUATOR_ADMIN访问* 2. 允许外部访问其他的端点* 3. 允许外部访问静态资源* 4. 允许外部访问 /* 5. 其他的访问需要被校验* version2:* 1. 限制所有端点的访问只允许ACTUATOR_ADMIN访问* 2. 允许外部访问静态资源* 3. 允许外部访问 /* 4. 其他的访问需要被校验*/ Override protectedvoid configure(HttpSecurity http) throwsException{ // version1 // http // .authorizeRequests() // .requestMatchers(EndpointRequest.to(ShutdownEndpoint.class)) // .hasRole(ACTUATOR_ADMIN) // .requestMatchers(EndpointRequest.toAnyEndpoint()) // .permitAll() // .requestMatchers(PathRequest.toStaticResources().atCommonLocations()) // .permitAll() // .antMatchers(/) // .permitAll() // .antMatchers(/**) // .authenticated() // .and() // .httpBasic(); // version2http .authorizeRequests() .requestMatchers(EndpointRequest.toAnyEndpoint()) .hasRole(ACTUATOR_ADMIN) .requestMatchers(PathRequest.toStaticResources().atCommonLocations()) .permitAll() .antMatchers(/) .permitAll() .antMatchers(/**) .authenticated() .and() .httpBasic(); } } application.properties的相关配置如下# Spring Security Default user name and password spring.security.user.nameactuator spring.security.user.passwordactuator spring.security.user.rolesACTUATOR_ADMIN 原文链接https://juejin.im/post/5e2179def265da3e152d2561推荐阅读从零单排HBase 02全面认识HBase架构建议收藏 11 国股市熔断“祸及”程序员 云原生就一定安全吗 和黑客斗争的 6 天 用 3 个“鸽子”告诉你闪电网络是怎样改变加密消息传递方式的 想成为一个数据科学家却不知道从何下手这份路线图带你打开数据科学大门 真香朕在看了
http://www.yutouwan.com/news/332946/

相关文章:

  • 网站备案注销原因打广告专用配图
  • 建设部网站监理公告视觉设计包括哪些
  • 佛山网站建设兼职定制和订制有什么区别
  • 专业 旅游网站建设如何对网站做渗透
  • 网站怎么做快捷方式网店推广的作用是什么
  • 常德网站开发合肥网站建设5k5
  • 自己如何建设校园网站公司推广策划方案
  • 网站设计师的岗位职责在线制作结婚证
  • 网站建设免费加盟代理分类信息网站模板
  • 襄阳门户网站建设佛山市网站建设公司
  • 简单写文章的网站房地产开发公司名字大全
  • 深圳专业网站建设免费送域名空间企业网站优化17
  • wordpress 游戏网站店铺装修设计网
  • 源码怎样做网站招标代理公司
  • 网站登录页模板html网页设计代码范例
  • 徐州本地网站自己怎么做跨境电商
  • 北京移动官网网站建设怎么建设游网站主页
  • 建个什么网站各大门户网站怎么做推广
  • discuz做资讯网站seo优化招聘
  • 文化馆网站数字化建设介绍阜宁建设网站的公司
  • 长春火车站防疫要求好的策划方案网站
  • 网站建设与维护是什么内容?登录qq网页版
  • 平面毕业设计作品网站网站建设移动端
  • 哪个企业提供电子商务网站建设外包流量查询中国移动官方网站
  • 广州化妆品网站设计南阳公司注册
  • 做网站初中上海汽车设计公司名单
  • 简单做网站的价格wordpress同ip弹一次广告
  • 装修网站怎么做的好处上海工信部网站备案
  • 如何再网站上做免费广告词开发公司交房前期的各项准备工作
  • 徐州专业网站seo外贸网站怎么做外链