• Spring Cloud 之 Prometheus+Grafana实现监控微服务(二十一)


    Prometheus是什么

    Prometheus是一套开源的系统监控和报警框架,灵感源自Google的Borgmon监控系统。2012年,SoundCloud的Google前员工创造了Prometheus,并作为社区开源项目进行开发。2015年,该项目正式发布。2016年,Prometheus加入云原生计算基金会,成为受欢迎度仅次于Kubernetes的项目。

    Prometheus具有以下特性:

    • 多维的数据模型(基于时间序列的Key、Value键值对)
    • 灵活的查询和聚合语言PromQL
    • 提供本地存储和分布式存储
    • 通过基于HTTP的Pull模型采集时间序列数据
    • 可利用Pushgateway(Prometheus的可选中间件)实现Push模式
    • 可通过动态服务发现或静态配置发现目标机器
    • 支持多种图表和数据大盘

    Prometheus官网:https://prometheus.io/

    Grafana是什么

    Grafana是开源的、炫酷的可视化监控、分析利器,无论您的数据在哪里,或者它所处的数据库是什么类型,您都可以将它与Grafana精美地结合在一起。它还有丰富的套件供您选择,目前,它已拥有54个数据源,50个面板,17个应用程序和1732个仪表盘。如此强大的服务我们如何利用呢,下面我们一步一步带你们走近Grafana,一起感受它强大的魅力。

    下载及安装


    1、prometheus下载地址:https://prometheus.io/download,我下载的是windows版本

    2、grafana下载地址:https://grafana.com/grafana/download,同样下载windows版本

     

    3、prometheus安装

    prometheus下载后解压,进入解压目录运行prometheus.exe启动

    4、prometheus验证

    启动后,在浏览器中访问http://localhost:9090/classic/targets,可以正常访问如下页面说明启动成功

     

    5、grafana安装

    grafana下载后解压,进入解压目录运行grafana-server.exe启动

     6、grafana验证

    启动后在浏览器中访问:http://localhost:3000/,用户名密码默认都是admin。如下图

      

    7、grafana datasouce配置

    7.1 点击左侧设置-->Data Sources

     7.2 进入到Data Sources配置页面

     7.3 点击add data souce按钮,进入添加监控数据源配置页面,数据源类型选择Prometheus(因为grafana UI的数据来源于Prometheus)

     

     7.4 如下图,URL填写Prometheus地址:http://localhost:9090/

     7.5 填写URL后,点击页面最下方的save & Test按钮。

     7.6 点击左侧import按钮

     7.7 在输入框中填写12856,然后点击load。12856是Grafana模板ID,更多模板请参考:https://grafana.com/grafana/dashboards

    7.8 进入DashBoard,就可以查看JVM监控大盘了。当然我们还需对SpringBoot做一些改造才能看到这些监控数据,请继续往下看......

    8、SpringBoot应用改造

    若要看到上面的监控大盘,我们还需要对prometheus.yml和x-demo-springcloud-order-service应用做一些改造。

    8.1 修改x-demo-springcloud-order-service的build.gradle文件

    增加micrometer-registry-prometheus依赖

    dependencies {
        compile("org.springframework.cloud:spring-cloud-starter-netflix-eureka-client")
        compile("org.springframework.cloud:spring-cloud-starter-zipkin")
        compile("org.springframework.cloud:spring-cloud-starter-netflix-ribbon")
        compile("org.springframework.cloud:spring-cloud-stream-binder-rabbit")
        compile("io.micrometer:micrometer-registry-prometheus")
    }

    8.2 修改bootstrap.yml配置文件,增加metrics配置

    这里 management.endpoints.web.exposure.include=* 配置为开启 Actuator 服务,因为Spring Boot Actuator 会自动配置一个 URL 为 /actuator/Prometheus 的 HTTP 服务来供 Prometheus 抓取数据,不过默认该服务是关闭的,该配置将打开所有的 Actuator 服务。management.metrics.tags.application 配置会将该工程应用名称添加到Grafana UI,方便后边根据应用名称来区分不同的服务。

    management:
      endpoints:
        web:
          exposure:
            include: '*'
      endpoint:
        health:
          show-details: ALWAYS
      metrics:
        tags:
          application: ${spring.application.name}

    8.3 修改启动类

    /**
     * @author Leo
     */
    @SpringBootApplication
    @EnableEurekaClient
    @RestController
    public class OrderServerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(OrderServerApplication.class, args);
        }
    
        @Bean
        MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) {
            return registry -> registry.config().commonTags("application", applicationName);
        }
    
        @RequestMapping(value = "makeOrder", method = RequestMethod.GET)
        public String makeOrder() {
            return "下单成功";
        }
    }

    8.4 修改prometheus.yml配置文件

    原有的配置不用修改,增加x-demo-springcloud-order-service应用配置,然后重启prometheus和x-demo-springcloud-order-service,就OK。

    到此。所有配置已完成。

    PS:源码已上传Github, 欢迎指教。https://github.com/shileishmily/spring-cloud-x.git

  • 相关阅读:
    Laravel学习之旅(一)
    telnet模拟邮件发送
    学习CodeIgniter框架之旅(二)继承自定义类
    学习CodeIgniter框架之旅(一)自定义模板目录
    MySQL主从复制实现
    coreseek增量索引
    锁(MySQL篇)—之MyISAM表锁

    php文件锁
    进程与线程
  • 原文地址:https://www.cnblogs.com/shileibrave/p/14543940.html
Copyright © 2020-2023  润新知