• 第三十六章 metrics(4)- metrics-graphite


    将metrics report给graphite(carbon-relay)

    一、代码

    1、pom.xml

    1         <!-- metrics-graphite -->
    2         <dependency>
    3             <groupId>io.dropwizard.metrics</groupId>
    4             <artifactId>metrics-graphite</artifactId>
    5         </dependency>

    依托于springboot1.3.0,版本号还是3.1.2

    2、controller

     1 package com.xxx.secondboot.web;
     2 
     3 import java.time.LocalDateTime;
     4 import java.util.LinkedList;
     5 import java.util.Queue;
     6 import java.util.concurrent.TimeUnit;
     7 
     8 import org.springframework.web.bind.annotation.RequestMapping;
     9 import org.springframework.web.bind.annotation.RequestMethod;
    10 import org.springframework.web.bind.annotation.RestController;
    11 
    12 import com.codahale.metrics.Gauge;
    13 import com.codahale.metrics.MetricFilter;
    14 import com.codahale.metrics.MetricRegistry;
    15 import com.codahale.metrics.graphite.Graphite;
    16 import com.codahale.metrics.graphite.GraphiteReporter;
    17 import com.xxx.secondboot.metrics.TestGraphiteReporter;
    18 
    19 import io.swagger.annotations.Api;
    20 
    21 @Api("测试metrics")
    22 @RestController
    23 @RequestMapping("/metrics")
    24 public class MetricsController {
    25     public static Queue<String> queue = new LinkedList<>();//队列
    26 
    27     @RequestMapping(value = "/test1", method = RequestMethod.GET)
    28     public String test1() {
    29         final MetricRegistry registry = new MetricRegistry();
    30         final Graphite graphite = new Graphite("10.0.0.1", 2013);//carbon-relay地址端口
    31         final GraphiteReporter reporter = GraphiteReporter.forRegistry(registry)
    32                                          .convertRatesTo(TimeUnit.SECONDS)
    33                                          .convertDurationsTo(TimeUnit.MILLISECONDS)
    34                                          .filter(MetricFilter.ALL)
    35                                          .prefixedWith("reporter.graphite")
    36                                          .build(graphite);
    37         reporter.start(1, TimeUnit.SECONDS);
    38 
    39         registry.register(MetricRegistry.name(TestGraphiteReporter.class, "queue", "size"), new Gauge<Integer>() {
    40             public Integer getValue() {
    41                 return queue.size();
    42             }
    43         });
    44 
    45         while (true) {
    46             try {
    47                 Thread.sleep(1000);
    48                 queue.add("job - " + LocalDateTime.now());
    49             } catch (InterruptedException e) {
    50                 e.printStackTrace();
    51             }
    52         }
    53     }
    54 }

    注意:

    这里的carbon-relay的ip写你真正要发给的relay,该relay的监听接口的IP最好设置为0.0.0.0(carbon.conf),用来监听所有连接它的服务器。这里采用了text协议(TCP协议),也可以使用pickle协议(批量发送--量是可配置的),还可以是UDP协议。

    final PickledGraphite graphitePickle = new PickledGraphite("10.0.40.63", 2013);//pickle协议
    final GraphiteUDP graphiteUDP = new GraphiteUDP("10.0.40.63", 2013);//UDP

    二、测试

    启动swagger进行测试,查看relay的listen日志。

    • 04/10/2016 14:21:37 :: MetricLineReceiver connection with ip:56769 established(调用controller方法的时候出现)
    • 04/10/2016 14:24:38 :: MetricLineReceiver connection with ip:56769 closed cleanly(停止该方法的时候出现)

    查看graphite-web中左侧的metric name有没有更新

    参考:http://metrics.dropwizard.io/3.1.0/manual/graphite/

  • 相关阅读:
    图解ArrayList源码
    HashMap相关
    1. 两数之和
    判定字符是否唯一
    反射相关
    自定义注解
    TreeMap相关
    判定是否互为字符重排
    2. 两数相加
    线程基础
  • 原文地址:https://www.cnblogs.com/java-zhao/p/5930476.html
Copyright © 2020-2023  润新知