1.说明
平台是基于微服务架构部署,因此微应用比较多,这么多的应用如果没有一个监控系统的话,我们就无法了解系统的运行情况,包括主机的cpu繁忙程度,内存情况等等。对于我们完全处在黑盒当中,因此需要在平台中增加监控,方便我们运维。我们可以使用 普罗米修斯来帮助我们来实现监控需求。下面就介绍下具体的实现步骤。
2. 实现步骤
2.1 修改程序
在pom.xml 中增加一下依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
2.2 打开监控端点
在程序的 application.yml 增加:
management:
endpoints:
web:
exposure:
include: '*'
metrics:
tags:
application: ${spring.application.name}
2.3 在 启动程序中增加
@Bean
MeterRegistryCustomizer<MeterRegistry> configurer(
@Value("${spring.application.name}") String applicationName) {
return (registry) -> registry.config().commonTags("application", applicationName);
}
2.4 暴露监控端点
普罗修斯实际是去主动抓取应用的状态,因此我们需要对 外暴露 程序的监控端点,让普罗米修斯直接获取应用的信息。
修改如下文件:
ClientWebsecurityConfigurer.java
@Override
public void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/login", "/user/**","/restApi/**",
"/actuator/**",
"/global/**","/druid/**", "/v2/api-docs/**").permitAll()
.anyRequest().authenticated()
.withObjectPostProcessor(urlObjectPostProcessor());
// 不加会导致退出 不支持GET方式
http.csrf().disable();
}
增加 "/actuator/**"
,允许直接访问。
做好以上配置后 ,我们重启应用,访问一下地址:
http://localhost:7000/actuator/prometheus
如果出现以下界面说明我们的程序端修改就完成了。
2. 配置普罗米修斯
2.1 下载
https://prometheus.io/download/
下载合适的版本
windows 可以下载这个版本。
2.2 增加监控
我们需要修改这个文件(prometheus.yml):
比如我增加用户微服务的监控:
- job_name: 'jpaas-user'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['127.0.0.1:7000']
- job_name: 'jpaas-bpm'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['127.0.0.1:7301']
- job_name: 'jpaas-auth'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['127.0.0.1:8009']
- job_name: 'jpaas-gateway'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['127.0.0.1:9900']
- job_name: 'jpaas-portal'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['127.0.0.1:7100']
- job_name: 'jpaas-system'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['127.0.0.1:7009']
- job_name: 'jpaas-form'
scrape_interval: 5s
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['127.0.0.1:7200']
参数 | 备注 |
---|---|
job_name | 这个是任务名称,可以随意,不过和 微服务名称相同比较好 |
scrape_interval | 抓取时间间隔 |
metrics_path | 抓取路径,这个路径是固定上面的 |
targets | 表示需要抓取的服务地址,这里可以配置多个 |
我们可以对微服务都加上这个监控。
2.3 启动监控服务
.\prometheus.exe --config.file=prometheus.yml --web.enable-lifecycle
普罗米修斯的默认访问地址为:
访问微服务应用,然后打开普罗米修斯程序界面。
输入 :http_server_requests_seconds_count
可以统计到访问的情况。
3 使用Grafana对程序进行监控
prometheus 是一个监控系统,Grafana 是一个基于 prometheus 的监控大屏系统。他可以形成各种图标。
3.1 下载并启动
https://grafana.com/get/?plcmt=top-nav&cta=downloads
3.1.1 windows 版本
我们只需要简单的启动就好了。
直接运行 grafana-server.exe。
使用 http://localhost:3000 进行访问,用户名密码为 admin/admin
3.1.2 linux 版本
比如centos 版本
grafana-7.3.7-1.x86_64.rpm
安装yum install grafana-7.3.7-1.x86_64.rpm
查看grafana 状态systemctl status grafana-server
启动 grafana 服务systemctl start grafana-server
3.2 加载数据源
Grafana 是一个大屏系统,他需要使用数据源对数据进行展示。对于grafana 来说,普罗米修斯就是一个数据源,因此我们要做监控,首先得导入数据源。
添加数据源
选择 普罗米修斯
3.3 对微服务进行监控
我们要使用大屏对某一类的数据进行监控,比如微服务,微服务有很多的指标,这些对于不熟悉的人来说是很大的挑战。好在 grafana提供了很多模板,让我们很方便的导入这些模板,就可以完成对我们需要监控的数据,进行展示。
3.3.1 加载springboot大屏模板
- 导入via grafana.com
下面这个地址就是springboot 的监控模板。https://grafana.com/grafana/dashboards/10280
3.3.2 加载数据连接池监控
这个数据库连接池监控我们导出成了一个JSON文件,我们可以通过导入这个文件来对数据源进行监控。
点击导入按钮。
点击 import 按钮。
这样我们可以对微服务的每一个数据源都进行监控。