Prometheus整合springCloud及自定义监控指标

prometheus介绍

  • 中文文档https://prometheus.fuckcloudnative.io/
  • 官网及文档https://prometheus.io/docs/introduction/overview/
  • 架构图

Prometheus整合springCloud及自定义监控指标_第1张图片

springboot使用

  1. pom依赖

使用spring-actuator做埋点监控

  • spring-actuator详细使用
  • spring-actuator简单使用
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-actuatorartifactId>
    dependency>
    <dependency>
        <groupId>io.micrometergroupId>
        <artifactId>micrometer-registry-prometheusartifactId>
    dependency>
    
  1. 配置Bean, 注册名为application的规则
    @Bean
    MeterRegistryCustomizer<MeterRegistry> registryCustom(@Value("${spring.application.name}") String applicationName) {
        return registry -> registry.config().commonTags("application", applicationName);
    }
    
  2. appliction.yml配置
    management:
      endpoints:
        web:  #开启web监控端点
          exposure:
            include: '*'
        enabled-by-default: true  #自定义端点的启用和关闭
      server:
        servlet:
          context-path: /monitor #自定义监控路径
        port: 28088  #自定义监控端口号
      metrics:
        tags:
          application: ${spring.application.name}  #对外暴露tag
    
  3. 启动查看
    全部指标
    Prometheus整合springCloud及自定义监控指标_第2张图片
  • metrics指标
    Prometheus整合springCloud及自定义监控指标_第3张图片

  • prometheus指标
    Prometheus整合springCloud及自定义监控指标_第4张图片

  1. prometheus配置添加job
     - job_name: 'springboot_prometheus'
        scrape_interval: 5s
        metrics_path: '/actuator/prometheus'
        static_configs:
          - targets: ['127.0.0.1:8080']
    
  2. 重启验证
    Prometheus整合springCloud及自定义监控指标_第5张图片

查看targets是否含有上面定义springboot_prometheus的job

查询jvm指标
Prometheus整合springCloud及自定义监控指标_第6张图片

springCould使用

和springboot使用相同(步骤4变为eureka地址查看)
Prometheus整合springCloud及自定义监控指标_第7张图片

K8S使用

  1. .cf.yml配置
    prometheus: true
    
  2. springboot项目打包成镜像
  3. prometheus配置(选配需要哪个配那个,具体配置戳这)
    - job_name: kubernetes-apiservers
    - job_name: kubernetes-nodes
    - job_name: kubernetes-cadvisor
    - job_name: kubernetes-service-endpoints
    - job_name: kubernetes-services
    - job_name: kubernetes-ingresses
    - job_name: kubernetes-pods
    
  4. deployment文件配置映射,截图为json格式的
    Prometheus整合springCloud及自定义监控指标_第8张图片
    执行步骤6查看targets, 进行指标查询

自定义指标暴露给prometheus

  1. 指标类型戳这了解
    • Counter代码示例
    • Gauge代码示例
    • Histogram代码示例
    • Summary代码示例

两种方式(代码侵入、切面)

  • 代码注入
    @Autowired
    private MeterRegistry registry;
    
    public String addOrder(){
    	//指标1
        Counter.builder("service_gateway_http_request")
                .tag("method", method)
                .tag("appId", appId)
                .register(registry)
                .increment();
        StopWatch sh = new StopWatch();
        sh.start();
        //your code
        sh.stop();
        //指标2
        DistributionSummary.builder("service_gateway_json_cut").register(registryCustom)
                        .record(sh.getTotalTimeMillis());
              
        return null;
    }
    
  • 切面,自行度Google
    戳这 参考

整合Grafana

上面几个例子都可以用指标查看各种数据了,接下来grafana就会将数据展示出来

  • 官网https://grafana.com/grafana/dashboards?utm_source=grafana_search

插件展示

Prometheus整合springCloud及自定义监控指标_第9张图片

选用jvm的监控模板【12856】

Prometheus整合springCloud及自定义监控指标_第10张图片

导入模板

Prometheus整合springCloud及自定义监控指标_第11张图片

调试,定义指标常量

Prometheus整合springCloud及自定义监控指标_第12张图片

配置下自定义的监控指标service_gateway_http_request

Prometheus整合springCloud及自定义监控指标_第13张图片
配置下自定义的监控指标service_gateway_json_cut
Prometheus整合springCloud及自定义监控指标_第14张图片
使用定义的常量过滤

namespace为grafana定义的常量
service_gateway_loadbalancer_total{kubernetes_namespace="$namespace"}

你可能感兴趣的:(链路监控日志,java,spring,spring,boot,运维,后端)