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://localhost:9090/

访问微服务应用,然后打开普罗米修斯程序界面。

输入 :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 按钮。

这样我们可以对微服务的每一个数据源都进行监控。

文档更新时间: 2021-08-28 12:18   作者:zyg