prometheus介绍
springboot使用
- pom依赖
使用spring-actuator做埋点监控
- spring-actuator详细使用
- spring-actuator简单使用
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency>
- 配置Bean, 注册名为application的规则
@Bean MeterRegistryCustomizer<MeterRegistry> registryCustom(@Value("${spring.application.name}") String applicationName) { return registry -> registry.config().commonTags("application", applicationName); }
- 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
- 启动查看
全部指标
-
metrics指标
-
prometheus指标
- prometheus配置添加job
- job_name: 'springboot_prometheus' scrape_interval: 5s metrics_path: '/actuator/prometheus' static_configs: - targets: ['127.0.0.1:8080']
- 重启验证
查看targets是否含有上面定义springboot_prometheus的job
查询jvm指标
springCould使用
和springboot使用相同(步骤4变为eureka地址查看)
K8S使用
- .cf.yml配置
prometheus: true
- springboot项目打包成镜像
- 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
- deployment文件配置映射,截图为json格式的
执行步骤6查看targets, 进行指标查询
自定义指标暴露给prometheus
两种方式(代码侵入、切面)
- 代码注入
@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就会将数据展示出来
插件展示
选用jvm的监控模板【12856】
导入模板
调试,定义指标常量
配置下自定义的监控指标service_gateway_http_request
配置下自定义的监控指标service_gateway_json_cut
使用定义的常量过滤
namespace为grafana定义的常量
service_gateway_loadbalancer_total{kubernetes_namespace="$namespace"}