Actuator与服务监控
在SpringCloud体系中,SpringCloud-Admin能够提供强大的服务监控功能。去年我也整理过SpringCloud-admin的相关文档。但对Actuator并不是很熟悉,之前只知道Actuator能够提供了很多restful接口供SpringCloud-admin去调用。然后进行展示。
因为微服务能够通过注册中心获取到服务的地址从而使得SpringCloud只需要对接到注册中心即可实现对服务的监控。但是考虑到有些系统目前处于另外一种状态。比如与微服务相比服务确实是将一个大系统拆分成了很多独立的子系统。而且子系统可以独立部署而且还可以集群部署。但是没有注册中心,也就是服务没有弹性。服务的容错性只能通过nginx等被动的方式进行。那么在这种形势下使用SpringCloud-admin就不行了。但是作为基础组件的Actuator确实可以用一下。但是肯定需要我们自定义开发了。当然服务端肯定需要与我们进行配合,然后导入Actuator相关的jar包。然后进行暴露。作为收集端和展示端我们需要采用定时任务的方式进行获取Actuator的服务信息。然后进行处理并存储,然后通过html页面进行对外展示。基本的思路是这样的。我本人的想法是做一个即可以兼容微服务又可以兼容普通项目的监控平台。这样对于运维和开发来说都有重要的意义。
项目中如何整合Actuator?
1.导入spring-boot-starter-actuator。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
在配置文件中填写 actuator相关暴露的接口信息。
# 监控端口为8081
management.server.port=8081
#不允许调用actuator提供的服务关机接口
management.endpoint.shutdown.enabled=false
# 设置端点是否可用 默认只有shutdown可用
management.endpoints.enabled-by-default=true
# 设置是否暴露端点 不让shutdown进行暴露供api调用
management.endpoints.web.exposure.exclude=shutdown
#将所有的监控接口对外暴露,注意这里的*不用带引号
management.endpoints.web.exposure.include=*
#监控容器额contentpath
management.server.servlet.context-path=/monitor
#监控地址的基础前缀
management.endpoints.web.base-path=/simple
设置好上边配置信息。就可以启动程序并查看暴露的接口了。
可以看到Actuator共扫描到了15个可以暴露的接口。
在postMan中测试一下所暴露的接口,通过这些接口我们可以进行定制化开发。然后制作自己的监控系统。
那么这些接口都提供哪些信息?要做好监控这些东西都是相当重要的。
在官网上我们发现
就目前来说,个人觉得metrics、health、info、configprops比较重要。所以后期整合的时候会先收集这些指标。
- Python基础10 反过头来看看
- CCCF 微软沈向洋:理解自然语言:表述、对话和意境
- Linux进程基础
- Android Studio导入项目非常慢的解决办法
- Android开发中遇到的requestFeature() must be called before adding content异常
- Linux信号基础
- 剑指OFFER之合并有序链表(九度OJ1519)
- Android Studio快捷键每日一练(6)
- Linux文本流
- Linux并发与同步
- Android Studio快捷键每日一练(5)
- 2017年移动行业五大发展趋势及2018年前景展望(下)
- 剑指OFFER之反转链表(九度OJ1518)
- Android Studio快捷键每日一练(4)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Day 7:斐波那契数列
- Day8 :跳台阶
- Linux Signal 一网打尽
- Day9 :变态跳台阶
- Day10 :矩形覆盖
- vue3.0新特性初体验(二)
- 数据结构算法操作试题(C++/Python)——有效的括号
- 数据结构算法操作试题(C++/Python)——合并两个有序链表
- Day11 :二进制中1的个数
- 数据结构算法操作试题(C++/Python)——括号生成
- 数据结构算法操作试题(C++/Python)——合并K个排序链表
- 数据结构算法操作试题(C++/Python)——删除排序数组中的重复项
- 数据结构算法操作试题(C++/Python)——k个一组翻转链表
- 数据结构算法操作试题(C++/Python)——移除元素
- 数据结构算法操作试题(C++/Python)——实现strStr()